https://gcc.gnu.org/bugzilla/show_bug.cgi?id=112911
Bug ID: 112911
Summary: Problem creating aggregate constants containing a
variant record
Product: gcc
Version: 14.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: modula2
Assignee: gaius at gcc dot gnu.org
Reporter: gaius at gcc dot gnu.org
Target Milestone: ---
Forwarded from the gm2 mailing list:
The following code:
MODULE constvarient ;
TYPE
ParsedDigit = RECORD
CASE Valid: BOOLEAN OF
TRUE: Value: CARDINAL;
ELSE
END;
END;
CONST
PD1 = ParsedDigit { TRUE, 1 } ;
PD2 = ParsedDigit { FALSE };
VAR
d1, d2: ParsedDigit ;
BEGIN
d1 := PD1 ;
d2 := PD2
END constvarient.
is rejected by gm2:
$ gm2 constvarient.mod
constvarient.mod:12:8: error: trying to construct a compound literal and using
a record field which does not exist
12 | PD1 = ParsedDigit { TRUE, 1 } ;
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
constvarient.mod:13:8: error: trying to construct a compound literal and using
a record field which does not exist
13 | PD2 = ParsedDigit { FALSE };
| ~~~~^~~~~~~~~~~~~~~~~~~~~~~
constvarient.mod:18:7: error: trying to construct a compound literal and using
a record field which does not exist
18 | d1 := PD1 ;
| ~~~^~~~~~
constvarient.mod:19:7: error: trying to construct a compound literal and using
a record field which does not exist
19 | d2 := PD2
| ~~~^~~~~~