Files
Eric Botcazou c04c096013 Fix freezing issues coming from expression functions
The upcoming compiler change trades spurious errors (reject-valid bugfixes)
for valid errors (accept-invalid bugfixes), and now flags a few problematic
constructs in the codebase:

gps-editors.ads:1291:04: error: deferred constant "Nil_Editor_Mark" is frozen before completion
gps-editors.ads:1291:04: error: because expression of function "Create_Mark" is frozen here
gps-editors.ads:1291:04: error: as a primitive operation of type "Dummy_Editor_Location" frozen here
gps-editors.ads:1291:04: error: expression function "Create_Mark" is declared at line 1230
gps-editors.ads:1326:04: error: full constant declaration appears too late
gps-editors.ads:1587:04: error: deferred constant "Nil_Editor_Cursor" is frozen before completion
gps-editors.ads:1587:04: error: because expression of function "Get_Main_Cursor" is frozen here
gps-editors.ads:1587:04: error: as a primitive operation of type "Dummy_Editor_Buffer" frozen here
gps-editors.ads:1587:04: error: expression function "Get_Main_Cursor" is declared at line 1341
gps-editors.ads:1672:04: error: full constant declaration appears too late

language-abstract_language_tree.ads:503:04: error: deferred constant "No_Semantic_Node_Array" is frozen before completion
language-abstract_language_tree.ads:503:04: error: because expression of function "Children" is frozen here
language-abstract_language_tree.ads:503:04: error: as a primitive operation of type "Dummy_Semantic_Node" frozen here
language-abstract_language_tree.ads:503:04: error: expression function "Children" is declared at line 410
language-abstract_language_tree.ads:506:04: error: deferred constant "No_Semantic_Node_Array" is frozen before completion
language-abstract_language_tree.ads:506:04: error: because expression of function "Root_Nodes" is frozen here
language-abstract_language_tree.ads:506:04: error: as a primitive operation of type "Dummy_Semantic_Tree" frozen here
language-abstract_language_tree.ads:506:04: error: expression function "Root_Nodes" is declared at line 477
language-abstract_language_tree.ads:509:04: error: full constant declaration appears too late

xref.ads:367:13: error: this primitive operation is declared too late
xref.ads:371:13: error: this primitive operation is declared too late
[...]

There is a chicken-and-egg issue in language-abstract_language_tree.ads,
whereby the completions of the constants at the end of the file freeze
each other, so there is no legal declaration order for the completions.
Therefore one of them is turned into a function (which is completed by
an expression function) to break the circularity.

Issue: eng/toolchain/gnat#1701
2026-01-17 11:36:22 +01:00
..
2009-11-23 20:11:05 +00:00
2026-01-05 12:41:13 +00:00
2026-01-05 12:41:13 +00:00