f75033a058
Fortran defines derived type definitions and explicit interface blocks for subroutines and functions to be nestable scopes for statement labels, even though such labels are useless for all purposes. Handle these scopes in label resolution so that bogus errors about conflicting labels in "real" code don't come out. Note that BLOCK constructs could have also been defined as scopes for statement labeling, but were not. Differential Revision: https://reviews.llvm.org/D132679
39 lines
706 B
Fortran
39 lines
706 B
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1
|
|
1 program main
|
|
1 type one
|
|
2 real x
|
|
3 end type one
|
|
1 type two
|
|
2 real x
|
|
!ERROR: Label '2' is not distinct
|
|
2 real y
|
|
3 end type two
|
|
2 interface
|
|
2 subroutine sub1(p, q)
|
|
3 interface
|
|
3 subroutine p
|
|
4 end subroutine
|
|
3 subroutine q
|
|
4 end subroutine
|
|
4 end interface
|
|
5 end subroutine
|
|
2 subroutine sub2(p, q)
|
|
3 interface
|
|
3 subroutine p
|
|
4 end subroutine
|
|
3 subroutine q
|
|
4 end subroutine
|
|
4 end interface
|
|
5 end subroutine
|
|
3 end interface
|
|
4 call sub3
|
|
5 contains
|
|
1 subroutine sub3
|
|
2 continue
|
|
3 block
|
|
!ERROR: Label '2' is not distinct
|
|
2 continue
|
|
4 end block
|
|
5 end subroutine
|
|
6 end program
|