diff options
author | Tristan Gingold <tgingold@free.fr> | 2020-04-20 08:17:28 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2020-04-20 12:19:49 +0200 |
commit | 5c1bfbbdd17fa628a1809520be3b1f276e18c02d (patch) | |
tree | 0b896bb3cef5f5beb4082f075a65cadd5194b43c /src | |
parent | cb72a1834f160d95d026b7e466886fd95fd82146 (diff) | |
download | ghdl-5c1bfbbdd17fa628a1809520be3b1f276e18c02d.tar.gz ghdl-5c1bfbbdd17fa628a1809520be3b1f276e18c02d.tar.bz2 ghdl-5c1bfbbdd17fa628a1809520be3b1f276e18c02d.zip |
vhdl: allow attribute specifications in protected types. For #1252
Diffstat (limited to 'src')
-rw-r--r-- | src/vhdl/translate/trans-chap3.adb | 4 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.adb | 44 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes.ads | 92 | ||||
-rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 508 | ||||
-rw-r--r-- | src/vhdl/vhdl-sem_specs.adb | 3 |
5 files changed, 332 insertions, 319 deletions
diff --git a/src/vhdl/translate/trans-chap3.adb b/src/vhdl/translate/trans-chap3.adb index ad6207658..5583ee7b9 100644 --- a/src/vhdl/translate/trans-chap3.adb +++ b/src/vhdl/translate/trans-chap3.adb @@ -1749,8 +1749,10 @@ package body Trans.Chap3 is if Get_Info (El) /= null then Chap2.Translate_Subprogram_Declaration (El); end if; + when Iir_Kind_Attribute_Specification => + null; when others => - Error_Kind ("translate_protected_type_subprograms", El); + Error_Kind ("translate_protected_type_subprograms_spec", El); end case; El := Get_Chain (El); end loop; diff --git a/src/vhdl/vhdl-nodes.adb b/src/vhdl/vhdl-nodes.adb index 44d5eb157..c38a8950a 100644 --- a/src/vhdl/vhdl-nodes.adb +++ b/src/vhdl/vhdl-nodes.adb @@ -2496,7 +2496,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Attribute_Value_Chain (Get_Kind (Target)), "no field Attribute_Value_Chain"); - return Get_Field4 (Target); + return Get_Field5 (Target); end Get_Attribute_Value_Chain; procedure Set_Attribute_Value_Chain (Target : Iir; Chain : Iir) is @@ -2504,7 +2504,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Attribute_Value_Chain (Get_Kind (Target)), "no field Attribute_Value_Chain"); - Set_Field4 (Target, Chain); + Set_Field5 (Target, Chain); end Set_Attribute_Value_Chain; function Get_Spec_Chain (Target : Iir) return Iir is @@ -2576,7 +2576,7 @@ package body Vhdl.Nodes is pragma Assert (Package_Body /= Null_Iir); pragma Assert (Has_Package (Get_Kind (Package_Body)), "no field Package"); - return Get_Field5 (Package_Body); + return Get_Field4 (Package_Body); end Get_Package; procedure Set_Package (Package_Body : Iir; Decl : Iir) is @@ -2584,7 +2584,7 @@ package body Vhdl.Nodes is pragma Assert (Package_Body /= Null_Iir); pragma Assert (Has_Package (Get_Kind (Package_Body)), "no field Package"); - Set_Field5 (Package_Body, Decl); + Set_Field4 (Package_Body, Decl); end Set_Package; function Get_Package_Body (Pkg : Iir) return Iir is @@ -2592,7 +2592,7 @@ package body Vhdl.Nodes is pragma Assert (Pkg /= Null_Iir); pragma Assert (Has_Package_Body (Get_Kind (Pkg)), "no field Package_Body"); - return Get_Field5 (Pkg); + return Get_Field4 (Pkg); end Get_Package_Body; procedure Set_Package_Body (Pkg : Iir; Decl : Iir) is @@ -2600,7 +2600,7 @@ package body Vhdl.Nodes is pragma Assert (Pkg /= Null_Iir); pragma Assert (Has_Package_Body (Get_Kind (Pkg)), "no field Package_Body"); - Set_Field5 (Pkg, Decl); + Set_Field4 (Pkg, Decl); end Set_Package_Body; function Get_Instance_Package_Body (Pkg : Iir) return Iir is @@ -2608,7 +2608,7 @@ package body Vhdl.Nodes is pragma Assert (Pkg /= Null_Iir); pragma Assert (Has_Instance_Package_Body (Get_Kind (Pkg)), "no field Instance_Package_Body"); - return Get_Field5 (Pkg); + return Get_Field4 (Pkg); end Get_Instance_Package_Body; procedure Set_Instance_Package_Body (Pkg : Iir; Decl : Iir) is @@ -2616,7 +2616,7 @@ package body Vhdl.Nodes is pragma Assert (Pkg /= Null_Iir); pragma Assert (Has_Instance_Package_Body (Get_Kind (Pkg)), "no field Instance_Package_Body"); - Set_Field5 (Pkg, Decl); + Set_Field4 (Pkg, Decl); end Set_Instance_Package_Body; function Get_Need_Body (Decl : Iir_Package_Declaration) return Boolean is @@ -2704,7 +2704,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - return Get_Field5 (Vunit); + return Get_Field4 (Vunit); end Get_Vunit_Item_Chain; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir) is @@ -2712,7 +2712,7 @@ package body Vhdl.Nodes is pragma Assert (Vunit /= Null_Iir); pragma Assert (Has_Vunit_Item_Chain (Get_Kind (Vunit)), "no field Vunit_Item_Chain"); - Set_Field5 (Vunit, Chain); + Set_Field4 (Vunit, Chain); end Set_Vunit_Item_Chain; function Get_Bound_Vunit_Chain (Unit : Iir) return Iir is @@ -2736,7 +2736,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Block_Configuration (Get_Kind (Target)), "no field Block_Configuration"); - return Get_Field5 (Target); + return Get_Field4 (Target); end Get_Block_Configuration; procedure Set_Block_Configuration (Target : Iir; Block : Iir) is @@ -2744,7 +2744,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Block_Configuration (Get_Kind (Target)), "no field Block_Configuration"); - Set_Field5 (Target, Block); + Set_Field4 (Target, Block); end Set_Block_Configuration; function Get_Concurrent_Statement_Chain (Target : Iir) return Iir is @@ -2752,7 +2752,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Concurrent_Statement_Chain (Get_Kind (Target)), "no field Concurrent_Statement_Chain"); - return Get_Field5 (Target); + return Get_Field4 (Target); end Get_Concurrent_Statement_Chain; procedure Set_Concurrent_Statement_Chain (Target : Iir; First : Iir) is @@ -2760,7 +2760,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Concurrent_Statement_Chain (Get_Kind (Target)), "no field Concurrent_Statement_Chain"); - Set_Field5 (Target, First); + Set_Field4 (Target, First); end Set_Concurrent_Statement_Chain; function Get_Chain (Target : Iir) return Iir is @@ -3094,7 +3094,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Sequential_Statement_Chain (Get_Kind (Target)), "no field Sequential_Statement_Chain"); - return Get_Field5 (Target); + return Get_Field4 (Target); end Get_Sequential_Statement_Chain; procedure Set_Sequential_Statement_Chain (Target : Iir; Chain : Iir) is @@ -3102,7 +3102,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Sequential_Statement_Chain (Get_Kind (Target)), "no field Sequential_Statement_Chain"); - Set_Field5 (Target, Chain); + Set_Field4 (Target, Chain); end Set_Sequential_Statement_Chain; function Get_Simultaneous_Statement_Chain (Target : Iir) return Iir is @@ -3110,7 +3110,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Simultaneous_Statement_Chain (Get_Kind (Target)), "no field Simultaneous_Statement_Chain"); - return Get_Field5 (Target); + return Get_Field4 (Target); end Get_Simultaneous_Statement_Chain; procedure Set_Simultaneous_Statement_Chain (Target : Iir; Chain : Iir) is @@ -3118,7 +3118,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Simultaneous_Statement_Chain (Get_Kind (Target)), "no field Simultaneous_Statement_Chain"); - Set_Field5 (Target, Chain); + Set_Field4 (Target, Chain); end Set_Simultaneous_Statement_Chain; function Get_Subprogram_Body (Target : Iir) return Iir is @@ -5440,7 +5440,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Else_Clause (Get_Kind (Target)), "no field Else_Clause"); - return Get_Field4 (Target); + return Get_Field5 (Target); end Get_Else_Clause; procedure Set_Else_Clause (Target : Iir; Clause : Iir) is @@ -5448,7 +5448,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Else_Clause (Get_Kind (Target)), "no field Else_Clause"); - Set_Field4 (Target, Clause); + Set_Field5 (Target, Clause); end Set_Else_Clause; function Get_Parameter_Specification (Target : Iir) return Iir is @@ -5536,7 +5536,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Component_Name (Get_Kind (Target)), "no field Component_Name"); - return Get_Field4 (Target); + return Get_Field5 (Target); end Get_Component_Name; procedure Set_Component_Name (Target : Iir; Name : Iir) is @@ -5544,7 +5544,7 @@ package body Vhdl.Nodes is pragma Assert (Target /= Null_Iir); pragma Assert (Has_Component_Name (Get_Kind (Target)), "no field Component_Name"); - Set_Field4 (Target, Name); + Set_Field5 (Target, Name); end Set_Component_Name; function Get_Instantiation_List (Target : Iir) return Iir_Flist is diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 592a7da2a..56407a607 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -687,13 +687,13 @@ package Vhdl.Nodes is -- The declaration containing this type declaration. -- Get/Set_Parent (Field0) -- - -- Get/Set_Component_Name (Field4) + -- Get/Set_Component_Name (Field5) -- -- A list, list_others or list_all. -- Get/Set_Instantiation_List (Field1) -- -- Only for Iir_Kind_Component_Configuration: - -- Get/Set_Block_Configuration (Field5) + -- Get/Set_Block_Configuration (Field4) -- -- Get/Set_Binding_Indication (Field3) -- @@ -879,9 +879,9 @@ package Vhdl.Nodes is -- -- Get/Set_Declaration_Chain (Field1) -- - -- Get/Set_Concurrent_Statement_Chain (Field5) + -- Get/Set_Concurrent_Statement_Chain (Field4) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- Get/Set_Bound_Vunit_Chain (Field8) -- @@ -907,9 +907,9 @@ package Vhdl.Nodes is -- -- Get/Set_Identifier (Field3) -- - -- Get/Set_Concurrent_Statement_Chain (Field5) + -- Get/Set_Concurrent_Statement_Chain (Field4) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- The default configuration created by canon. This is a design unit. -- Get/Set_Default_Configuration_Declaration (Field6) @@ -938,9 +938,9 @@ package Vhdl.Nodes is -- -- Get/Set_Identifier (Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Block_Configuration (Field5) + -- Get/Set_Block_Configuration (Field4) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -968,10 +968,10 @@ package Vhdl.Nodes is -- For nested packages -- Get/Set_Chain (Field2) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- The package body (not the unit). - -- Get/Set_Package_Body (Field5) + -- Get/Set_Package_Body (Field4) -- -- Get/Set_Package_Origin (Field7) -- @@ -1012,10 +1012,10 @@ package Vhdl.Nodes is -- -- Get/Set_Identifier (Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- The corresponding package declaration. - -- Get/Set_Package (Field5) + -- Get/Set_Package (Field4) -- -- Get/Set_End_Has_Reserved_Id (Flag8) -- @@ -1046,10 +1046,10 @@ package Vhdl.Nodes is -- For nested packages -- Get/Set_Chain (Field2) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- For macro-expanded packages: the body. - -- Get/Set_Instance_Package_Body (Field5) + -- Get/Set_Instance_Package_Body (Field4) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -1086,9 +1086,9 @@ package Vhdl.Nodes is -- -- Get/Set_Inherit_Spec_Chain (Field2) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Vunit_Item_Chain (Field5) + -- Get/Set_Vunit_Item_Chain (Field4) -- -- Only for Iir_Kind_Vunit_Declaration: -- Get/Set_Bound_Vunit_Chain (Field8) @@ -1474,7 +1474,7 @@ package Vhdl.Nodes is -- -- Get/Set_Chain (Field2) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -1606,9 +1606,9 @@ package Vhdl.Nodes is -- -- Get/Set_Impure_Depth (Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Sequential_Statement_Chain (Field4) -- -- Get/Set_Subprogram_Specification (Field6) -- @@ -2620,6 +2620,8 @@ package Vhdl.Nodes is -- -- Get/Set_Base_Type (Field4) -- + -- Get/Set_Attribute_Value_Chain (Field5) + -- -- Get/Set_Type_Staticness (State1) -- -- Get/Set_Resolved_Flag (Flag1) @@ -2642,6 +2644,8 @@ package Vhdl.Nodes is -- -- Get/Set_Protected_Type_Declaration (Field4) -- + -- Get/Set_Attribute_Value_Chain (Field5) + -- -- Get/Set_End_Has_Reserved_Id (Flag8) -- -- Get/Set_End_Has_Identifier (Flag9) @@ -3161,13 +3165,13 @@ package Vhdl.Nodes is -- Get/Set_Label (Field3) -- Get/Set_Identifier (Alias Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- The concurrent statement at the origin of that process. This is -- Null_Iir for a user process. -- Get/Set_Process_Origin (Field8) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Sequential_Statement_Chain (Field4) -- -- Only for Iir_Kind_Sensitized_Process_Statement: -- Get/Set_Sensitivity_List (Field6) @@ -3352,9 +3356,9 @@ package Vhdl.Nodes is -- Get/Set_Label (Field3) -- Get/Set_Identifier (Alias Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Concurrent_Statement_Chain (Field5) + -- Get/Set_Concurrent_Statement_Chain (Field4) -- -- Get/Set_Block_Block_Configuration (Field6) -- @@ -3387,9 +3391,9 @@ package Vhdl.Nodes is -- Get/Set_Alternative_Label (Field3) -- Get/Set_Identifier (Alias Field3) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Attribute_Value_Chain (Field5) -- - -- Get/Set_Concurrent_Statement_Chain (Field5) + -- Get/Set_Concurrent_Statement_Chain (Field4) -- -- Get/Set_Is_Within_Flag (Flag5) -- @@ -3534,9 +3538,9 @@ package Vhdl.Nodes is -- -- Get/Set_Declaration_Chain (Field1) -- - -- Get/Set_Attribute_Value_Chain (Field4) + -- Get/Set_Sequential_Statement_Chain (Field4) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Attribute_Value_Chain (Field5) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -3572,9 +3576,9 @@ package Vhdl.Nodes is -- -- Get/Set_Condition (Field1) -- - -- Get/Set_Simultaneous_Statement_Chain (Field5) + -- Get/Set_Simultaneous_Statement_Chain (Field4) -- - -- Get/Set_Else_Clause (Field4) + -- Get/Set_Else_Clause (Field5) -- -- Only for Iir_Kind_Simultaneous_If_Statement: -- Get/Set_Chain (Field2) @@ -3638,10 +3642,10 @@ package Vhdl.Nodes is -- clause. -- Get/Set_Condition (Field1) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Sequential_Statement_Chain (Field4) -- -- Must be an Iir_kind_elsif node, or NULL for no more elsif clauses. - -- Get/Set_Else_Clause (Field4) + -- Get/Set_Else_Clause (Field5) -- -- Only for Iir_Kind_If_Statement: -- Get/Set_Chain (Field2) @@ -3683,7 +3687,7 @@ package Vhdl.Nodes is -- Get/Set_Label (Field3) -- Get/Set_Identifier (Alias Field3) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Sequential_Statement_Chain (Field4) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -3708,7 +3712,7 @@ package Vhdl.Nodes is -- Get/Set_Label (Field3) -- Get/Set_Identifier (Alias Field3) -- - -- Get/Set_Sequential_Statement_Chain (Field5) + -- Get/Set_Sequential_Statement_Chain (Field4) -- -- Get/Set_Visible_Flag (Flag4) -- @@ -7470,7 +7474,7 @@ package Vhdl.Nodes is -- To be used with Get/Set_Value_Chain. -- There is no order, therefore, a new attribute value may be always -- prepended. - -- Field: Field4 Ref + -- Field: Field5 Ref function Get_Attribute_Value_Chain (Target : Iir) return Iir; procedure Set_Attribute_Value_Chain (Target : Iir; Chain : Iir); @@ -7498,17 +7502,17 @@ package Vhdl.Nodes is procedure Set_Entity_Name (Arch : Iir; Entity : Iir); -- The package declaration corresponding to the body. - -- Field: Field5 Ref + -- Field: Field4 Ref function Get_Package (Package_Body : Iir) return Iir; procedure Set_Package (Package_Body : Iir; Decl : Iir); -- The package body corresponding to the package declaration. - -- Field: Field5 Forward_Ref + -- Field: Field4 Forward_Ref function Get_Package_Body (Pkg : Iir) return Iir; procedure Set_Package_Body (Pkg : Iir; Decl : Iir); -- The package body corresponding to the package declaration. - -- Field: Field5 + -- Field: Field4 function Get_Instance_Package_Body (Pkg : Iir) return Iir; procedure Set_Instance_Package_Body (Pkg : Iir; Decl : Iir); @@ -7532,7 +7536,7 @@ package Vhdl.Nodes is function Get_Inherit_Spec_Chain (Vunit : Iir) return Iir; procedure Set_Inherit_Spec_Chain (Vunit : Iir; Chain : Iir); - -- Field: Field5 Chain + -- Field: Field4 Chain function Get_Vunit_Item_Chain (Vunit : Iir) return Iir; procedure Set_Vunit_Item_Chain (Vunit : Iir; Chain : Iir); @@ -7541,11 +7545,11 @@ package Vhdl.Nodes is function Get_Bound_Vunit_Chain (Unit : Iir) return Iir; procedure Set_Bound_Vunit_Chain (Unit : Iir; Vunit : Iir); - -- Field: Field5 + -- Field: Field4 function Get_Block_Configuration (Target : Iir) return Iir; procedure Set_Block_Configuration (Target : Iir; Block : Iir); - -- Field: Field5 Chain + -- Field: Field4 Chain function Get_Concurrent_Statement_Chain (Target : Iir) return Iir; procedure Set_Concurrent_Statement_Chain (Target : Iir; First : Iir); @@ -7643,11 +7647,11 @@ package Vhdl.Nodes is function Get_Subprogram_Specification (Target : Iir) return Iir; procedure Set_Subprogram_Specification (Target : Iir; Spec : Iir); - -- Field: Field5 Chain + -- Field: Field4 Chain function Get_Sequential_Statement_Chain (Target : Iir) return Iir; procedure Set_Sequential_Statement_Chain (Target : Iir; Chain : Iir); - -- Field: Field5 Chain + -- Field: Field4 Chain function Get_Simultaneous_Statement_Chain (Target : Iir) return Iir; procedure Set_Simultaneous_Statement_Chain (Target : Iir; Chain : Iir); @@ -8395,7 +8399,7 @@ package Vhdl.Nodes is function Get_Condition (Target : Iir) return Iir; procedure Set_Condition (Target : Iir; Condition : Iir); - -- Field: Field4 + -- Field: Field5 function Get_Else_Clause (Target : Iir) return Iir; procedure Set_Else_Clause (Target : Iir; Clause : Iir); @@ -8427,7 +8431,7 @@ package Vhdl.Nodes is -- Component name for a component_configuration or -- a configuration_specification. - -- Field: Field4 + -- Field: Field5 function Get_Component_Name (Target : Iir) return Iir; procedure Set_Component_Name (Target : Iir; Name : Iir); diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index 0b4987502..cce8999d6 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -2836,6 +2836,7 @@ package body Vhdl.Nodes_Meta is Field_Protected_Type_Body, Field_Type_Declarator, Field_Base_Type, + Field_Attribute_Value_Chain, -- Iir_Kind_Record_Type_Definition Field_Resolved_Flag, Field_Is_Ref, @@ -3008,6 +3009,7 @@ package body Vhdl.Nodes_Meta is Field_Declaration_Chain, Field_Chain, Field_Protected_Type_Declaration, + Field_Attribute_Value_Chain, -- Iir_Kind_Wildcard_Type_Definition Field_Resolved_Flag, Field_Signal_Type_Flag, @@ -4389,8 +4391,8 @@ package body Vhdl.Nodes_Meta is Field_Parent, Field_Chain, Field_Declaration_Chain, - Field_Attribute_Value_Chain, Field_Sequential_Statement_Chain, + Field_Attribute_Value_Chain, -- Iir_Kind_Simultaneous_Case_Statement Field_Label, Field_Visible_Flag, @@ -5126,256 +5128,256 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Incomplete_Type_Definition => 294, Iir_Kind_Interface_Type_Definition => 301, Iir_Kind_File_Type_Definition => 308, - Iir_Kind_Protected_Type_Declaration => 317, - Iir_Kind_Record_Type_Definition => 328, - Iir_Kind_Array_Type_Definition => 340, - Iir_Kind_Array_Subtype_Definition => 355, - Iir_Kind_Record_Subtype_Definition => 368, - Iir_Kind_Access_Subtype_Definition => 376, - Iir_Kind_Physical_Subtype_Definition => 386, - Iir_Kind_Floating_Subtype_Definition => 397, - Iir_Kind_Integer_Subtype_Definition => 407, - Iir_Kind_Enumeration_Subtype_Definition => 417, - Iir_Kind_Enumeration_Type_Definition => 429, - Iir_Kind_Integer_Type_Definition => 438, - Iir_Kind_Floating_Type_Definition => 447, - Iir_Kind_Physical_Type_Definition => 459, - Iir_Kind_Range_Expression => 467, - Iir_Kind_Protected_Type_Body => 474, - Iir_Kind_Wildcard_Type_Definition => 479, - Iir_Kind_Subtype_Definition => 486, - Iir_Kind_Scalar_Nature_Definition => 494, - Iir_Kind_Record_Nature_Definition => 507, - Iir_Kind_Array_Nature_Definition => 521, - Iir_Kind_Array_Subnature_Definition => 536, - Iir_Kind_Overload_List => 537, - Iir_Kind_Entity_Declaration => 550, - Iir_Kind_Configuration_Declaration => 559, - Iir_Kind_Context_Declaration => 565, - Iir_Kind_Package_Declaration => 580, - Iir_Kind_Package_Instantiation_Declaration => 594, - Iir_Kind_Vmode_Declaration => 605, - Iir_Kind_Vprop_Declaration => 616, - Iir_Kind_Vunit_Declaration => 628, - Iir_Kind_Package_Body => 636, - Iir_Kind_Architecture_Body => 649, - Iir_Kind_Type_Declaration => 656, - Iir_Kind_Anonymous_Type_Declaration => 662, - Iir_Kind_Subtype_Declaration => 669, - Iir_Kind_Nature_Declaration => 675, - Iir_Kind_Subnature_Declaration => 682, - Iir_Kind_Package_Header => 684, - Iir_Kind_Unit_Declaration => 693, - Iir_Kind_Library_Declaration => 701, - Iir_Kind_Component_Declaration => 711, - Iir_Kind_Attribute_Declaration => 718, - Iir_Kind_Group_Template_Declaration => 724, - Iir_Kind_Group_Declaration => 731, - 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_Terminal_Declaration => 865, - Iir_Kind_Object_Alias_Declaration => 876, - Iir_Kind_Free_Quantity_Declaration => 888, - Iir_Kind_Spectrum_Quantity_Declaration => 901, - Iir_Kind_Noise_Quantity_Declaration => 913, - Iir_Kind_Across_Quantity_Declaration => 929, - Iir_Kind_Through_Quantity_Declaration => 945, - Iir_Kind_File_Declaration => 959, - Iir_Kind_Guard_Signal_Declaration => 972, - Iir_Kind_Signal_Declaration => 989, - Iir_Kind_Variable_Declaration => 1002, - Iir_Kind_Constant_Declaration => 1016, - Iir_Kind_Iterator_Declaration => 1027, - Iir_Kind_Interface_Constant_Declaration => 1043, - Iir_Kind_Interface_Variable_Declaration => 1059, - Iir_Kind_Interface_Signal_Declaration => 1080, - Iir_Kind_Interface_File_Declaration => 1096, - Iir_Kind_Interface_Quantity_Declaration => 1112, - Iir_Kind_Interface_Terminal_Declaration => 1124, - Iir_Kind_Interface_Type_Declaration => 1134, - Iir_Kind_Interface_Package_Declaration => 1146, - Iir_Kind_Interface_Function_Declaration => 1163, - Iir_Kind_Interface_Procedure_Declaration => 1176, - Iir_Kind_Anonymous_Signal_Declaration => 1185, - Iir_Kind_Signal_Attribute_Declaration => 1188, - Iir_Kind_Identity_Operator => 1192, - Iir_Kind_Negation_Operator => 1196, - Iir_Kind_Absolute_Operator => 1200, - Iir_Kind_Not_Operator => 1204, - Iir_Kind_Implicit_Condition_Operator => 1208, - Iir_Kind_Condition_Operator => 1212, - Iir_Kind_Reduction_And_Operator => 1216, - Iir_Kind_Reduction_Or_Operator => 1220, - Iir_Kind_Reduction_Nand_Operator => 1224, - Iir_Kind_Reduction_Nor_Operator => 1228, - Iir_Kind_Reduction_Xor_Operator => 1232, - Iir_Kind_Reduction_Xnor_Operator => 1236, - Iir_Kind_And_Operator => 1241, - Iir_Kind_Or_Operator => 1246, - Iir_Kind_Nand_Operator => 1251, - Iir_Kind_Nor_Operator => 1256, - Iir_Kind_Xor_Operator => 1261, - Iir_Kind_Xnor_Operator => 1266, - Iir_Kind_Equality_Operator => 1271, - Iir_Kind_Inequality_Operator => 1276, - Iir_Kind_Less_Than_Operator => 1281, - Iir_Kind_Less_Than_Or_Equal_Operator => 1286, - Iir_Kind_Greater_Than_Operator => 1291, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1296, - Iir_Kind_Match_Equality_Operator => 1301, - Iir_Kind_Match_Inequality_Operator => 1306, - Iir_Kind_Match_Less_Than_Operator => 1311, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1316, - Iir_Kind_Match_Greater_Than_Operator => 1321, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1326, - Iir_Kind_Sll_Operator => 1331, - Iir_Kind_Sla_Operator => 1336, - Iir_Kind_Srl_Operator => 1341, - Iir_Kind_Sra_Operator => 1346, - Iir_Kind_Rol_Operator => 1351, - Iir_Kind_Ror_Operator => 1356, - Iir_Kind_Addition_Operator => 1361, - Iir_Kind_Substraction_Operator => 1366, - Iir_Kind_Concatenation_Operator => 1371, - Iir_Kind_Multiplication_Operator => 1376, - Iir_Kind_Division_Operator => 1381, - Iir_Kind_Modulus_Operator => 1386, - Iir_Kind_Remainder_Operator => 1391, - Iir_Kind_Exponentiation_Operator => 1396, - Iir_Kind_Function_Call => 1404, - Iir_Kind_Aggregate => 1411, - Iir_Kind_Parenthesis_Expression => 1414, - Iir_Kind_Qualified_Expression => 1418, - Iir_Kind_Type_Conversion => 1423, - Iir_Kind_Allocator_By_Expression => 1427, - Iir_Kind_Allocator_By_Subtype => 1432, - Iir_Kind_Selected_Element => 1440, - Iir_Kind_Dereference => 1445, - Iir_Kind_Implicit_Dereference => 1450, - Iir_Kind_Slice_Name => 1457, - Iir_Kind_Indexed_Name => 1463, - Iir_Kind_Psl_Expression => 1465, - Iir_Kind_Sensitized_Process_Statement => 1486, - Iir_Kind_Process_Statement => 1506, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1519, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1532, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1546, - Iir_Kind_Concurrent_Assertion_Statement => 1554, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1561, - Iir_Kind_Concurrent_Break_Statement => 1569, - Iir_Kind_Psl_Assert_Directive => 1582, - Iir_Kind_Psl_Assume_Directive => 1593, - Iir_Kind_Psl_Cover_Directive => 1605, - Iir_Kind_Psl_Restrict_Directive => 1616, - Iir_Kind_Block_Statement => 1630, - Iir_Kind_If_Generate_Statement => 1641, - Iir_Kind_Case_Generate_Statement => 1650, - Iir_Kind_For_Generate_Statement => 1659, - Iir_Kind_Component_Instantiation_Statement => 1670, - Iir_Kind_Psl_Default_Clock => 1674, - Iir_Kind_Generate_Statement_Body => 1685, - Iir_Kind_If_Generate_Else_Clause => 1691, - Iir_Kind_Simple_Simultaneous_Statement => 1698, - Iir_Kind_Simultaneous_Null_Statement => 1702, - Iir_Kind_Simultaneous_Procedural_Statement => 1713, - Iir_Kind_Simultaneous_Case_Statement => 1722, - Iir_Kind_Simultaneous_If_Statement => 1731, - Iir_Kind_Simultaneous_Elsif => 1737, - Iir_Kind_Simple_Signal_Assignment_Statement => 1748, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1759, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1771, - Iir_Kind_Null_Statement => 1775, - Iir_Kind_Assertion_Statement => 1782, - Iir_Kind_Report_Statement => 1788, - Iir_Kind_Wait_Statement => 1796, - Iir_Kind_Variable_Assignment_Statement => 1803, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1810, - Iir_Kind_Return_Statement => 1816, - Iir_Kind_For_Loop_Statement => 1827, - Iir_Kind_While_Loop_Statement => 1838, - Iir_Kind_Next_Statement => 1845, - Iir_Kind_Exit_Statement => 1852, - Iir_Kind_Case_Statement => 1860, - Iir_Kind_Procedure_Call_Statement => 1866, - Iir_Kind_Break_Statement => 1873, - Iir_Kind_If_Statement => 1883, - Iir_Kind_Elsif => 1889, - Iir_Kind_Character_Literal => 1897, - Iir_Kind_Simple_Name => 1905, - Iir_Kind_Selected_Name => 1914, - Iir_Kind_Operator_Symbol => 1920, - Iir_Kind_Reference_Name => 1925, - Iir_Kind_External_Constant_Name => 1933, - Iir_Kind_External_Signal_Name => 1941, - Iir_Kind_External_Variable_Name => 1950, - Iir_Kind_Selected_By_All_Name => 1956, - Iir_Kind_Parenthesis_Name => 1961, - Iir_Kind_Package_Pathname => 1965, - Iir_Kind_Absolute_Pathname => 1966, - Iir_Kind_Relative_Pathname => 1967, - Iir_Kind_Pathname_Element => 1972, - Iir_Kind_Base_Attribute => 1974, - Iir_Kind_Subtype_Attribute => 1979, - Iir_Kind_Element_Attribute => 1984, - Iir_Kind_Across_Attribute => 1989, - Iir_Kind_Through_Attribute => 1994, - Iir_Kind_Nature_Reference_Attribute => 1998, - Iir_Kind_Left_Type_Attribute => 2003, - Iir_Kind_Right_Type_Attribute => 2008, - Iir_Kind_High_Type_Attribute => 2013, - Iir_Kind_Low_Type_Attribute => 2018, - Iir_Kind_Ascending_Type_Attribute => 2023, - Iir_Kind_Image_Attribute => 2029, - Iir_Kind_Value_Attribute => 2035, - Iir_Kind_Pos_Attribute => 2041, - Iir_Kind_Val_Attribute => 2047, - Iir_Kind_Succ_Attribute => 2053, - Iir_Kind_Pred_Attribute => 2059, - Iir_Kind_Leftof_Attribute => 2065, - Iir_Kind_Rightof_Attribute => 2071, - Iir_Kind_Signal_Slew_Attribute => 2079, - Iir_Kind_Quantity_Slew_Attribute => 2087, - Iir_Kind_Ramp_Attribute => 2095, - Iir_Kind_Zoh_Attribute => 2103, - Iir_Kind_Ltf_Attribute => 2111, - Iir_Kind_Ztf_Attribute => 2121, - Iir_Kind_Dot_Attribute => 2128, - Iir_Kind_Integ_Attribute => 2135, - Iir_Kind_Above_Attribute => 2143, - Iir_Kind_Quantity_Delayed_Attribute => 2151, - Iir_Kind_Delayed_Attribute => 2160, - Iir_Kind_Stable_Attribute => 2169, - Iir_Kind_Quiet_Attribute => 2178, - Iir_Kind_Transaction_Attribute => 2187, - Iir_Kind_Event_Attribute => 2191, - Iir_Kind_Active_Attribute => 2195, - Iir_Kind_Last_Event_Attribute => 2199, - Iir_Kind_Last_Active_Attribute => 2203, - Iir_Kind_Last_Value_Attribute => 2207, - Iir_Kind_Driving_Attribute => 2211, - Iir_Kind_Driving_Value_Attribute => 2215, - Iir_Kind_Behavior_Attribute => 2215, - Iir_Kind_Structure_Attribute => 2215, - Iir_Kind_Simple_Name_Attribute => 2222, - Iir_Kind_Instance_Name_Attribute => 2227, - Iir_Kind_Path_Name_Attribute => 2232, - Iir_Kind_Left_Array_Attribute => 2239, - Iir_Kind_Right_Array_Attribute => 2246, - Iir_Kind_High_Array_Attribute => 2253, - Iir_Kind_Low_Array_Attribute => 2260, - Iir_Kind_Length_Array_Attribute => 2267, - Iir_Kind_Ascending_Array_Attribute => 2274, - Iir_Kind_Range_Array_Attribute => 2281, - Iir_Kind_Reverse_Range_Array_Attribute => 2288, - Iir_Kind_Attribute_Name => 2297 + Iir_Kind_Protected_Type_Declaration => 318, + Iir_Kind_Record_Type_Definition => 329, + Iir_Kind_Array_Type_Definition => 341, + Iir_Kind_Array_Subtype_Definition => 356, + Iir_Kind_Record_Subtype_Definition => 369, + Iir_Kind_Access_Subtype_Definition => 377, + Iir_Kind_Physical_Subtype_Definition => 387, + Iir_Kind_Floating_Subtype_Definition => 398, + Iir_Kind_Integer_Subtype_Definition => 408, + Iir_Kind_Enumeration_Subtype_Definition => 418, + Iir_Kind_Enumeration_Type_Definition => 430, + Iir_Kind_Integer_Type_Definition => 439, + Iir_Kind_Floating_Type_Definition => 448, + Iir_Kind_Physical_Type_Definition => 460, + Iir_Kind_Range_Expression => 468, + Iir_Kind_Protected_Type_Body => 476, + Iir_Kind_Wildcard_Type_Definition => 481, + Iir_Kind_Subtype_Definition => 488, + Iir_Kind_Scalar_Nature_Definition => 496, + Iir_Kind_Record_Nature_Definition => 509, + Iir_Kind_Array_Nature_Definition => 523, + Iir_Kind_Array_Subnature_Definition => 538, + Iir_Kind_Overload_List => 539, + Iir_Kind_Entity_Declaration => 552, + Iir_Kind_Configuration_Declaration => 561, + Iir_Kind_Context_Declaration => 567, + Iir_Kind_Package_Declaration => 582, + Iir_Kind_Package_Instantiation_Declaration => 596, + Iir_Kind_Vmode_Declaration => 607, + Iir_Kind_Vprop_Declaration => 618, + Iir_Kind_Vunit_Declaration => 630, + Iir_Kind_Package_Body => 638, + Iir_Kind_Architecture_Body => 651, + Iir_Kind_Type_Declaration => 658, + Iir_Kind_Anonymous_Type_Declaration => 664, + Iir_Kind_Subtype_Declaration => 671, + Iir_Kind_Nature_Declaration => 677, + Iir_Kind_Subnature_Declaration => 684, + Iir_Kind_Package_Header => 686, + Iir_Kind_Unit_Declaration => 695, + Iir_Kind_Library_Declaration => 703, + Iir_Kind_Component_Declaration => 713, + Iir_Kind_Attribute_Declaration => 720, + Iir_Kind_Group_Template_Declaration => 726, + Iir_Kind_Group_Declaration => 733, + Iir_Kind_Element_Declaration => 740, + Iir_Kind_Nature_Element_Declaration => 747, + Iir_Kind_Non_Object_Alias_Declaration => 755, + Iir_Kind_Psl_Declaration => 763, + Iir_Kind_Psl_Endpoint_Declaration => 777, + Iir_Kind_Enumeration_Literal => 788, + Iir_Kind_Function_Declaration => 813, + Iir_Kind_Procedure_Declaration => 837, + Iir_Kind_Function_Body => 847, + Iir_Kind_Procedure_Body => 858, + Iir_Kind_Terminal_Declaration => 867, + Iir_Kind_Object_Alias_Declaration => 878, + Iir_Kind_Free_Quantity_Declaration => 890, + Iir_Kind_Spectrum_Quantity_Declaration => 903, + Iir_Kind_Noise_Quantity_Declaration => 915, + Iir_Kind_Across_Quantity_Declaration => 931, + Iir_Kind_Through_Quantity_Declaration => 947, + Iir_Kind_File_Declaration => 961, + Iir_Kind_Guard_Signal_Declaration => 974, + Iir_Kind_Signal_Declaration => 991, + Iir_Kind_Variable_Declaration => 1004, + Iir_Kind_Constant_Declaration => 1018, + Iir_Kind_Iterator_Declaration => 1029, + Iir_Kind_Interface_Constant_Declaration => 1045, + Iir_Kind_Interface_Variable_Declaration => 1061, + Iir_Kind_Interface_Signal_Declaration => 1082, + Iir_Kind_Interface_File_Declaration => 1098, + Iir_Kind_Interface_Quantity_Declaration => 1114, + Iir_Kind_Interface_Terminal_Declaration => 1126, + Iir_Kind_Interface_Type_Declaration => 1136, + Iir_Kind_Interface_Package_Declaration => 1148, + Iir_Kind_Interface_Function_Declaration => 1165, + Iir_Kind_Interface_Procedure_Declaration => 1178, + Iir_Kind_Anonymous_Signal_Declaration => 1187, + Iir_Kind_Signal_Attribute_Declaration => 1190, + Iir_Kind_Identity_Operator => 1194, + Iir_Kind_Negation_Operator => 1198, + Iir_Kind_Absolute_Operator => 1202, + Iir_Kind_Not_Operator => 1206, + Iir_Kind_Implicit_Condition_Operator => 1210, + Iir_Kind_Condition_Operator => 1214, + Iir_Kind_Reduction_And_Operator => 1218, + Iir_Kind_Reduction_Or_Operator => 1222, + Iir_Kind_Reduction_Nand_Operator => 1226, + Iir_Kind_Reduction_Nor_Operator => 1230, + Iir_Kind_Reduction_Xor_Operator => 1234, + Iir_Kind_Reduction_Xnor_Operator => 1238, + Iir_Kind_And_Operator => 1243, + Iir_Kind_Or_Operator => 1248, + Iir_Kind_Nand_Operator => 1253, + Iir_Kind_Nor_Operator => 1258, + Iir_Kind_Xor_Operator => 1263, + Iir_Kind_Xnor_Operator => 1268, + Iir_Kind_Equality_Operator => 1273, + Iir_Kind_Inequality_Operator => 1278, + Iir_Kind_Less_Than_Operator => 1283, + Iir_Kind_Less_Than_Or_Equal_Operator => 1288, + Iir_Kind_Greater_Than_Operator => 1293, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1298, + Iir_Kind_Match_Equality_Operator => 1303, + Iir_Kind_Match_Inequality_Operator => 1308, + Iir_Kind_Match_Less_Than_Operator => 1313, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1318, + Iir_Kind_Match_Greater_Than_Operator => 1323, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1328, + Iir_Kind_Sll_Operator => 1333, + Iir_Kind_Sla_Operator => 1338, + Iir_Kind_Srl_Operator => 1343, + Iir_Kind_Sra_Operator => 1348, + Iir_Kind_Rol_Operator => 1353, + Iir_Kind_Ror_Operator => 1358, + Iir_Kind_Addition_Operator => 1363, + Iir_Kind_Substraction_Operator => 1368, + Iir_Kind_Concatenation_Operator => 1373, + Iir_Kind_Multiplication_Operator => 1378, + Iir_Kind_Division_Operator => 1383, + Iir_Kind_Modulus_Operator => 1388, + Iir_Kind_Remainder_Operator => 1393, + Iir_Kind_Exponentiation_Operator => 1398, + Iir_Kind_Function_Call => 1406, + Iir_Kind_Aggregate => 1413, + Iir_Kind_Parenthesis_Expression => 1416, + Iir_Kind_Qualified_Expression => 1420, + Iir_Kind_Type_Conversion => 1425, + Iir_Kind_Allocator_By_Expression => 1429, + Iir_Kind_Allocator_By_Subtype => 1434, + Iir_Kind_Selected_Element => 1442, + Iir_Kind_Dereference => 1447, + Iir_Kind_Implicit_Dereference => 1452, + Iir_Kind_Slice_Name => 1459, + Iir_Kind_Indexed_Name => 1465, + Iir_Kind_Psl_Expression => 1467, + Iir_Kind_Sensitized_Process_Statement => 1488, + Iir_Kind_Process_Statement => 1508, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1521, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1534, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1548, + Iir_Kind_Concurrent_Assertion_Statement => 1556, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1563, + Iir_Kind_Concurrent_Break_Statement => 1571, + Iir_Kind_Psl_Assert_Directive => 1584, + Iir_Kind_Psl_Assume_Directive => 1595, + Iir_Kind_Psl_Cover_Directive => 1607, + Iir_Kind_Psl_Restrict_Directive => 1618, + Iir_Kind_Block_Statement => 1632, + Iir_Kind_If_Generate_Statement => 1643, + Iir_Kind_Case_Generate_Statement => 1652, + Iir_Kind_For_Generate_Statement => 1661, + Iir_Kind_Component_Instantiation_Statement => 1672, + Iir_Kind_Psl_Default_Clock => 1676, + Iir_Kind_Generate_Statement_Body => 1687, + Iir_Kind_If_Generate_Else_Clause => 1693, + Iir_Kind_Simple_Simultaneous_Statement => 1700, + Iir_Kind_Simultaneous_Null_Statement => 1704, + Iir_Kind_Simultaneous_Procedural_Statement => 1715, + Iir_Kind_Simultaneous_Case_Statement => 1724, + Iir_Kind_Simultaneous_If_Statement => 1733, + Iir_Kind_Simultaneous_Elsif => 1739, + Iir_Kind_Simple_Signal_Assignment_Statement => 1750, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1761, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1773, + Iir_Kind_Null_Statement => 1777, + Iir_Kind_Assertion_Statement => 1784, + Iir_Kind_Report_Statement => 1790, + Iir_Kind_Wait_Statement => 1798, + Iir_Kind_Variable_Assignment_Statement => 1805, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1812, + Iir_Kind_Return_Statement => 1818, + Iir_Kind_For_Loop_Statement => 1829, + Iir_Kind_While_Loop_Statement => 1840, + Iir_Kind_Next_Statement => 1847, + Iir_Kind_Exit_Statement => 1854, + Iir_Kind_Case_Statement => 1862, + Iir_Kind_Procedure_Call_Statement => 1868, + Iir_Kind_Break_Statement => 1875, + Iir_Kind_If_Statement => 1885, + Iir_Kind_Elsif => 1891, + Iir_Kind_Character_Literal => 1899, + Iir_Kind_Simple_Name => 1907, + Iir_Kind_Selected_Name => 1916, + Iir_Kind_Operator_Symbol => 1922, + Iir_Kind_Reference_Name => 1927, + Iir_Kind_External_Constant_Name => 1935, + Iir_Kind_External_Signal_Name => 1943, + Iir_Kind_External_Variable_Name => 1952, + Iir_Kind_Selected_By_All_Name => 1958, + Iir_Kind_Parenthesis_Name => 1963, + Iir_Kind_Package_Pathname => 1967, + Iir_Kind_Absolute_Pathname => 1968, + Iir_Kind_Relative_Pathname => 1969, + Iir_Kind_Pathname_Element => 1974, + Iir_Kind_Base_Attribute => 1976, + Iir_Kind_Subtype_Attribute => 1981, + Iir_Kind_Element_Attribute => 1986, + Iir_Kind_Across_Attribute => 1991, + Iir_Kind_Through_Attribute => 1996, + Iir_Kind_Nature_Reference_Attribute => 2000, + Iir_Kind_Left_Type_Attribute => 2005, + Iir_Kind_Right_Type_Attribute => 2010, + Iir_Kind_High_Type_Attribute => 2015, + Iir_Kind_Low_Type_Attribute => 2020, + Iir_Kind_Ascending_Type_Attribute => 2025, + Iir_Kind_Image_Attribute => 2031, + Iir_Kind_Value_Attribute => 2037, + Iir_Kind_Pos_Attribute => 2043, + Iir_Kind_Val_Attribute => 2049, + Iir_Kind_Succ_Attribute => 2055, + Iir_Kind_Pred_Attribute => 2061, + Iir_Kind_Leftof_Attribute => 2067, + Iir_Kind_Rightof_Attribute => 2073, + Iir_Kind_Signal_Slew_Attribute => 2081, + Iir_Kind_Quantity_Slew_Attribute => 2089, + Iir_Kind_Ramp_Attribute => 2097, + Iir_Kind_Zoh_Attribute => 2105, + Iir_Kind_Ltf_Attribute => 2113, + Iir_Kind_Ztf_Attribute => 2123, + Iir_Kind_Dot_Attribute => 2130, + Iir_Kind_Integ_Attribute => 2137, + Iir_Kind_Above_Attribute => 2145, + Iir_Kind_Quantity_Delayed_Attribute => 2153, + Iir_Kind_Delayed_Attribute => 2162, + Iir_Kind_Stable_Attribute => 2171, + Iir_Kind_Quiet_Attribute => 2180, + Iir_Kind_Transaction_Attribute => 2189, + Iir_Kind_Event_Attribute => 2193, + Iir_Kind_Active_Attribute => 2197, + Iir_Kind_Last_Event_Attribute => 2201, + Iir_Kind_Last_Active_Attribute => 2205, + Iir_Kind_Last_Value_Attribute => 2209, + Iir_Kind_Driving_Attribute => 2213, + Iir_Kind_Driving_Value_Attribute => 2217, + Iir_Kind_Behavior_Attribute => 2217, + Iir_Kind_Structure_Attribute => 2217, + Iir_Kind_Simple_Name_Attribute => 2224, + Iir_Kind_Instance_Name_Attribute => 2229, + Iir_Kind_Path_Name_Attribute => 2234, + Iir_Kind_Left_Array_Attribute => 2241, + Iir_Kind_Right_Array_Attribute => 2248, + Iir_Kind_High_Array_Attribute => 2255, + Iir_Kind_Low_Array_Attribute => 2262, + Iir_Kind_Length_Array_Attribute => 2269, + Iir_Kind_Ascending_Array_Attribute => 2276, + Iir_Kind_Range_Array_Attribute => 2283, + Iir_Kind_Reverse_Range_Array_Attribute => 2290, + Iir_Kind_Attribute_Name => 2299 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -8018,7 +8020,9 @@ package body Vhdl.Nodes_Meta is function Has_Attribute_Value_Chain (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_Entity_Declaration + when Iir_Kind_Protected_Type_Declaration + | Iir_Kind_Protected_Type_Body + | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Package_Declaration | Iir_Kind_Package_Instantiation_Declaration diff --git a/src/vhdl/vhdl-sem_specs.adb b/src/vhdl/vhdl-sem_specs.adb index 9cc48ec8a..e0a44848d 100644 --- a/src/vhdl/vhdl-sem_specs.adb +++ b/src/vhdl/vhdl-sem_specs.adb @@ -701,6 +701,9 @@ package body Vhdl.Sem_Specs is | Iir_Kind_Procedure_Body => Sem_Named_Entity_Chain (Get_Declaration_Chain (Scope)); Sem_Named_Entity_Chain (Get_Sequential_Statement_Chain (Scope)); + when Iir_Kind_Protected_Type_Declaration + | Iir_Kind_Protected_Type_Body => + Sem_Named_Entity_Chain (Get_Declaration_Chain (Scope)); when Iir_Kind_Vunit_Declaration => Sem_Named_Entity_Chain (Get_Vunit_Item_Chain (Scope)); when others => |