[lldb] Fix "exact match" debug_names type queries (#118465)
[llvm-project.git] / flang / test / Semantics / associate01.f90
blobdeafea695e84f241fe5dd7a344506cd42f5dfd9a
1 ! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
2 ! Tests of selectors whose defining expressions are pointer-valued functions;
3 ! they must be valid targets, but not pointers.
4 ! (F'2018 11.1.3.3 p1) "The associating entity does not have the ALLOCATABLE or
5 ! POINTER attributes; it has the TARGET attribute if and only if the selector
6 ! is a variable and has either the TARGET or POINTER attribute."
7 module m1
8 type t
9 contains
10 procedure, nopass :: iptr
11 end type
12 contains
13 function iptr(n)
14 integer, intent(in), target :: n
15 integer, pointer :: iptr
16 !WARNING: Pointer target is not a definable variable
17 !BECAUSE: 'n' is an INTENT(IN) dummy argument
18 iptr => n
19 end function
20 subroutine test
21 type(t) tv
22 integer, target :: itarget
23 integer, pointer :: ip
24 associate (sel => iptr(itarget))
25 ip => sel
26 !ERROR: POINTER= argument of ASSOCIATED() must be a pointer
27 if (.not. associated(sel)) stop
28 end associate
29 associate (sel => tv%iptr(itarget))
30 ip => sel
31 !ERROR: POINTER= argument of ASSOCIATED() must be a pointer
32 if (.not. associated(sel)) stop
33 end associate
34 associate (sel => (iptr(itarget)))
35 !ERROR: In assignment to object pointer 'ip', the target 'sel' is not an object with POINTER or TARGET attributes
36 ip => sel
37 !ERROR: POINTER= argument of ASSOCIATED() must be a pointer
38 if (.not. associated(sel)) stop
39 end associate
40 associate (sel => 0 + iptr(itarget))
41 !ERROR: In assignment to object pointer 'ip', the target 'sel' is not an object with POINTER or TARGET attributes
42 ip => sel
43 !ERROR: POINTER= argument of ASSOCIATED() must be a pointer
44 if (.not. associated(sel)) stop
45 end associate
46 end subroutine
47 end module