aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2021-01-04 18:58:54 +0100
committerTristan Gingold <tgingold@free.fr>2021-01-05 07:36:49 +0100
commit1034acdb7c3c0e8c120f738801951eccbdf59941 (patch)
tree8dd21f6218dc5396749daceb082021c9c5c1f232
parenta506cfc5066f9c8f05db335a01e4e12240e07987 (diff)
downloadghdl-1034acdb7c3c0e8c120f738801951eccbdf59941.tar.gz
ghdl-1034acdb7c3c0e8c120f738801951eccbdf59941.tar.bz2
ghdl-1034acdb7c3c0e8c120f738801951eccbdf59941.zip
vhdl: fix reprint of vhdl08 array element constraints.
-rw-r--r--pyGHDL/libghdl/vhdl/nodes.py6
-rw-r--r--pyGHDL/libghdl/vhdl/nodes_meta.py384
-rw-r--r--src/vhdl/vhdl-nodes.adb32
-rw-r--r--src/vhdl/vhdl-nodes.ads17
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb540
-rw-r--r--src/vhdl/vhdl-nodes_meta.ads4
-rw-r--r--src/vhdl/vhdl-parse.adb2
-rw-r--r--src/vhdl/vhdl-prints.adb36
-rw-r--r--src/vhdl/vhdl-sem_types.adb2
9 files changed, 564 insertions, 459 deletions
diff --git a/pyGHDL/libghdl/vhdl/nodes.py b/pyGHDL/libghdl/vhdl/nodes.py
index 759bad8d4..fdf3fa437 100644
--- a/pyGHDL/libghdl/vhdl/nodes.py
+++ b/pyGHDL/libghdl/vhdl/nodes.py
@@ -2267,6 +2267,12 @@ Set_Index_Constraint_List = libghdl.vhdl__nodes__set_index_constraint_list
Get_Array_Element_Constraint = libghdl.vhdl__nodes__get_array_element_constraint
Set_Array_Element_Constraint = libghdl.vhdl__nodes__set_array_element_constraint
+Get_Has_Array_Constraint_Flag = libghdl.vhdl__nodes__get_has_array_constraint_flag
+Set_Has_Array_Constraint_Flag = libghdl.vhdl__nodes__set_has_array_constraint_flag
+
+Get_Has_Element_Constraint_Flag = libghdl.vhdl__nodes__get_has_element_constraint_flag
+Set_Has_Element_Constraint_Flag = libghdl.vhdl__nodes__set_has_element_constraint_flag
+
Get_Elements_Declaration_List = libghdl.vhdl__nodes__get_elements_declaration_list
Set_Elements_Declaration_List = libghdl.vhdl__nodes__set_elements_declaration_list
diff --git a/pyGHDL/libghdl/vhdl/nodes_meta.py b/pyGHDL/libghdl/vhdl/nodes_meta.py
index 8476b07fa..1826bef68 100644
--- a/pyGHDL/libghdl/vhdl/nodes_meta.py
+++ b/pyGHDL/libghdl/vhdl/nodes_meta.py
@@ -245,194 +245,196 @@ class fields:
Element_Subnature = 177
Index_Constraint_List = 178
Array_Element_Constraint = 179
- Elements_Declaration_List = 180
- Owned_Elements_Chain = 181
- Designated_Type = 182
- Designated_Subtype_Indication = 183
- Index_List = 184
- Reference = 185
- Nature_Declarator = 186
- Across_Type_Mark = 187
- Through_Type_Mark = 188
- Across_Type_Definition = 189
- Through_Type_Definition = 190
- Across_Type = 191
- Through_Type = 192
- Target = 193
- Waveform_Chain = 194
- Guard = 195
- Delay_Mechanism = 196
- Reject_Time_Expression = 197
- Force_Mode = 198
- Has_Force_Mode = 199
- Sensitivity_List = 200
- Process_Origin = 201
- Package_Origin = 202
- Condition_Clause = 203
- Break_Element = 204
- Selector_Quantity = 205
- Break_Quantity = 206
- Timeout_Clause = 207
- Postponed_Flag = 208
- Callees_List = 209
- Passive_Flag = 210
- Resolution_Function_Flag = 211
- Wait_State = 212
- All_Sensitized_State = 213
- Seen_Flag = 214
- Pure_Flag = 215
- Foreign_Flag = 216
- Resolved_Flag = 217
- Signal_Type_Flag = 218
- Has_Signal_Flag = 219
- Purity_State = 220
- Elab_Flag = 221
- Vendor_Library_Flag = 222
- Configuration_Mark_Flag = 223
- Configuration_Done_Flag = 224
- Index_Constraint_Flag = 225
- Hide_Implicit_Flag = 226
- Assertion_Condition = 227
- Report_Expression = 228
- Severity_Expression = 229
- Instantiated_Unit = 230
- Generic_Map_Aspect_Chain = 231
- Port_Map_Aspect_Chain = 232
- Configuration_Name = 233
- Component_Configuration = 234
- Configuration_Specification = 235
- Default_Binding_Indication = 236
- Default_Configuration_Declaration = 237
- Expression = 238
- Conditional_Expression_Chain = 239
- Allocator_Designated_Type = 240
- Selected_Waveform_Chain = 241
- Conditional_Waveform_Chain = 242
- Guard_Expression = 243
- Guard_Decl = 244
- Guard_Sensitivity_List = 245
- Signal_Attribute_Chain = 246
- Block_Block_Configuration = 247
- Package_Header = 248
- Block_Header = 249
- Uninstantiated_Package_Name = 250
- Uninstantiated_Package_Decl = 251
- Instance_Source_File = 252
- Generate_Block_Configuration = 253
- Generate_Statement_Body = 254
- Alternative_Label = 255
- Generate_Else_Clause = 256
- Condition = 257
- Else_Clause = 258
- Parameter_Specification = 259
- Parent = 260
- Loop_Label = 261
- Exit_Flag = 262
- Next_Flag = 263
- Component_Name = 264
- Instantiation_List = 265
- Entity_Aspect = 266
- Default_Entity_Aspect = 267
- Binding_Indication = 268
- Named_Entity = 269
- Alias_Declaration = 270
- Referenced_Name = 271
- Expr_Staticness = 272
- Scalar_Size = 273
- Error_Origin = 274
- Operand = 275
- Left = 276
- Right = 277
- Unit_Name = 278
- Name = 279
- Group_Template_Name = 280
- Name_Staticness = 281
- Prefix = 282
- Signature_Prefix = 283
- External_Pathname = 284
- Pathname_Suffix = 285
- Pathname_Expression = 286
- In_Formal_Flag = 287
- Slice_Subtype = 288
- Suffix = 289
- Index_Subtype = 290
- Parameter = 291
- Parameter_2 = 292
- Parameter_3 = 293
- Parameter_4 = 294
- Attr_Chain = 295
- Signal_Attribute_Declaration = 296
- Actual_Type = 297
- Actual_Type_Definition = 298
- Association_Chain = 299
- Individual_Association_Chain = 300
- Subprogram_Association_Chain = 301
- Aggregate_Info = 302
- Sub_Aggregate_Info = 303
- Aggr_Dynamic_Flag = 304
- Aggr_Min_Length = 305
- Aggr_Low_Limit = 306
- Aggr_High_Limit = 307
- Aggr_Others_Flag = 308
- Aggr_Named_Flag = 309
- Aggregate_Expand_Flag = 310
- Association_Choices_Chain = 311
- Case_Statement_Alternative_Chain = 312
- Choice_Staticness = 313
- Procedure_Call = 314
- Implementation = 315
- Parameter_Association_Chain = 316
- Method_Object = 317
- Subtype_Type_Mark = 318
- Subnature_Nature_Mark = 319
- Type_Conversion_Subtype = 320
- Type_Mark = 321
- File_Type_Mark = 322
- Return_Type_Mark = 323
- Has_Disconnect_Flag = 324
- Has_Active_Flag = 325
- Is_Within_Flag = 326
- Type_Marks_List = 327
- Implicit_Alias_Flag = 328
- Alias_Signature = 329
- Attribute_Signature = 330
- Overload_List = 331
- Simple_Name_Identifier = 332
- Simple_Name_Subtype = 333
- Protected_Type_Body = 334
- Protected_Type_Declaration = 335
- Use_Flag = 336
- End_Has_Reserved_Id = 337
- End_Has_Identifier = 338
- End_Has_Postponed = 339
- Has_Label = 340
- Has_Begin = 341
- Has_End = 342
- Has_Is = 343
- Has_Pure = 344
- Has_Body = 345
- Has_Parameter = 346
- Has_Component = 347
- Has_Identifier_List = 348
- Has_Mode = 349
- Has_Class = 350
- Has_Delay_Mechanism = 351
- Suspend_Flag = 352
- Is_Ref = 353
- Is_Forward_Ref = 354
- Psl_Property = 355
- Psl_Sequence = 356
- Psl_Declaration = 357
- Psl_Expression = 358
- Psl_Boolean = 359
- PSL_Clock = 360
- PSL_NFA = 361
- PSL_Nbr_States = 362
- PSL_Clock_Sensitivity = 363
- PSL_EOS_Flag = 364
- Count_Expression = 365
- Clock_Expression = 366
- Default_Clock = 367
+ Has_Array_Constraint_Flag = 180
+ Has_Element_Constraint_Flag = 181
+ Elements_Declaration_List = 182
+ Owned_Elements_Chain = 183
+ Designated_Type = 184
+ Designated_Subtype_Indication = 185
+ Index_List = 186
+ Reference = 187
+ Nature_Declarator = 188
+ Across_Type_Mark = 189
+ Through_Type_Mark = 190
+ Across_Type_Definition = 191
+ Through_Type_Definition = 192
+ Across_Type = 193
+ Through_Type = 194
+ Target = 195
+ Waveform_Chain = 196
+ Guard = 197
+ Delay_Mechanism = 198
+ Reject_Time_Expression = 199
+ Force_Mode = 200
+ Has_Force_Mode = 201
+ Sensitivity_List = 202
+ Process_Origin = 203
+ Package_Origin = 204
+ Condition_Clause = 205
+ Break_Element = 206
+ Selector_Quantity = 207
+ Break_Quantity = 208
+ Timeout_Clause = 209
+ Postponed_Flag = 210
+ Callees_List = 211
+ Passive_Flag = 212
+ Resolution_Function_Flag = 213
+ Wait_State = 214
+ All_Sensitized_State = 215
+ Seen_Flag = 216
+ Pure_Flag = 217
+ Foreign_Flag = 218
+ Resolved_Flag = 219
+ Signal_Type_Flag = 220
+ Has_Signal_Flag = 221
+ Purity_State = 222
+ Elab_Flag = 223
+ Vendor_Library_Flag = 224
+ Configuration_Mark_Flag = 225
+ Configuration_Done_Flag = 226
+ Index_Constraint_Flag = 227
+ Hide_Implicit_Flag = 228
+ Assertion_Condition = 229
+ Report_Expression = 230
+ Severity_Expression = 231
+ Instantiated_Unit = 232
+ Generic_Map_Aspect_Chain = 233
+ Port_Map_Aspect_Chain = 234
+ Configuration_Name = 235
+ Component_Configuration = 236
+ Configuration_Specification = 237
+ Default_Binding_Indication = 238
+ Default_Configuration_Declaration = 239
+ Expression = 240
+ Conditional_Expression_Chain = 241
+ Allocator_Designated_Type = 242
+ Selected_Waveform_Chain = 243
+ Conditional_Waveform_Chain = 244
+ Guard_Expression = 245
+ Guard_Decl = 246
+ Guard_Sensitivity_List = 247
+ Signal_Attribute_Chain = 248
+ Block_Block_Configuration = 249
+ Package_Header = 250
+ Block_Header = 251
+ Uninstantiated_Package_Name = 252
+ Uninstantiated_Package_Decl = 253
+ Instance_Source_File = 254
+ Generate_Block_Configuration = 255
+ Generate_Statement_Body = 256
+ Alternative_Label = 257
+ Generate_Else_Clause = 258
+ Condition = 259
+ Else_Clause = 260
+ Parameter_Specification = 261
+ Parent = 262
+ Loop_Label = 263
+ Exit_Flag = 264
+ Next_Flag = 265
+ Component_Name = 266
+ Instantiation_List = 267
+ Entity_Aspect = 268
+ Default_Entity_Aspect = 269
+ Binding_Indication = 270
+ Named_Entity = 271
+ Alias_Declaration = 272
+ Referenced_Name = 273
+ Expr_Staticness = 274
+ Scalar_Size = 275
+ Error_Origin = 276
+ Operand = 277
+ Left = 278
+ Right = 279
+ Unit_Name = 280
+ Name = 281
+ Group_Template_Name = 282
+ Name_Staticness = 283
+ Prefix = 284
+ Signature_Prefix = 285
+ External_Pathname = 286
+ Pathname_Suffix = 287
+ Pathname_Expression = 288
+ In_Formal_Flag = 289
+ Slice_Subtype = 290
+ Suffix = 291
+ Index_Subtype = 292
+ Parameter = 293
+ Parameter_2 = 294
+ Parameter_3 = 295
+ Parameter_4 = 296
+ Attr_Chain = 297
+ Signal_Attribute_Declaration = 298
+ Actual_Type = 299
+ Actual_Type_Definition = 300
+ Association_Chain = 301
+ Individual_Association_Chain = 302
+ Subprogram_Association_Chain = 303
+ Aggregate_Info = 304
+ Sub_Aggregate_Info = 305
+ Aggr_Dynamic_Flag = 306
+ Aggr_Min_Length = 307
+ Aggr_Low_Limit = 308
+ Aggr_High_Limit = 309
+ Aggr_Others_Flag = 310
+ Aggr_Named_Flag = 311
+ Aggregate_Expand_Flag = 312
+ Association_Choices_Chain = 313
+ Case_Statement_Alternative_Chain = 314
+ Choice_Staticness = 315
+ Procedure_Call = 316
+ Implementation = 317
+ Parameter_Association_Chain = 318
+ Method_Object = 319
+ Subtype_Type_Mark = 320
+ Subnature_Nature_Mark = 321
+ Type_Conversion_Subtype = 322
+ Type_Mark = 323
+ File_Type_Mark = 324
+ Return_Type_Mark = 325
+ Has_Disconnect_Flag = 326
+ Has_Active_Flag = 327
+ Is_Within_Flag = 328
+ Type_Marks_List = 329
+ Implicit_Alias_Flag = 330
+ Alias_Signature = 331
+ Attribute_Signature = 332
+ Overload_List = 333
+ Simple_Name_Identifier = 334
+ Simple_Name_Subtype = 335
+ Protected_Type_Body = 336
+ Protected_Type_Declaration = 337
+ Use_Flag = 338
+ End_Has_Reserved_Id = 339
+ End_Has_Identifier = 340
+ End_Has_Postponed = 341
+ Has_Label = 342
+ Has_Begin = 343
+ Has_End = 344
+ Has_Is = 345
+ Has_Pure = 346
+ Has_Body = 347
+ Has_Parameter = 348
+ Has_Component = 349
+ Has_Identifier_List = 350
+ Has_Mode = 351
+ Has_Class = 352
+ Has_Delay_Mechanism = 353
+ Suspend_Flag = 354
+ Is_Ref = 355
+ Is_Forward_Ref = 356
+ Psl_Property = 357
+ Psl_Sequence = 358
+ Psl_Declaration = 359
+ Psl_Expression = 360
+ Psl_Boolean = 361
+ PSL_Clock = 362
+ PSL_NFA = 363
+ PSL_Nbr_States = 364
+ PSL_Clock_Sensitivity = 365
+ PSL_EOS_Flag = 366
+ Count_Expression = 367
+ Clock_Expression = 368
+ Default_Clock = 369
Get_Boolean = libghdl.vhdl__nodes_meta__get_boolean
@@ -1042,6 +1044,12 @@ Has_Index_Constraint_List =\
Has_Array_Element_Constraint =\
libghdl.vhdl__nodes_meta__has_array_element_constraint
+Has_Has_Array_Constraint_Flag =\
+ libghdl.vhdl__nodes_meta__has_has_array_constraint_flag
+
+Has_Has_Element_Constraint_Flag =\
+ libghdl.vhdl__nodes_meta__has_has_element_constraint_flag
+
Has_Elements_Declaration_List =\
libghdl.vhdl__nodes_meta__has_elements_declaration_list
diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb
index b879ba275..1875e1ba3 100644
--- a/src/vhdl/vhdl-nodes.adb
+++ b/src/vhdl/vhdl-nodes.adb
@@ -4285,6 +4285,38 @@ package body Vhdl.Nodes is
Set_Field8 (Def, El);
end Set_Array_Element_Constraint;
+ function Get_Has_Array_Constraint_Flag (Def : Iir) return Boolean is
+ begin
+ pragma Assert (Def /= Null_Iir);
+ pragma Assert (Has_Has_Array_Constraint_Flag (Get_Kind (Def)),
+ "no field Has_Array_Constraint_Flag");
+ return Get_Flag5 (Def);
+ end Get_Has_Array_Constraint_Flag;
+
+ procedure Set_Has_Array_Constraint_Flag (Def : Iir; Flag : Boolean) is
+ begin
+ pragma Assert (Def /= Null_Iir);
+ pragma Assert (Has_Has_Array_Constraint_Flag (Get_Kind (Def)),
+ "no field Has_Array_Constraint_Flag");
+ Set_Flag5 (Def, Flag);
+ end Set_Has_Array_Constraint_Flag;
+
+ function Get_Has_Element_Constraint_Flag (Def : Iir) return Boolean is
+ begin
+ pragma Assert (Def /= Null_Iir);
+ pragma Assert (Has_Has_Element_Constraint_Flag (Get_Kind (Def)),
+ "no field Has_Element_Constraint_Flag");
+ return Get_Flag6 (Def);
+ end Get_Has_Element_Constraint_Flag;
+
+ procedure Set_Has_Element_Constraint_Flag (Def : Iir; Flag : Boolean) is
+ begin
+ pragma Assert (Def /= Null_Iir);
+ pragma Assert (Has_Has_Element_Constraint_Flag (Get_Kind (Def)),
+ "no field Has_Element_Constraint_Flag");
+ Set_Flag6 (Def, Flag);
+ end Set_Has_Element_Constraint_Flag;
+
function Get_Elements_Declaration_List (Decl : Iir) return Iir_Flist is
begin
pragma Assert (Decl /= Null_Iir);
diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads
index f092fd598..93ea74f11 100644
--- a/src/vhdl/vhdl-nodes.ads
+++ b/src/vhdl/vhdl-nodes.ads
@@ -2970,7 +2970,16 @@ package Vhdl.Nodes is
--
-- Get/Set_Has_Signal_Flag (Flag3)
--
+ -- True if the indexes are constrained (either by this definition or by
+ -- a parent).
-- Get/Set_Index_Constraint_Flag (Flag4)
+ --
+ -- If True, an array constraint is lexically present (at least for the
+ -- index). This can be an index constraint or 'open'.
+ -- Get/Set_Has_Array_Constraint_Flag (Flag5)
+ --
+ -- If True, an element constraint is lexically present. It can be 'open'.
+ -- Get/Set_Has_Element_Constraint_Flag (Flag6)
-- Iir_Kind_Range_Expression (Short)
--
@@ -8270,6 +8279,14 @@ package Vhdl.Nodes is
function Get_Array_Element_Constraint (Def : Iir) return Iir;
procedure Set_Array_Element_Constraint (Def : Iir; El : Iir);
+ -- Field: Flag5
+ function Get_Has_Array_Constraint_Flag (Def : Iir) return Boolean;
+ procedure Set_Has_Array_Constraint_Flag (Def : Iir; Flag : Boolean);
+
+ -- Field: Flag6
+ function Get_Has_Element_Constraint_Flag (Def : Iir) return Boolean;
+ procedure Set_Has_Element_Constraint_Flag (Def : Iir; Flag : Boolean);
+
-- List of elements of a record.
-- For a record_type_definition: Is_Ref is false, as the elements
-- declaration are owned by the type definition.
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index 6989c840a..336551b42 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -199,6 +199,8 @@ package body Vhdl.Nodes_Meta is
Field_Element_Subnature => Type_Iir,
Field_Index_Constraint_List => Type_Iir_Flist,
Field_Array_Element_Constraint => Type_Iir,
+ Field_Has_Array_Constraint_Flag => Type_Boolean,
+ Field_Has_Element_Constraint_Flag => Type_Boolean,
Field_Elements_Declaration_List => Type_Iir_Flist,
Field_Owned_Elements_Chain => Type_Iir,
Field_Designated_Type => Type_Iir,
@@ -757,6 +759,10 @@ package body Vhdl.Nodes_Meta is
return "index_constraint_list";
when Field_Array_Element_Constraint =>
return "array_element_constraint";
+ when Field_Has_Array_Constraint_Flag =>
+ return "has_array_constraint_flag";
+ when Field_Has_Element_Constraint_Flag =>
+ return "has_element_constraint_flag";
when Field_Elements_Declaration_List =>
return "elements_declaration_list";
when Field_Owned_Elements_Chain =>
@@ -2135,6 +2141,10 @@ package body Vhdl.Nodes_Meta is
return Attr_None;
when Field_Array_Element_Constraint =>
return Attr_None;
+ when Field_Has_Array_Constraint_Flag =>
+ return Attr_None;
+ when Field_Has_Element_Constraint_Flag =>
+ return Attr_None;
when Field_Elements_Declaration_List =>
return Attr_Of_Maybe_Ref;
when Field_Owned_Elements_Chain =>
@@ -2918,6 +2928,8 @@ package body Vhdl.Nodes_Meta is
Field_Signal_Type_Flag,
Field_Has_Signal_Flag,
Field_Index_Constraint_Flag,
+ Field_Has_Array_Constraint_Flag,
+ Field_Has_Element_Constraint_Flag,
Field_Type_Staticness,
Field_Constraint_State,
Field_Subtype_Type_Mark,
@@ -5266,261 +5278,261 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Protected_Type_Declaration => 315,
Iir_Kind_Record_Type_Definition => 325,
Iir_Kind_Array_Type_Definition => 336,
- Iir_Kind_Array_Subtype_Definition => 351,
- Iir_Kind_Record_Subtype_Definition => 364,
- Iir_Kind_Access_Subtype_Definition => 372,
- Iir_Kind_Physical_Subtype_Definition => 382,
- Iir_Kind_Floating_Subtype_Definition => 393,
- Iir_Kind_Integer_Subtype_Definition => 403,
- Iir_Kind_Enumeration_Subtype_Definition => 413,
- Iir_Kind_Enumeration_Type_Definition => 424,
- Iir_Kind_Integer_Type_Definition => 432,
- Iir_Kind_Floating_Type_Definition => 440,
- Iir_Kind_Physical_Type_Definition => 451,
- Iir_Kind_Range_Expression => 459,
- Iir_Kind_Protected_Type_Body => 467,
- Iir_Kind_Wildcard_Type_Definition => 471,
- Iir_Kind_Subtype_Definition => 478,
- Iir_Kind_Scalar_Nature_Definition => 486,
- Iir_Kind_Record_Nature_Definition => 499,
- Iir_Kind_Array_Nature_Definition => 513,
- Iir_Kind_Array_Subnature_Definition => 528,
- Iir_Kind_Overload_List => 529,
- Iir_Kind_Entity_Declaration => 542,
- Iir_Kind_Configuration_Declaration => 552,
- Iir_Kind_Context_Declaration => 558,
- Iir_Kind_Package_Declaration => 573,
- Iir_Kind_Package_Instantiation_Declaration => 587,
- Iir_Kind_Vmode_Declaration => 599,
- Iir_Kind_Vprop_Declaration => 611,
- Iir_Kind_Vunit_Declaration => 624,
- Iir_Kind_Package_Body => 632,
- Iir_Kind_Architecture_Body => 645,
- Iir_Kind_Type_Declaration => 652,
- Iir_Kind_Anonymous_Type_Declaration => 658,
- Iir_Kind_Subtype_Declaration => 666,
- Iir_Kind_Nature_Declaration => 672,
- Iir_Kind_Subnature_Declaration => 679,
- Iir_Kind_Package_Header => 681,
- Iir_Kind_Unit_Declaration => 690,
- Iir_Kind_Library_Declaration => 698,
- Iir_Kind_Component_Declaration => 708,
- Iir_Kind_Attribute_Declaration => 715,
- Iir_Kind_Group_Template_Declaration => 721,
- Iir_Kind_Group_Declaration => 728,
- Iir_Kind_Element_Declaration => 736,
- Iir_Kind_Nature_Element_Declaration => 743,
- Iir_Kind_Non_Object_Alias_Declaration => 751,
- Iir_Kind_Psl_Declaration => 759,
- Iir_Kind_Psl_Endpoint_Declaration => 773,
- Iir_Kind_Enumeration_Literal => 784,
- Iir_Kind_Function_Declaration => 809,
- Iir_Kind_Procedure_Declaration => 833,
- Iir_Kind_Function_Body => 843,
- Iir_Kind_Procedure_Body => 854,
- Iir_Kind_Function_Instantiation_Declaration => 865,
- Iir_Kind_Procedure_Instantiation_Declaration => 875,
- Iir_Kind_Terminal_Declaration => 884,
- Iir_Kind_Object_Alias_Declaration => 896,
- Iir_Kind_Free_Quantity_Declaration => 908,
- Iir_Kind_Spectrum_Quantity_Declaration => 921,
- Iir_Kind_Noise_Quantity_Declaration => 933,
- Iir_Kind_Across_Quantity_Declaration => 949,
- Iir_Kind_Through_Quantity_Declaration => 965,
- Iir_Kind_File_Declaration => 980,
- Iir_Kind_Guard_Signal_Declaration => 994,
- Iir_Kind_Signal_Declaration => 1011,
- Iir_Kind_Variable_Declaration => 1024,
- Iir_Kind_Constant_Declaration => 1038,
- Iir_Kind_Iterator_Declaration => 1050,
- Iir_Kind_Interface_Constant_Declaration => 1067,
- Iir_Kind_Interface_Variable_Declaration => 1083,
- Iir_Kind_Interface_Signal_Declaration => 1104,
- Iir_Kind_Interface_File_Declaration => 1120,
- Iir_Kind_Interface_Quantity_Declaration => 1136,
- Iir_Kind_Interface_Terminal_Declaration => 1148,
- Iir_Kind_Interface_Type_Declaration => 1159,
- Iir_Kind_Interface_Package_Declaration => 1172,
- Iir_Kind_Interface_Function_Declaration => 1190,
- Iir_Kind_Interface_Procedure_Declaration => 1204,
- Iir_Kind_Anonymous_Signal_Declaration => 1213,
- Iir_Kind_Signal_Attribute_Declaration => 1216,
- Iir_Kind_Identity_Operator => 1220,
- Iir_Kind_Negation_Operator => 1224,
- Iir_Kind_Absolute_Operator => 1228,
- Iir_Kind_Not_Operator => 1232,
- Iir_Kind_Implicit_Condition_Operator => 1236,
- Iir_Kind_Condition_Operator => 1240,
- Iir_Kind_Reduction_And_Operator => 1244,
- Iir_Kind_Reduction_Or_Operator => 1248,
- Iir_Kind_Reduction_Nand_Operator => 1252,
- Iir_Kind_Reduction_Nor_Operator => 1256,
- Iir_Kind_Reduction_Xor_Operator => 1260,
- Iir_Kind_Reduction_Xnor_Operator => 1264,
- Iir_Kind_And_Operator => 1269,
- Iir_Kind_Or_Operator => 1274,
- Iir_Kind_Nand_Operator => 1279,
- Iir_Kind_Nor_Operator => 1284,
- Iir_Kind_Xor_Operator => 1289,
- Iir_Kind_Xnor_Operator => 1294,
- Iir_Kind_Equality_Operator => 1299,
- Iir_Kind_Inequality_Operator => 1304,
- Iir_Kind_Less_Than_Operator => 1309,
- Iir_Kind_Less_Than_Or_Equal_Operator => 1314,
- Iir_Kind_Greater_Than_Operator => 1319,
- Iir_Kind_Greater_Than_Or_Equal_Operator => 1324,
- Iir_Kind_Match_Equality_Operator => 1329,
- Iir_Kind_Match_Inequality_Operator => 1334,
- Iir_Kind_Match_Less_Than_Operator => 1339,
- Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1344,
- Iir_Kind_Match_Greater_Than_Operator => 1349,
- Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1354,
- Iir_Kind_Sll_Operator => 1359,
- Iir_Kind_Sla_Operator => 1364,
- Iir_Kind_Srl_Operator => 1369,
- Iir_Kind_Sra_Operator => 1374,
- Iir_Kind_Rol_Operator => 1379,
- Iir_Kind_Ror_Operator => 1384,
- Iir_Kind_Addition_Operator => 1389,
- Iir_Kind_Substraction_Operator => 1394,
- Iir_Kind_Concatenation_Operator => 1399,
- Iir_Kind_Multiplication_Operator => 1404,
- Iir_Kind_Division_Operator => 1409,
- Iir_Kind_Modulus_Operator => 1414,
- Iir_Kind_Remainder_Operator => 1419,
- Iir_Kind_Exponentiation_Operator => 1424,
- Iir_Kind_Function_Call => 1432,
- Iir_Kind_Aggregate => 1439,
- Iir_Kind_Parenthesis_Expression => 1442,
- Iir_Kind_Qualified_Expression => 1446,
- Iir_Kind_Type_Conversion => 1451,
- Iir_Kind_Allocator_By_Expression => 1456,
- Iir_Kind_Allocator_By_Subtype => 1462,
- Iir_Kind_Selected_Element => 1470,
- Iir_Kind_Dereference => 1475,
- Iir_Kind_Implicit_Dereference => 1480,
- Iir_Kind_Slice_Name => 1487,
- Iir_Kind_Indexed_Name => 1493,
- Iir_Kind_Psl_Prev => 1499,
- Iir_Kind_Psl_Stable => 1504,
- Iir_Kind_Psl_Rose => 1509,
- Iir_Kind_Psl_Fell => 1514,
- Iir_Kind_Psl_Expression => 1516,
- Iir_Kind_Sensitized_Process_Statement => 1537,
- Iir_Kind_Process_Statement => 1557,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1570,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1583,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1597,
- Iir_Kind_Concurrent_Assertion_Statement => 1605,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1612,
- Iir_Kind_Concurrent_Break_Statement => 1620,
- Iir_Kind_Psl_Assert_Directive => 1633,
- Iir_Kind_Psl_Assume_Directive => 1644,
- Iir_Kind_Psl_Cover_Directive => 1656,
- Iir_Kind_Psl_Restrict_Directive => 1667,
- Iir_Kind_Block_Statement => 1681,
- Iir_Kind_If_Generate_Statement => 1692,
- Iir_Kind_Case_Generate_Statement => 1701,
- Iir_Kind_For_Generate_Statement => 1710,
- Iir_Kind_Component_Instantiation_Statement => 1721,
- Iir_Kind_Psl_Default_Clock => 1725,
- Iir_Kind_Generate_Statement_Body => 1736,
- Iir_Kind_If_Generate_Else_Clause => 1742,
- Iir_Kind_Simple_Simultaneous_Statement => 1749,
- Iir_Kind_Simultaneous_Null_Statement => 1753,
- Iir_Kind_Simultaneous_Procedural_Statement => 1764,
- Iir_Kind_Simultaneous_Case_Statement => 1773,
- Iir_Kind_Simultaneous_If_Statement => 1782,
- Iir_Kind_Simultaneous_Elsif => 1788,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1799,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1810,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1822,
- Iir_Kind_Signal_Force_Assignment_Statement => 1832,
- Iir_Kind_Signal_Release_Assignment_Statement => 1841,
- Iir_Kind_Null_Statement => 1845,
- Iir_Kind_Assertion_Statement => 1852,
- Iir_Kind_Report_Statement => 1858,
- Iir_Kind_Wait_Statement => 1866,
- Iir_Kind_Variable_Assignment_Statement => 1873,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1880,
- Iir_Kind_Return_Statement => 1886,
- Iir_Kind_For_Loop_Statement => 1897,
- Iir_Kind_While_Loop_Statement => 1908,
- Iir_Kind_Next_Statement => 1915,
- Iir_Kind_Exit_Statement => 1922,
- Iir_Kind_Case_Statement => 1930,
- Iir_Kind_Procedure_Call_Statement => 1936,
- Iir_Kind_Break_Statement => 1943,
- Iir_Kind_If_Statement => 1953,
- Iir_Kind_Elsif => 1959,
- Iir_Kind_Character_Literal => 1967,
- Iir_Kind_Simple_Name => 1975,
- Iir_Kind_Selected_Name => 1984,
- Iir_Kind_Operator_Symbol => 1990,
- Iir_Kind_Reference_Name => 1995,
- Iir_Kind_External_Constant_Name => 2004,
- Iir_Kind_External_Signal_Name => 2013,
- Iir_Kind_External_Variable_Name => 2023,
- Iir_Kind_Selected_By_All_Name => 2029,
- Iir_Kind_Parenthesis_Name => 2034,
- Iir_Kind_Package_Pathname => 2038,
- Iir_Kind_Absolute_Pathname => 2039,
- Iir_Kind_Relative_Pathname => 2040,
- Iir_Kind_Pathname_Element => 2045,
- Iir_Kind_Base_Attribute => 2047,
- Iir_Kind_Subtype_Attribute => 2052,
- Iir_Kind_Element_Attribute => 2057,
- Iir_Kind_Across_Attribute => 2062,
- Iir_Kind_Through_Attribute => 2067,
- Iir_Kind_Nature_Reference_Attribute => 2071,
- Iir_Kind_Left_Type_Attribute => 2076,
- Iir_Kind_Right_Type_Attribute => 2081,
- Iir_Kind_High_Type_Attribute => 2086,
- Iir_Kind_Low_Type_Attribute => 2091,
- Iir_Kind_Ascending_Type_Attribute => 2096,
- Iir_Kind_Image_Attribute => 2102,
- Iir_Kind_Value_Attribute => 2108,
- Iir_Kind_Pos_Attribute => 2114,
- Iir_Kind_Val_Attribute => 2120,
- Iir_Kind_Succ_Attribute => 2126,
- Iir_Kind_Pred_Attribute => 2132,
- Iir_Kind_Leftof_Attribute => 2138,
- Iir_Kind_Rightof_Attribute => 2144,
- Iir_Kind_Signal_Slew_Attribute => 2152,
- Iir_Kind_Quantity_Slew_Attribute => 2160,
- Iir_Kind_Ramp_Attribute => 2168,
- Iir_Kind_Zoh_Attribute => 2176,
- Iir_Kind_Ltf_Attribute => 2184,
- Iir_Kind_Ztf_Attribute => 2194,
- Iir_Kind_Dot_Attribute => 2201,
- Iir_Kind_Integ_Attribute => 2208,
- Iir_Kind_Above_Attribute => 2216,
- Iir_Kind_Quantity_Delayed_Attribute => 2224,
- Iir_Kind_Delayed_Attribute => 2233,
- Iir_Kind_Stable_Attribute => 2242,
- Iir_Kind_Quiet_Attribute => 2251,
- Iir_Kind_Transaction_Attribute => 2260,
- Iir_Kind_Event_Attribute => 2264,
- Iir_Kind_Active_Attribute => 2268,
- Iir_Kind_Last_Event_Attribute => 2272,
- Iir_Kind_Last_Active_Attribute => 2276,
- Iir_Kind_Last_Value_Attribute => 2280,
- Iir_Kind_Driving_Attribute => 2284,
- Iir_Kind_Driving_Value_Attribute => 2288,
- Iir_Kind_Behavior_Attribute => 2288,
- Iir_Kind_Structure_Attribute => 2288,
- Iir_Kind_Simple_Name_Attribute => 2295,
- Iir_Kind_Instance_Name_Attribute => 2300,
- Iir_Kind_Path_Name_Attribute => 2305,
- Iir_Kind_Left_Array_Attribute => 2312,
- Iir_Kind_Right_Array_Attribute => 2319,
- Iir_Kind_High_Array_Attribute => 2326,
- Iir_Kind_Low_Array_Attribute => 2333,
- Iir_Kind_Length_Array_Attribute => 2340,
- Iir_Kind_Ascending_Array_Attribute => 2347,
- Iir_Kind_Range_Array_Attribute => 2354,
- Iir_Kind_Reverse_Range_Array_Attribute => 2361,
- Iir_Kind_Attribute_Name => 2370
+ Iir_Kind_Array_Subtype_Definition => 353,
+ Iir_Kind_Record_Subtype_Definition => 366,
+ Iir_Kind_Access_Subtype_Definition => 374,
+ Iir_Kind_Physical_Subtype_Definition => 384,
+ Iir_Kind_Floating_Subtype_Definition => 395,
+ Iir_Kind_Integer_Subtype_Definition => 405,
+ Iir_Kind_Enumeration_Subtype_Definition => 415,
+ Iir_Kind_Enumeration_Type_Definition => 426,
+ Iir_Kind_Integer_Type_Definition => 434,
+ Iir_Kind_Floating_Type_Definition => 442,
+ Iir_Kind_Physical_Type_Definition => 453,
+ Iir_Kind_Range_Expression => 461,
+ Iir_Kind_Protected_Type_Body => 469,
+ Iir_Kind_Wildcard_Type_Definition => 473,
+ Iir_Kind_Subtype_Definition => 480,
+ Iir_Kind_Scalar_Nature_Definition => 488,
+ Iir_Kind_Record_Nature_Definition => 501,
+ Iir_Kind_Array_Nature_Definition => 515,
+ Iir_Kind_Array_Subnature_Definition => 530,
+ Iir_Kind_Overload_List => 531,
+ Iir_Kind_Entity_Declaration => 544,
+ Iir_Kind_Configuration_Declaration => 554,
+ Iir_Kind_Context_Declaration => 560,
+ Iir_Kind_Package_Declaration => 575,
+ Iir_Kind_Package_Instantiation_Declaration => 589,
+ Iir_Kind_Vmode_Declaration => 601,
+ Iir_Kind_Vprop_Declaration => 613,
+ Iir_Kind_Vunit_Declaration => 626,
+ Iir_Kind_Package_Body => 634,
+ Iir_Kind_Architecture_Body => 647,
+ Iir_Kind_Type_Declaration => 654,
+ Iir_Kind_Anonymous_Type_Declaration => 660,
+ Iir_Kind_Subtype_Declaration => 668,
+ Iir_Kind_Nature_Declaration => 674,
+ Iir_Kind_Subnature_Declaration => 681,
+ Iir_Kind_Package_Header => 683,
+ Iir_Kind_Unit_Declaration => 692,
+ Iir_Kind_Library_Declaration => 700,
+ Iir_Kind_Component_Declaration => 710,
+ Iir_Kind_Attribute_Declaration => 717,
+ Iir_Kind_Group_Template_Declaration => 723,
+ Iir_Kind_Group_Declaration => 730,
+ Iir_Kind_Element_Declaration => 738,
+ Iir_Kind_Nature_Element_Declaration => 745,
+ Iir_Kind_Non_Object_Alias_Declaration => 753,
+ Iir_Kind_Psl_Declaration => 761,
+ Iir_Kind_Psl_Endpoint_Declaration => 775,
+ Iir_Kind_Enumeration_Literal => 786,
+ Iir_Kind_Function_Declaration => 811,
+ Iir_Kind_Procedure_Declaration => 835,
+ Iir_Kind_Function_Body => 845,
+ Iir_Kind_Procedure_Body => 856,
+ Iir_Kind_Function_Instantiation_Declaration => 867,
+ Iir_Kind_Procedure_Instantiation_Declaration => 877,
+ Iir_Kind_Terminal_Declaration => 886,
+ Iir_Kind_Object_Alias_Declaration => 898,
+ Iir_Kind_Free_Quantity_Declaration => 910,
+ Iir_Kind_Spectrum_Quantity_Declaration => 923,
+ Iir_Kind_Noise_Quantity_Declaration => 935,
+ Iir_Kind_Across_Quantity_Declaration => 951,
+ Iir_Kind_Through_Quantity_Declaration => 967,
+ Iir_Kind_File_Declaration => 982,
+ Iir_Kind_Guard_Signal_Declaration => 996,
+ Iir_Kind_Signal_Declaration => 1013,
+ Iir_Kind_Variable_Declaration => 1026,
+ Iir_Kind_Constant_Declaration => 1040,
+ Iir_Kind_Iterator_Declaration => 1052,
+ Iir_Kind_Interface_Constant_Declaration => 1069,
+ Iir_Kind_Interface_Variable_Declaration => 1085,
+ Iir_Kind_Interface_Signal_Declaration => 1106,
+ Iir_Kind_Interface_File_Declaration => 1122,
+ Iir_Kind_Interface_Quantity_Declaration => 1138,
+ Iir_Kind_Interface_Terminal_Declaration => 1150,
+ Iir_Kind_Interface_Type_Declaration => 1161,
+ Iir_Kind_Interface_Package_Declaration => 1174,
+ Iir_Kind_Interface_Function_Declaration => 1192,
+ Iir_Kind_Interface_Procedure_Declaration => 1206,
+ Iir_Kind_Anonymous_Signal_Declaration => 1215,
+ Iir_Kind_Signal_Attribute_Declaration => 1218,
+ Iir_Kind_Identity_Operator => 1222,
+ Iir_Kind_Negation_Operator => 1226,
+ Iir_Kind_Absolute_Operator => 1230,
+ Iir_Kind_Not_Operator => 1234,
+ Iir_Kind_Implicit_Condition_Operator => 1238,
+ Iir_Kind_Condition_Operator => 1242,
+ Iir_Kind_Reduction_And_Operator => 1246,
+ Iir_Kind_Reduction_Or_Operator => 1250,
+ Iir_Kind_Reduction_Nand_Operator => 1254,
+ Iir_Kind_Reduction_Nor_Operator => 1258,
+ Iir_Kind_Reduction_Xor_Operator => 1262,
+ Iir_Kind_Reduction_Xnor_Operator => 1266,
+ Iir_Kind_And_Operator => 1271,
+ Iir_Kind_Or_Operator => 1276,
+ Iir_Kind_Nand_Operator => 1281,
+ Iir_Kind_Nor_Operator => 1286,
+ Iir_Kind_Xor_Operator => 1291,
+ Iir_Kind_Xnor_Operator => 1296,
+ Iir_Kind_Equality_Operator => 1301,
+ Iir_Kind_Inequality_Operator => 1306,
+ Iir_Kind_Less_Than_Operator => 1311,
+ Iir_Kind_Less_Than_Or_Equal_Operator => 1316,
+ Iir_Kind_Greater_Than_Operator => 1321,
+ Iir_Kind_Greater_Than_Or_Equal_Operator => 1326,
+ Iir_Kind_Match_Equality_Operator => 1331,
+ Iir_Kind_Match_Inequality_Operator => 1336,
+ Iir_Kind_Match_Less_Than_Operator => 1341,
+ Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1346,
+ Iir_Kind_Match_Greater_Than_Operator => 1351,
+ Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1356,
+ Iir_Kind_Sll_Operator => 1361,
+ Iir_Kind_Sla_Operator => 1366,
+ Iir_Kind_Srl_Operator => 1371,
+ Iir_Kind_Sra_Operator => 1376,
+ Iir_Kind_Rol_Operator => 1381,
+ Iir_Kind_Ror_Operator => 1386,
+ Iir_Kind_Addition_Operator => 1391,
+ Iir_Kind_Substraction_Operator => 1396,
+ Iir_Kind_Concatenation_Operator => 1401,
+ Iir_Kind_Multiplication_Operator => 1406,
+ Iir_Kind_Division_Operator => 1411,
+ Iir_Kind_Modulus_Operator => 1416,
+ Iir_Kind_Remainder_Operator => 1421,
+ Iir_Kind_Exponentiation_Operator => 1426,
+ Iir_Kind_Function_Call => 1434,
+ Iir_Kind_Aggregate => 1441,
+ Iir_Kind_Parenthesis_Expression => 1444,
+ Iir_Kind_Qualified_Expression => 1448,
+ Iir_Kind_Type_Conversion => 1453,
+ Iir_Kind_Allocator_By_Expression => 1458,
+ Iir_Kind_Allocator_By_Subtype => 1464,
+ Iir_Kind_Selected_Element => 1472,
+ Iir_Kind_Dereference => 1477,
+ Iir_Kind_Implicit_Dereference => 1482,
+ Iir_Kind_Slice_Name => 1489,
+ Iir_Kind_Indexed_Name => 1495,
+ Iir_Kind_Psl_Prev => 1501,
+ Iir_Kind_Psl_Stable => 1506,
+ Iir_Kind_Psl_Rose => 1511,
+ Iir_Kind_Psl_Fell => 1516,
+ Iir_Kind_Psl_Expression => 1518,
+ Iir_Kind_Sensitized_Process_Statement => 1539,
+ Iir_Kind_Process_Statement => 1559,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1572,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1585,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1599,
+ Iir_Kind_Concurrent_Assertion_Statement => 1607,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1614,
+ Iir_Kind_Concurrent_Break_Statement => 1622,
+ Iir_Kind_Psl_Assert_Directive => 1635,
+ Iir_Kind_Psl_Assume_Directive => 1646,
+ Iir_Kind_Psl_Cover_Directive => 1658,
+ Iir_Kind_Psl_Restrict_Directive => 1669,
+ Iir_Kind_Block_Statement => 1683,
+ Iir_Kind_If_Generate_Statement => 1694,
+ Iir_Kind_Case_Generate_Statement => 1703,
+ Iir_Kind_For_Generate_Statement => 1712,
+ Iir_Kind_Component_Instantiation_Statement => 1723,
+ Iir_Kind_Psl_Default_Clock => 1727,
+ Iir_Kind_Generate_Statement_Body => 1738,
+ Iir_Kind_If_Generate_Else_Clause => 1744,
+ Iir_Kind_Simple_Simultaneous_Statement => 1751,
+ Iir_Kind_Simultaneous_Null_Statement => 1755,
+ Iir_Kind_Simultaneous_Procedural_Statement => 1766,
+ Iir_Kind_Simultaneous_Case_Statement => 1775,
+ Iir_Kind_Simultaneous_If_Statement => 1784,
+ Iir_Kind_Simultaneous_Elsif => 1790,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1801,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1812,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1824,
+ Iir_Kind_Signal_Force_Assignment_Statement => 1834,
+ Iir_Kind_Signal_Release_Assignment_Statement => 1843,
+ Iir_Kind_Null_Statement => 1847,
+ Iir_Kind_Assertion_Statement => 1854,
+ Iir_Kind_Report_Statement => 1860,
+ Iir_Kind_Wait_Statement => 1868,
+ Iir_Kind_Variable_Assignment_Statement => 1875,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1882,
+ Iir_Kind_Return_Statement => 1888,
+ Iir_Kind_For_Loop_Statement => 1899,
+ Iir_Kind_While_Loop_Statement => 1910,
+ Iir_Kind_Next_Statement => 1917,
+ Iir_Kind_Exit_Statement => 1924,
+ Iir_Kind_Case_Statement => 1932,
+ Iir_Kind_Procedure_Call_Statement => 1938,
+ Iir_Kind_Break_Statement => 1945,
+ Iir_Kind_If_Statement => 1955,
+ Iir_Kind_Elsif => 1961,
+ Iir_Kind_Character_Literal => 1969,
+ Iir_Kind_Simple_Name => 1977,
+ Iir_Kind_Selected_Name => 1986,
+ Iir_Kind_Operator_Symbol => 1992,
+ Iir_Kind_Reference_Name => 1997,
+ Iir_Kind_External_Constant_Name => 2006,
+ Iir_Kind_External_Signal_Name => 2015,
+ Iir_Kind_External_Variable_Name => 2025,
+ Iir_Kind_Selected_By_All_Name => 2031,
+ Iir_Kind_Parenthesis_Name => 2036,
+ Iir_Kind_Package_Pathname => 2040,
+ Iir_Kind_Absolute_Pathname => 2041,
+ Iir_Kind_Relative_Pathname => 2042,
+ Iir_Kind_Pathname_Element => 2047,
+ Iir_Kind_Base_Attribute => 2049,
+ Iir_Kind_Subtype_Attribute => 2054,
+ Iir_Kind_Element_Attribute => 2059,
+ Iir_Kind_Across_Attribute => 2064,
+ Iir_Kind_Through_Attribute => 2069,
+ Iir_Kind_Nature_Reference_Attribute => 2073,
+ Iir_Kind_Left_Type_Attribute => 2078,
+ Iir_Kind_Right_Type_Attribute => 2083,
+ Iir_Kind_High_Type_Attribute => 2088,
+ Iir_Kind_Low_Type_Attribute => 2093,
+ Iir_Kind_Ascending_Type_Attribute => 2098,
+ Iir_Kind_Image_Attribute => 2104,
+ Iir_Kind_Value_Attribute => 2110,
+ Iir_Kind_Pos_Attribute => 2116,
+ Iir_Kind_Val_Attribute => 2122,
+ Iir_Kind_Succ_Attribute => 2128,
+ Iir_Kind_Pred_Attribute => 2134,
+ Iir_Kind_Leftof_Attribute => 2140,
+ Iir_Kind_Rightof_Attribute => 2146,
+ Iir_Kind_Signal_Slew_Attribute => 2154,
+ Iir_Kind_Quantity_Slew_Attribute => 2162,
+ Iir_Kind_Ramp_Attribute => 2170,
+ Iir_Kind_Zoh_Attribute => 2178,
+ Iir_Kind_Ltf_Attribute => 2186,
+ Iir_Kind_Ztf_Attribute => 2196,
+ Iir_Kind_Dot_Attribute => 2203,
+ Iir_Kind_Integ_Attribute => 2210,
+ Iir_Kind_Above_Attribute => 2218,
+ Iir_Kind_Quantity_Delayed_Attribute => 2226,
+ Iir_Kind_Delayed_Attribute => 2235,
+ Iir_Kind_Stable_Attribute => 2244,
+ Iir_Kind_Quiet_Attribute => 2253,
+ Iir_Kind_Transaction_Attribute => 2262,
+ Iir_Kind_Event_Attribute => 2266,
+ Iir_Kind_Active_Attribute => 2270,
+ Iir_Kind_Last_Event_Attribute => 2274,
+ Iir_Kind_Last_Active_Attribute => 2278,
+ Iir_Kind_Last_Value_Attribute => 2282,
+ Iir_Kind_Driving_Attribute => 2286,
+ Iir_Kind_Driving_Value_Attribute => 2290,
+ Iir_Kind_Behavior_Attribute => 2290,
+ Iir_Kind_Structure_Attribute => 2290,
+ Iir_Kind_Simple_Name_Attribute => 2297,
+ Iir_Kind_Instance_Name_Attribute => 2302,
+ Iir_Kind_Path_Name_Attribute => 2307,
+ Iir_Kind_Left_Array_Attribute => 2314,
+ Iir_Kind_Right_Array_Attribute => 2321,
+ Iir_Kind_High_Array_Attribute => 2328,
+ Iir_Kind_Low_Array_Attribute => 2335,
+ Iir_Kind_Length_Array_Attribute => 2342,
+ Iir_Kind_Ascending_Array_Attribute => 2349,
+ Iir_Kind_Range_Array_Attribute => 2356,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2363,
+ Iir_Kind_Attribute_Name => 2372
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -5597,6 +5609,10 @@ package body Vhdl.Nodes_Meta is
return Get_Only_Characters_Flag (N);
when Field_Is_Character_Type =>
return Get_Is_Character_Type (N);
+ when Field_Has_Array_Constraint_Flag =>
+ return Get_Has_Array_Constraint_Flag (N);
+ when Field_Has_Element_Constraint_Flag =>
+ return Get_Has_Element_Constraint_Flag (N);
when Field_Has_Force_Mode =>
return Get_Has_Force_Mode (N);
when Field_Postponed_Flag =>
@@ -5743,6 +5759,10 @@ package body Vhdl.Nodes_Meta is
Set_Only_Characters_Flag (N, V);
when Field_Is_Character_Type =>
Set_Is_Character_Type (N, V);
+ when Field_Has_Array_Constraint_Flag =>
+ Set_Has_Array_Constraint_Flag (N, V);
+ when Field_Has_Element_Constraint_Flag =>
+ Set_Has_Element_Constraint_Flag (N, V);
when Field_Has_Force_Mode =>
Set_Has_Force_Mode (N, V);
when Field_Postponed_Flag =>
@@ -9947,6 +9967,16 @@ package body Vhdl.Nodes_Meta is
end case;
end Has_Array_Element_Constraint;
+ function Has_Has_Array_Constraint_Flag (K : Iir_Kind) return Boolean is
+ begin
+ return K = Iir_Kind_Array_Subtype_Definition;
+ end Has_Has_Array_Constraint_Flag;
+
+ function Has_Has_Element_Constraint_Flag (K : Iir_Kind) return Boolean is
+ begin
+ return K = Iir_Kind_Array_Subtype_Definition;
+ end Has_Has_Element_Constraint_Flag;
+
function Has_Elements_Declaration_List (K : Iir_Kind) return Boolean is
begin
case K is
diff --git a/src/vhdl/vhdl-nodes_meta.ads b/src/vhdl/vhdl-nodes_meta.ads
index cbfe0ac3b..2b00e64f0 100644
--- a/src/vhdl/vhdl-nodes_meta.ads
+++ b/src/vhdl/vhdl-nodes_meta.ads
@@ -243,6 +243,8 @@ package Vhdl.Nodes_Meta is
Field_Element_Subnature,
Field_Index_Constraint_List,
Field_Array_Element_Constraint,
+ Field_Has_Array_Constraint_Flag,
+ Field_Has_Element_Constraint_Flag,
Field_Elements_Declaration_List,
Field_Owned_Elements_Chain,
Field_Designated_Type,
@@ -827,6 +829,8 @@ package Vhdl.Nodes_Meta is
function Has_Element_Subnature (K : Iir_Kind) return Boolean;
function Has_Index_Constraint_List (K : Iir_Kind) return Boolean;
function Has_Array_Element_Constraint (K : Iir_Kind) return Boolean;
+ function Has_Has_Array_Constraint_Flag (K : Iir_Kind) return Boolean;
+ function Has_Has_Element_Constraint_Flag (K : Iir_Kind) return Boolean;
function Has_Elements_Declaration_List (K : Iir_Kind) return Boolean;
function Has_Owned_Elements_Chain (K : Iir_Kind) return Boolean;
function Has_Designated_Type (K : Iir_Kind) return Boolean;
diff --git a/src/vhdl/vhdl-parse.adb b/src/vhdl/vhdl-parse.adb
index b67545779..594e47384 100644
--- a/src/vhdl/vhdl-parse.adb
+++ b/src/vhdl/vhdl-parse.adb
@@ -3220,6 +3220,7 @@ package body Vhdl.Parse is
-- Index_constraint.
Set_Location (Def);
Set_Index_Constraint_Flag (Def, True);
+ Set_Has_Array_Constraint_Flag (Def, True);
-- Eat '('.
Scan;
@@ -3249,6 +3250,7 @@ package body Vhdl.Parse is
El_Def := Create_Iir (Iir_Kind_Array_Subtype_Definition);
Parse_Element_Constraint (El_Def);
Set_Array_Element_Constraint (Def, El_Def);
+ Set_Has_Element_Constraint_Flag (Def, True);
end if;
end Parse_Element_Constraint;
diff --git a/src/vhdl/vhdl-prints.adb b/src/vhdl/vhdl-prints.adb
index 0fc8ed3da..852d6dfcb 100644
--- a/src/vhdl/vhdl-prints.adb
+++ b/src/vhdl/vhdl-prints.adb
@@ -516,27 +516,27 @@ package body Vhdl.Prints is
end Disp_Array_Sub_Definition_Indexes;
procedure Disp_Array_Element_Constraint
- (Ctxt : in out Ctxt_Class; Def : Iir; Type_Mark : Iir)
- is
- Def_El : constant Iir := Get_Element_Subtype (Def);
- Tm_El : constant Iir := Get_Element_Subtype (Type_Mark);
- Has_Index : constant Boolean := Get_Index_Constraint_Flag (Def);
- Has_Own_Element_Subtype : constant Boolean := Def_El /= Tm_El;
+ (Ctxt : in out Ctxt_Class; Def : Iir; Type_Mark : Iir) is
begin
- if not Has_Index and not Has_Own_Element_Subtype then
+ if not Get_Has_Array_Constraint_Flag (Def)
+ and then not Get_Has_Element_Constraint_Flag (Def)
+ then
return;
end if;
- if Get_Constraint_State (Type_Mark) /= Fully_Constrained
- and then Has_Index
- then
- Disp_Array_Sub_Definition_Indexes (Ctxt, Def);
+ if Get_Has_Array_Constraint_Flag (Def) then
+ if Get_Index_Constraint_List (Def) = Null_Iir_Flist then
+ Disp_Token (Ctxt, Tok_Left_Paren);
+ Disp_Token (Ctxt, Tok_Open);
+ Disp_Token (Ctxt, Tok_Right_Paren);
+ else
+ Disp_Array_Sub_Definition_Indexes (Ctxt, Def);
+ end if;
end if;
- if Has_Own_Element_Subtype
- and then Get_Kind (Def_El) in Iir_Kinds_Composite_Type_Definition
- then
- Disp_Element_Constraint (Ctxt, Def_El, Tm_El);
+ if Get_Has_Element_Constraint_Flag (Def) then
+ Disp_Element_Constraint (Ctxt, Get_Array_Element_Constraint (Def),
+ Get_Element_Subtype (Type_Mark));
end if;
end Disp_Array_Element_Constraint;
@@ -4970,6 +4970,7 @@ package body Vhdl.Prints is
-- A space after a keyword.
if Tok /= Tok_Semi_Colon
and Tok /= Tok_Dot
+ and Tok /= Tok_Right_Paren
then
return True;
end if;
@@ -5003,7 +5004,10 @@ package body Vhdl.Prints is
-- Always a space after ',', ':', ':='
return True;
elsif Tok = Tok_Left_Paren then
- if Prev_Tok /= Tok_Tick and Prev_Tok /= Tok_Left_Paren then
+ if Prev_Tok /= Tok_Tick
+ and Prev_Tok /= Tok_Left_Paren
+ and Prev_Tok /= Tok_Right_Paren
+ then
-- A space before '('.
return True;
end if;
diff --git a/src/vhdl/vhdl-sem_types.adb b/src/vhdl/vhdl-sem_types.adb
index 3a60b18eb..400438d41 100644
--- a/src/vhdl/vhdl-sem_types.adb
+++ b/src/vhdl/vhdl-sem_types.adb
@@ -1924,6 +1924,7 @@ package body Vhdl.Sem_Types is
Res := Create_Iir (Iir_Kind_Array_Subtype_Definition);
Location_Copy (Res, Name);
+ Set_Has_Array_Constraint_Flag (Res, True);
Chain := Get_Association_Chain (Name);
if Get_Kind (Chain) = Iir_Kind_Association_Element_Open then
if Get_Chain (Chain) /= Null_Iir then
@@ -1950,6 +1951,7 @@ package body Vhdl.Sem_Types is
when Iir_Kinds_Array_Type_Definition =>
Set_Array_Element_Constraint
(Res, Reparse_As_Array_Constraint (Def, Def_El_Type));
+ Set_Has_Element_Constraint_Flag (Res, True);
when others =>
Error_Kind ("reparse_as_array_constraint", Def_El_Type);
end case;