https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114141
--- Comment #8 from Steve Kargl <sgk at troutmask dot apl.washington.edu> --- On Wed, Feb 28, 2024 at 08:24:16PM +0000, sgk at troutmask dot apl.washington.edu wrote: > > Indeed. Bit more reading of F2023, 11.1.3 agrees with you. > > 11.1.3.1 > > The ASSOCIATE construct associates named entities with expressions > or variables during the execution of its block. These named construct > entities (19.4) are associating entities (19.5.1.6). The names are > associate names. > > 11.1.3.3(5) The associating entity itself is a variable, but ... > > The "but ..." applies to whether the selector is a definable variable. > > So, 'y = x%im' is allowed, but 'x%im = 42' is disallowed because > the selector is not definable. Interesting twist. This then > suggests that Jerry's use of parentheses should be accepted. > As a quick follow-up. program p associate(x => sin(cmplx(0.5,0.5))) print *, x print *, x%im ! <-- allowed with my patch x%im = 42 ! <-- this is an error print *, x end associate end % gfcx -o z a.f90 a.f90:5:6: 5 | x%im = 42 | 1 Error: 'x' at (1) associated to expression cannot be used in a variable definition context (assignment) Mikael, thanks for the feedback. I'll see if I can fix the parentheses case this weekend.