blob: 48f2976ed5a8ec22feb7cf801ed7ae639ad4d666 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
! RUN: %python %S/test_errors.py %s %flang_fc1
! "Same type" checking for intrinsic assignment
module m1
type :: nonSeqType
integer :: n1
end type
type :: seqType
sequence
integer :: n2
end type
type, bind(c) :: bindCType
integer :: n3
end type
end module
program test
use m1, modNonSeqType => nonSeqType, modSeqType => seqType, modBindCType => bindCType
type :: nonSeqType
integer :: n1
end type
type :: seqType
sequence
integer :: n2
end type
type, bind(c) :: bindCType
integer :: n3
end type
type(modNonSeqType) :: mns1, mns2
type(modSeqType) :: ms1, ms2
type(modBindCType) :: mb1, mb2
type(nonSeqType) :: ns1, ns2
type(seqType) :: s1, s2
type(bindCType) :: b1, b2
! These are trivially ok
mns1 = mns2
ms1 = ms2
mb1 = mb2
ns1 = ns2
s1 = s2
b1 = b2
! These are ok per 7.5.2.4
ms1 = s1
mb1 = b1
!ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(modnonseqtype) and TYPE(nonseqtype)
mns1 = ns1
!ERROR: No intrinsic or user-defined ASSIGNMENT(=) matches operand types TYPE(nonseqtype) and TYPE(modnonseqtype)
ns1 = mns1
end
|