ifort does not compile the attached code, which I think is legal
program p implicit none character(len=*), parameter :: text = "message text" associate( msg => text ) write(*,*) msg end associate end program p
The error is
ifort test.f90 -o test test.f90(6): error #6404: This name does not have a type, and must have an explicit type. [MSG] write(*,*) msg ------------^ compilation aborted for test.f90 (code 1)
and happens for both versions:
Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 17.0.0.098 Build 20160721
Intel(R) Fortran Intel(R) 64 Compiler for applications running on Intel(R) 64, Version 184.108.40.206 Build 20160204
Thanks for the nice test case - escalated as issue DPD200414550. I note that if IMPLICIT NONE is not used, then MSG is implicitly typed and is some uninitialized value. It works ok for integer parameters and character variables.
Curiously, if IMPLICIT NONE is removed, the program runs and prints
which is the ASCII code for the first character of the message string!
I had thought that the associate name should be inheriting its type and other properties from the selector, and not be governed by implicit typing rules at all.