Before emitting a warning message, code should check that the usage in question should be diagnosed by calling ShouldWarn(). A fair number of sites in the code do not, and can emit portability warnings unconditionally, which can confuse a user that hasn't asked for them (-pedantic) and isn't terribly concerned about portability *to* other compilers. Add calls to ShouldWarn() or IsEnabled() around messages that need them, and add -pedantic to tests that now require it to test their portability messages, and add more expected message lines to those tests when -pedantic causes other diagnostics to fire.
31 lines
1.1 KiB
Fortran
31 lines
1.1 KiB
Fortran
! RUN: %python %S/test_errors.py %s %flang_fc1 -pedantic
|
|
! Test intrinsic vs non_intrinsic module coexistence
|
|
module iso_fortran_env
|
|
integer, parameter :: user_defined_123 = 123
|
|
end module
|
|
module m1
|
|
use, intrinsic :: iso_fortran_env, only: int32
|
|
!PORTABILITY: Should not USE the non-intrinsic module 'iso_fortran_env' in the same scope as a USE of the intrinsic module
|
|
use, non_intrinsic :: iso_fortran_env, only: user_defined_123
|
|
end module
|
|
module m2
|
|
use, intrinsic :: iso_fortran_env, only: int32
|
|
end module
|
|
module m3
|
|
use, non_intrinsic :: iso_fortran_env, only: user_defined_123
|
|
end module
|
|
module m4
|
|
use :: iso_fortran_env, only: user_defined_123
|
|
end module
|
|
module m5
|
|
!ERROR: Cannot read module file for module 'ieee_arithmetic': Source file 'ieee_arithmetic.mod' was not found
|
|
use, non_intrinsic :: ieee_arithmetic, only: ieee_selected_real_kind
|
|
end module
|
|
module notAnIntrinsicModule
|
|
end module
|
|
module m6
|
|
!ERROR: Cannot read module file for module 'notanintrinsicmodule': Source file 'notanintrinsicmodule.mod' was not found
|
|
use, intrinsic :: notAnIntrinsicModule
|
|
end module
|
|
|