From a52af2f98e34648a2a9b056b11da518a60a6c6cd Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Thu, 26 Dec 2019 18:05:51 +0100 Subject: vhdl: improve support of AMS-vhdl (array and record natures, source quantities) --- src/vhdl/vhdl-nodes_meta.adb | 1714 ++++++++++++++++++++++++++++++++---------- 1 file changed, 1325 insertions(+), 389 deletions(-) (limited to 'src/vhdl/vhdl-nodes_meta.adb') diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index b27ac9249..a602b5c69 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -65,6 +65,7 @@ package body Vhdl.Nodes_Meta is Field_Attribute_Specification_Chain => Type_Iir, Field_Attribute_Specification => Type_Iir, Field_Signal_List => Type_Iir_Flist, + Field_Quantity_List => Type_Iir_Flist, Field_Designated_Entity => Type_Iir, Field_Formal => Type_Iir, Field_Actual => Type_Iir, @@ -116,7 +117,9 @@ package body Vhdl.Nodes_Meta is Field_Subtype_Definition => Type_Iir, Field_Incomplete_Type_Declaration => Type_Iir, Field_Interface_Type_Subprograms => Type_Iir, + Field_Nature_Definition => Type_Iir, Field_Nature => Type_Iir, + Field_Subnature_Indication => Type_Iir, Field_Mode => Type_Iir_Mode, Field_Guarded_Signal_Flag => Type_Boolean, Field_Signal_Kind => Type_Iir_Signal_Kind, @@ -124,6 +127,7 @@ package body Vhdl.Nodes_Meta is Field_Interface_Declaration_Chain => Type_Iir, Field_Subprogram_Specification => Type_Iir, Field_Sequential_Statement_Chain => Type_Iir, + Field_Simultaneous_Statement_Chain => Type_Iir, Field_Subprogram_Body => Type_Iir, Field_Overload_Number => Type_Iir_Int32, Field_Subprogram_Depth => Type_Iir_Int32, @@ -164,22 +168,31 @@ package body Vhdl.Nodes_Meta is Field_Left_Limit_Expr => Type_Iir, Field_Right_Limit_Expr => Type_Iir, Field_Base_Type => Type_Iir, + Field_Base_Nature => Type_Iir, Field_Resolution_Indication => Type_Iir, Field_Record_Element_Resolution_Chain => Type_Iir, Field_Tolerance => Type_Iir, + Field_Plus_Terminal_Name => Type_Iir, + Field_Minus_Terminal_Name => Type_Iir, Field_Plus_Terminal => Type_Iir, Field_Minus_Terminal => Type_Iir, + Field_Magnitude_Expression => Type_Iir, + Field_Phase_Expression => Type_Iir, + Field_Power_Expression => Type_Iir, Field_Simultaneous_Left => Type_Iir, Field_Simultaneous_Right => Type_Iir, Field_Text_File_Flag => Type_Boolean, Field_Only_Characters_Flag => Type_Boolean, Field_Is_Character_Type => Type_Boolean, + Field_Nature_Staticness => Type_Iir_Staticness, Field_Type_Staticness => Type_Iir_Staticness, Field_Constraint_State => Type_Iir_Constraint, Field_Index_Subtype_List => Type_Iir_Flist, Field_Index_Subtype_Definition_List => Type_Iir_Flist, Field_Element_Subtype_Indication => Type_Iir, Field_Element_Subtype => Type_Iir, + Field_Element_Subnature_Indication => Type_Iir, + Field_Element_Subnature => Type_Iir, Field_Index_Constraint_List => Type_Iir_Flist, Field_Array_Element_Constraint => Type_Iir, Field_Elements_Declaration_List => Type_Iir_Flist, @@ -189,6 +202,10 @@ package body Vhdl.Nodes_Meta is Field_Index_List => Type_Iir_Flist, Field_Reference => Type_Iir, Field_Nature_Declarator => Type_Iir, + Field_Across_Type_Mark => Type_Iir, + Field_Through_Type_Mark => Type_Iir, + Field_Across_Type_Definition => Type_Iir, + Field_Through_Type_Definition => Type_Iir, Field_Across_Type => Type_Iir, Field_Through_Type => Type_Iir, Field_Target => Type_Iir, @@ -200,6 +217,9 @@ package body Vhdl.Nodes_Meta is Field_Process_Origin => Type_Iir, Field_Package_Origin => Type_Iir, Field_Condition_Clause => Type_Iir, + Field_Break_Element => Type_Iir, + Field_Selector_Quantity => Type_Iir, + Field_Break_Quantity => Type_Iir, Field_Timeout_Clause => Type_Iir, Field_Postponed_Flag => Type_Boolean, Field_Callees_List => Type_Iir_List, @@ -283,6 +303,7 @@ package body Vhdl.Nodes_Meta is Field_Suffix => Type_Iir, Field_Index_Subtype => Type_Iir, Field_Parameter => Type_Iir, + Field_Parameter_2 => Type_Iir, Field_Attr_Chain => Type_Iir, Field_Signal_Attribute_Declaration => Type_Iir, Field_Actual_Type => Type_Iir, @@ -307,6 +328,7 @@ package body Vhdl.Nodes_Meta is Field_Parameter_Association_Chain => Type_Iir, Field_Method_Object => Type_Iir, Field_Subtype_Type_Mark => Type_Iir, + Field_Subnature_Nature_Mark => Type_Iir, Field_Type_Conversion_Subtype => Type_Iir, Field_Type_Mark => Type_Iir, Field_File_Type_Mark => Type_Iir, @@ -454,6 +476,8 @@ package body Vhdl.Nodes_Meta is return "attribute_specification"; when Field_Signal_List => return "signal_list"; + when Field_Quantity_List => + return "quantity_list"; when Field_Designated_Entity => return "designated_entity"; when Field_Formal => @@ -556,8 +580,12 @@ package body Vhdl.Nodes_Meta is return "incomplete_type_declaration"; when Field_Interface_Type_Subprograms => return "interface_type_subprograms"; + when Field_Nature_Definition => + return "nature_definition"; when Field_Nature => return "nature"; + when Field_Subnature_Indication => + return "subnature_indication"; when Field_Mode => return "mode"; when Field_Guarded_Signal_Flag => @@ -572,6 +600,8 @@ package body Vhdl.Nodes_Meta is return "subprogram_specification"; when Field_Sequential_Statement_Chain => return "sequential_statement_chain"; + when Field_Simultaneous_Statement_Chain => + return "simultaneous_statement_chain"; when Field_Subprogram_Body => return "subprogram_body"; when Field_Overload_Number => @@ -652,16 +682,28 @@ package body Vhdl.Nodes_Meta is return "right_limit_expr"; when Field_Base_Type => return "base_type"; + when Field_Base_Nature => + return "base_nature"; when Field_Resolution_Indication => return "resolution_indication"; when Field_Record_Element_Resolution_Chain => return "record_element_resolution_chain"; when Field_Tolerance => return "tolerance"; + when Field_Plus_Terminal_Name => + return "plus_terminal_name"; + when Field_Minus_Terminal_Name => + return "minus_terminal_name"; when Field_Plus_Terminal => return "plus_terminal"; when Field_Minus_Terminal => return "minus_terminal"; + when Field_Magnitude_Expression => + return "magnitude_expression"; + when Field_Phase_Expression => + return "phase_expression"; + when Field_Power_Expression => + return "power_expression"; when Field_Simultaneous_Left => return "simultaneous_left"; when Field_Simultaneous_Right => @@ -672,6 +714,8 @@ package body Vhdl.Nodes_Meta is return "only_characters_flag"; when Field_Is_Character_Type => return "is_character_type"; + when Field_Nature_Staticness => + return "nature_staticness"; when Field_Type_Staticness => return "type_staticness"; when Field_Constraint_State => @@ -684,6 +728,10 @@ package body Vhdl.Nodes_Meta is return "element_subtype_indication"; when Field_Element_Subtype => return "element_subtype"; + when Field_Element_Subnature_Indication => + return "element_subnature_indication"; + when Field_Element_Subnature => + return "element_subnature"; when Field_Index_Constraint_List => return "index_constraint_list"; when Field_Array_Element_Constraint => @@ -702,6 +750,14 @@ package body Vhdl.Nodes_Meta is return "reference"; when Field_Nature_Declarator => return "nature_declarator"; + when Field_Across_Type_Mark => + return "across_type_mark"; + when Field_Through_Type_Mark => + return "through_type_mark"; + when Field_Across_Type_Definition => + return "across_type_definition"; + when Field_Through_Type_Definition => + return "through_type_definition"; when Field_Across_Type => return "across_type"; when Field_Through_Type => @@ -724,6 +780,12 @@ package body Vhdl.Nodes_Meta is return "package_origin"; when Field_Condition_Clause => return "condition_clause"; + when Field_Break_Element => + return "break_element"; + when Field_Selector_Quantity => + return "selector_quantity"; + when Field_Break_Quantity => + return "break_quantity"; when Field_Timeout_Clause => return "timeout_clause"; when Field_Postponed_Flag => @@ -890,6 +952,8 @@ package body Vhdl.Nodes_Meta is return "index_subtype"; when Field_Parameter => return "parameter"; + when Field_Parameter_2 => + return "parameter_2"; when Field_Attr_Chain => return "attr_chain"; when Field_Signal_Attribute_Declaration => @@ -938,6 +1002,8 @@ package body Vhdl.Nodes_Meta is return "method_object"; when Field_Subtype_Type_Mark => return "subtype_type_mark"; + when Field_Subnature_Nature_Mark => + return "subnature_nature_mark"; when Field_Type_Conversion_Subtype => return "type_conversion_subtype"; when Field_Type_Mark => @@ -1084,6 +1150,8 @@ package body Vhdl.Nodes_Meta is return "association_element_type"; when Iir_Kind_Association_Element_Subprogram => return "association_element_subprogram"; + when Iir_Kind_Association_Element_Terminal => + return "association_element_terminal"; when Iir_Kind_Choice_By_Range => return "choice_by_range"; when Iir_Kind_Choice_By_Expression => @@ -1128,10 +1196,14 @@ package body Vhdl.Nodes_Meta is return "record_resolution"; when Iir_Kind_Record_Element_Resolution => return "record_element_resolution"; + when Iir_Kind_Break_Element => + return "break_element"; when Iir_Kind_Attribute_Specification => return "attribute_specification"; when Iir_Kind_Disconnection_Specification => return "disconnection_specification"; + when Iir_Kind_Step_Limit_Specification => + return "step_limit_specification"; when Iir_Kind_Configuration_Specification => return "configuration_specification"; when Iir_Kind_Access_Type_Definition => @@ -1180,6 +1252,12 @@ package body Vhdl.Nodes_Meta is return "subtype_definition"; when Iir_Kind_Scalar_Nature_Definition => return "scalar_nature_definition"; + when Iir_Kind_Record_Nature_Definition => + return "record_nature_definition"; + when Iir_Kind_Array_Nature_Definition => + return "array_nature_definition"; + when Iir_Kind_Array_Subnature_Definition => + return "array_subnature_definition"; when Iir_Kind_Overload_List => return "overload_list"; when Iir_Kind_Entity_Declaration => @@ -1228,20 +1306,14 @@ package body Vhdl.Nodes_Meta is return "group_declaration"; when Iir_Kind_Element_Declaration => return "element_declaration"; + when Iir_Kind_Nature_Element_Declaration => + return "nature_element_declaration"; when Iir_Kind_Non_Object_Alias_Declaration => return "non_object_alias_declaration"; when Iir_Kind_Psl_Declaration => return "psl_declaration"; when Iir_Kind_Psl_Endpoint_Declaration => return "psl_endpoint_declaration"; - when Iir_Kind_Terminal_Declaration => - return "terminal_declaration"; - when Iir_Kind_Free_Quantity_Declaration => - return "free_quantity_declaration"; - when Iir_Kind_Across_Quantity_Declaration => - return "across_quantity_declaration"; - when Iir_Kind_Through_Quantity_Declaration => - return "through_quantity_declaration"; when Iir_Kind_Enumeration_Literal => return "enumeration_literal"; when Iir_Kind_Function_Declaration => @@ -1252,8 +1324,20 @@ package body Vhdl.Nodes_Meta is return "function_body"; when Iir_Kind_Procedure_Body => return "procedure_body"; + when Iir_Kind_Terminal_Declaration => + return "terminal_declaration"; when Iir_Kind_Object_Alias_Declaration => return "object_alias_declaration"; + when Iir_Kind_Free_Quantity_Declaration => + return "free_quantity_declaration"; + when Iir_Kind_Spectrum_Quantity_Declaration => + return "spectrum_quantity_declaration"; + when Iir_Kind_Noise_Quantity_Declaration => + return "noise_quantity_declaration"; + when Iir_Kind_Across_Quantity_Declaration => + return "across_quantity_declaration"; + when Iir_Kind_Through_Quantity_Declaration => + return "through_quantity_declaration"; when Iir_Kind_File_Declaration => return "file_declaration"; when Iir_Kind_Guard_Signal_Declaration => @@ -1274,6 +1358,10 @@ package body Vhdl.Nodes_Meta is return "interface_signal_declaration"; when Iir_Kind_Interface_File_Declaration => return "interface_file_declaration"; + when Iir_Kind_Interface_Quantity_Declaration => + return "interface_quantity_declaration"; + when Iir_Kind_Interface_Terminal_Declaration => + return "interface_terminal_declaration"; when Iir_Kind_Interface_Type_Declaration => return "interface_type_declaration"; when Iir_Kind_Interface_Package_Declaration => @@ -1414,6 +1502,8 @@ package body Vhdl.Nodes_Meta is return "concurrent_assertion_statement"; when Iir_Kind_Concurrent_Procedure_Call_Statement => return "concurrent_procedure_call_statement"; + when Iir_Kind_Concurrent_Break_Statement => + return "concurrent_break_statement"; when Iir_Kind_Psl_Assert_Directive => return "psl_assert_directive"; when Iir_Kind_Psl_Assume_Directive => @@ -1434,12 +1524,18 @@ package body Vhdl.Nodes_Meta is return "component_instantiation_statement"; when Iir_Kind_Psl_Default_Clock => return "psl_default_clock"; - when Iir_Kind_Simple_Simultaneous_Statement => - return "simple_simultaneous_statement"; when Iir_Kind_Generate_Statement_Body => return "generate_statement_body"; when Iir_Kind_If_Generate_Else_Clause => return "if_generate_else_clause"; + when Iir_Kind_Simple_Simultaneous_Statement => + return "simple_simultaneous_statement"; + when Iir_Kind_Simultaneous_Procedural_Statement => + return "simultaneous_procedural_statement"; + when Iir_Kind_Simultaneous_If_Statement => + return "simultaneous_if_statement"; + when Iir_Kind_Simultaneous_Elsif => + return "simultaneous_elsif"; when Iir_Kind_Simple_Signal_Assignment_Statement => return "simple_signal_assignment_statement"; when Iir_Kind_Conditional_Signal_Assignment_Statement => @@ -1472,6 +1568,8 @@ package body Vhdl.Nodes_Meta is return "case_statement"; when Iir_Kind_Procedure_Call_Statement => return "procedure_call_statement"; + when Iir_Kind_Break_Statement => + return "break_statement"; when Iir_Kind_If_Statement => return "if_statement"; when Iir_Kind_Elsif => @@ -1510,6 +1608,12 @@ package body Vhdl.Nodes_Meta is return "subtype_attribute"; when Iir_Kind_Element_Attribute => return "element_attribute"; + when Iir_Kind_Across_Attribute => + return "across_attribute"; + when Iir_Kind_Through_Attribute => + return "through_attribute"; + when Iir_Kind_Nature_Reference_Attribute => + return "nature_reference_attribute"; when Iir_Kind_Left_Type_Attribute => return "left_type_attribute"; when Iir_Kind_Right_Type_Attribute => @@ -1536,6 +1640,18 @@ package body Vhdl.Nodes_Meta is return "leftof_attribute"; when Iir_Kind_Rightof_Attribute => return "rightof_attribute"; + when Iir_Kind_Signal_Slew_Attribute => + return "signal_slew_attribute"; + when Iir_Kind_Quantity_Slew_Attribute => + return "quantity_slew_attribute"; + when Iir_Kind_Ramp_Attribute => + return "ramp_attribute"; + when Iir_Kind_Dot_Attribute => + return "dot_attribute"; + when Iir_Kind_Integ_Attribute => + return "integ_attribute"; + when Iir_Kind_Above_Attribute => + return "above_attribute"; when Iir_Kind_Delayed_Attribute => return "delayed_attribute"; when Iir_Kind_Stable_Attribute => @@ -1684,6 +1800,8 @@ package body Vhdl.Nodes_Meta is return Attr_Ref; when Field_Signal_List => return Attr_Of_Maybe_Ref; + when Field_Quantity_List => + return Attr_Of_Maybe_Ref; when Field_Designated_Entity => return Attr_Forward_Ref; when Field_Formal => @@ -1786,7 +1904,11 @@ package body Vhdl.Nodes_Meta is return Attr_Ref; when Field_Interface_Type_Subprograms => return Attr_Chain; + when Field_Nature_Definition => + return Attr_None; when Field_Nature => + return Attr_Ref; + when Field_Subnature_Indication => return Attr_None; when Field_Mode => return Attr_None; @@ -1802,6 +1924,8 @@ package body Vhdl.Nodes_Meta is return Attr_Ref; when Field_Sequential_Statement_Chain => return Attr_Chain; + when Field_Simultaneous_Statement_Chain => + return Attr_Chain; when Field_Subprogram_Body => return Attr_Forward_Ref; when Field_Overload_Number => @@ -1882,15 +2006,27 @@ package body Vhdl.Nodes_Meta is return Attr_None; when Field_Base_Type => return Attr_Ref; + when Field_Base_Nature => + return Attr_Ref; when Field_Resolution_Indication => return Attr_None; when Field_Record_Element_Resolution_Chain => return Attr_Chain; when Field_Tolerance => return Attr_None; - when Field_Plus_Terminal => + when Field_Plus_Terminal_Name => + return Attr_None; + when Field_Minus_Terminal_Name => return Attr_None; + when Field_Plus_Terminal => + return Attr_Ref; when Field_Minus_Terminal => + return Attr_Ref; + when Field_Magnitude_Expression => + return Attr_None; + when Field_Phase_Expression => + return Attr_None; + when Field_Power_Expression => return Attr_None; when Field_Simultaneous_Left => return Attr_None; @@ -1902,6 +2038,8 @@ package body Vhdl.Nodes_Meta is return Attr_None; when Field_Is_Character_Type => return Attr_None; + when Field_Nature_Staticness => + return Attr_None; when Field_Type_Staticness => return Attr_None; when Field_Constraint_State => @@ -1914,6 +2052,10 @@ package body Vhdl.Nodes_Meta is return Attr_None; when Field_Element_Subtype => return Attr_Ref; + when Field_Element_Subnature_Indication => + return Attr_None; + when Field_Element_Subnature => + return Attr_Ref; when Field_Index_Constraint_List => return Attr_None; when Field_Array_Element_Constraint => @@ -1929,13 +2071,21 @@ package body Vhdl.Nodes_Meta is when Field_Index_List => return Attr_None; when Field_Reference => - return Attr_None; + return Attr_Forward_Ref; when Field_Nature_Declarator => + return Attr_Ref; + when Field_Across_Type_Mark => return Attr_None; - when Field_Across_Type => + when Field_Through_Type_Mark => return Attr_None; - when Field_Through_Type => + when Field_Across_Type_Definition => + return Attr_None; + when Field_Through_Type_Definition => return Attr_None; + when Field_Across_Type => + return Attr_Ref; + when Field_Through_Type => + return Attr_Ref; when Field_Target => return Attr_Maybe_Ref; when Field_Waveform_Chain => @@ -1954,6 +2104,12 @@ package body Vhdl.Nodes_Meta is return Attr_None; when Field_Condition_Clause => return Attr_None; + when Field_Break_Element => + return Attr_Chain; + when Field_Selector_Quantity => + return Attr_None; + when Field_Break_Quantity => + return Attr_None; when Field_Timeout_Clause => return Attr_None; when Field_Postponed_Flag => @@ -2120,6 +2276,8 @@ package body Vhdl.Nodes_Meta is return Attr_Ref; when Field_Parameter => return Attr_None; + when Field_Parameter_2 => + return Attr_None; when Field_Attr_Chain => return Attr_Forward_Ref; when Field_Signal_Attribute_Declaration => @@ -2168,6 +2326,8 @@ package body Vhdl.Nodes_Meta is return Attr_Ref; when Field_Subtype_Type_Mark => return Attr_None; + when Field_Subnature_Nature_Mark => + return Attr_None; when Field_Type_Conversion_Subtype => return Attr_None; when Field_Type_Mark => @@ -2434,6 +2594,13 @@ package body Vhdl.Nodes_Meta is Field_Formal, Field_Chain, Field_Actual, + -- Iir_Kind_Association_Element_Terminal + Field_Whole_Association_Flag, + Field_Collapse_Signal_Flag, + Field_In_Formal_Flag, + Field_Formal, + Field_Chain, + Field_Actual, -- Iir_Kind_Choice_By_Range Field_Same_Alternative_Flag, Field_Element_Type_Flag, @@ -2553,6 +2720,11 @@ package body Vhdl.Nodes_Meta is Field_Identifier, Field_Chain, Field_Resolution_Indication, + -- Iir_Kind_Break_Element + Field_Chain, + Field_Selector_Quantity, + Field_Break_Quantity, + Field_Expression, -- Iir_Kind_Attribute_Specification Field_Entity_Class, Field_Parent, @@ -2569,6 +2741,13 @@ package body Vhdl.Nodes_Meta is Field_Type_Mark, Field_Expression, Field_Chain, + -- Iir_Kind_Step_Limit_Specification + Field_Is_Ref, + Field_Parent, + Field_Quantity_List, + Field_Type_Mark, + Field_Expression, + Field_Chain, -- Iir_Kind_Configuration_Specification Field_Is_Ref, Field_Parent, @@ -2803,8 +2982,55 @@ package body Vhdl.Nodes_Meta is Field_Resolution_Indication, Field_Tolerance, -- Iir_Kind_Scalar_Nature_Definition + Field_Nature_Staticness, Field_Reference, Field_Nature_Declarator, + Field_Base_Nature, + Field_Across_Type_Mark, + Field_Through_Type_Mark, + Field_Across_Type, + Field_Through_Type, + -- Iir_Kind_Record_Nature_Definition + Field_Is_Ref, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Nature_Staticness, + Field_Constraint_State, + Field_Elements_Declaration_List, + Field_Nature_Declarator, + Field_Base_Nature, + Field_Across_Type_Definition, + Field_Through_Type_Definition, + Field_Across_Type, + Field_Through_Type, + -- Iir_Kind_Array_Nature_Definition + Field_Index_Constraint_Flag, + Field_Nature_Staticness, + Field_Constraint_State, + Field_Index_Subtype_Definition_List, + Field_Element_Subnature_Indication, + Field_Index_Subtype_List, + Field_Element_Subnature, + Field_Nature_Declarator, + Field_Base_Nature, + Field_Across_Type_Definition, + Field_Through_Type_Definition, + Field_Across_Type, + Field_Through_Type, + -- Iir_Kind_Array_Subnature_Definition + Field_Index_Constraint_Flag, + Field_Nature_Staticness, + Field_Constraint_State, + Field_Subnature_Nature_Mark, + Field_Index_Constraint_List, + Field_Index_Subtype_List, + Field_Array_Element_Constraint, + Field_Tolerance, + Field_Element_Subnature, + Field_Nature_Declarator, + Field_Base_Nature, + Field_Across_Type_Definition, + Field_Through_Type_Definition, Field_Across_Type, Field_Through_Type, -- Iir_Kind_Overload_List @@ -2959,7 +3185,7 @@ package body Vhdl.Nodes_Meta is Field_Visible_Flag, Field_Use_Flag, Field_Parent, - Field_Nature, + Field_Nature_Definition, Field_Chain, -- Iir_Kind_Subnature_Declaration Field_Identifier, @@ -2968,6 +3194,7 @@ package body Vhdl.Nodes_Meta is Field_Parent, Field_Nature, Field_Chain, + Field_Subnature_Indication, -- Iir_Kind_Package_Header Field_Generic_Chain, Field_Generic_Map_Aspect_Chain, @@ -3031,6 +3258,14 @@ package body Vhdl.Nodes_Meta is Field_Parent, Field_Subtype_Indication, Field_Type, + -- Iir_Kind_Nature_Element_Declaration + Field_Identifier, + Field_Element_Position, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Parent, + Field_Subnature_Indication, + Field_Nature, -- Iir_Kind_Non_Object_Alias_Declaration Field_Identifier, Field_Implicit_Alias_Flag, @@ -3064,52 +3299,6 @@ package body Vhdl.Nodes_Meta is Field_Type, Field_Chain, Field_PSL_Clock_Sensitivity, - -- Iir_Kind_Terminal_Declaration - Field_Identifier, - Field_Has_Identifier_List, - Field_Visible_Flag, - Field_Use_Flag, - Field_Parent, - Field_Nature, - Field_Chain, - -- Iir_Kind_Free_Quantity_Declaration - Field_Identifier, - Field_Is_Ref, - Field_Visible_Flag, - Field_Use_Flag, - Field_Expr_Staticness, - Field_Name_Staticness, - Field_Parent, - Field_Type, - Field_Chain, - Field_Subtype_Indication, - Field_Default_Value, - -- Iir_Kind_Across_Quantity_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Expr_Staticness, - Field_Name_Staticness, - Field_Parent, - Field_Type, - Field_Chain, - Field_Default_Value, - Field_Tolerance, - Field_Plus_Terminal, - Field_Minus_Terminal, - -- Iir_Kind_Through_Quantity_Declaration - Field_Identifier, - Field_Visible_Flag, - Field_Use_Flag, - Field_Expr_Staticness, - Field_Name_Staticness, - Field_Parent, - Field_Type, - Field_Chain, - Field_Default_Value, - Field_Tolerance, - Field_Plus_Terminal, - Field_Minus_Terminal, -- Iir_Kind_Enumeration_Literal Field_Identifier, Field_Subprogram_Hash, @@ -3196,6 +3385,16 @@ package body Vhdl.Nodes_Meta is Field_Sequential_Statement_Chain, Field_Subprogram_Specification, Field_Callees_List, + -- Iir_Kind_Terminal_Declaration + Field_Identifier, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Name_Staticness, + Field_Parent, + Field_Nature, + Field_Chain, + Field_Subnature_Indication, -- Iir_Kind_Object_Alias_Declaration Field_Identifier, Field_Visible_Flag, @@ -3208,6 +3407,80 @@ package body Vhdl.Nodes_Meta is Field_Name, Field_Subtype_Indication, Field_Type, + -- Iir_Kind_Free_Quantity_Declaration + Field_Identifier, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Chain, + Field_Subtype_Indication, + Field_Default_Value, + Field_Type, + -- Iir_Kind_Spectrum_Quantity_Declaration + Field_Identifier, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Chain, + Field_Subtype_Indication, + Field_Magnitude_Expression, + Field_Phase_Expression, + Field_Type, + -- Iir_Kind_Noise_Quantity_Declaration + Field_Identifier, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Chain, + Field_Subtype_Indication, + Field_Power_Expression, + Field_Type, + -- Iir_Kind_Across_Quantity_Declaration + Field_Identifier, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Type, + Field_Chain, + Field_Default_Value, + Field_Tolerance, + Field_Plus_Terminal_Name, + Field_Minus_Terminal_Name, + Field_Plus_Terminal, + Field_Minus_Terminal, + -- Iir_Kind_Through_Quantity_Declaration + Field_Identifier, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Type, + Field_Chain, + Field_Default_Value, + Field_Tolerance, + Field_Plus_Terminal_Name, + Field_Minus_Terminal_Name, + Field_Plus_Terminal, + Field_Minus_Terminal, -- Iir_Kind_File_Declaration Field_Identifier, Field_Has_Mode, @@ -3369,6 +3642,36 @@ package body Vhdl.Nodes_Meta is Field_Subtype_Indication, Field_Default_Value, Field_Type, + -- Iir_Kind_Interface_Quantity_Declaration + Field_Identifier, + Field_Has_Mode, + Field_Has_Class, + Field_Is_Ref, + Field_Mode, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_After_Drivers_Flag, + Field_Use_Flag, + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Parent, + Field_Chain, + Field_Subtype_Indication, + Field_Default_Value, + Field_Type, + -- Iir_Kind_Interface_Terminal_Declaration + Field_Identifier, + Field_Has_Mode, + Field_Has_Class, + Field_Is_Ref, + Field_Has_Identifier_List, + Field_Visible_Flag, + Field_Use_Flag, + Field_Name_Staticness, + Field_Parent, + Field_Chain, + Field_Subnature_Indication, + Field_Nature, -- Iir_Kind_Interface_Type_Declaration Field_Identifier, Field_Is_Ref, @@ -3876,6 +4179,15 @@ package body Vhdl.Nodes_Meta is Field_Parent, Field_Procedure_Call, Field_Chain, + -- Iir_Kind_Concurrent_Break_Statement + Field_Label, + Field_Is_Ref, + Field_Visible_Flag, + Field_Parent, + Field_Condition, + Field_Chain, + Field_Sensitivity_List, + Field_Break_Element, -- Iir_Kind_Psl_Assert_Directive Field_Psl_Property, Field_Label, @@ -3991,14 +4303,6 @@ package body Vhdl.Nodes_Meta is Field_Label, Field_Parent, Field_Chain, - -- Iir_Kind_Simple_Simultaneous_Statement - Field_Label, - Field_Visible_Flag, - Field_Parent, - Field_Chain, - Field_Simultaneous_Left, - Field_Simultaneous_Right, - Field_Tolerance, -- Iir_Kind_Generate_Statement_Body Field_Alternative_Label, Field_Has_Begin, @@ -4018,6 +4322,40 @@ package body Vhdl.Nodes_Meta is Field_Condition, Field_Generate_Statement_Body, Field_Generate_Else_Clause, + -- Iir_Kind_Simple_Simultaneous_Statement + Field_Label, + Field_Visible_Flag, + Field_Parent, + Field_Chain, + Field_Simultaneous_Left, + Field_Simultaneous_Right, + Field_Tolerance, + -- Iir_Kind_Simultaneous_Procedural_Statement + Field_Label, + Field_Has_Is, + Field_End_Has_Reserved_Id, + Field_End_Has_Identifier, + Field_Parent, + Field_Declaration_Chain, + Field_Attribute_Value_Chain, + Field_Sequential_Statement_Chain, + -- Iir_Kind_Simultaneous_If_Statement + Field_Label, + Field_Is_Ref, + Field_Visible_Flag, + Field_End_Has_Identifier, + Field_Parent, + Field_Condition, + Field_Simultaneous_Statement_Chain, + Field_Else_Clause, + Field_Chain, + -- Iir_Kind_Simultaneous_Elsif + Field_Is_Ref, + Field_End_Has_Identifier, + Field_Parent, + Field_Condition, + Field_Simultaneous_Statement_Chain, + Field_Else_Clause, -- Iir_Kind_Simple_Signal_Assignment_Statement Field_Label, Field_Delay_Mechanism, @@ -4153,9 +4491,9 @@ package body Vhdl.Nodes_Meta is Field_Visible_Flag, Field_End_Has_Identifier, Field_Parent, + Field_Expression, Field_Case_Statement_Alternative_Chain, Field_Chain, - Field_Expression, -- Iir_Kind_Procedure_Call_Statement Field_Label, Field_Suspend_Flag, @@ -4163,6 +4501,14 @@ package body Vhdl.Nodes_Meta is Field_Parent, Field_Procedure_Call, Field_Chain, + -- Iir_Kind_Break_Statement + Field_Label, + Field_Is_Ref, + Field_Visible_Flag, + Field_Parent, + Field_Condition, + Field_Chain, + Field_Break_Element, -- Iir_Kind_If_Statement Field_Label, Field_Suspend_Flag, @@ -4293,6 +4639,23 @@ package body Vhdl.Nodes_Meta is Field_Prefix, Field_Type, Field_Base_Name, + -- Iir_Kind_Across_Attribute + Field_Type_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Base_Name, + -- Iir_Kind_Through_Attribute + Field_Type_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Base_Name, + -- Iir_Kind_Nature_Reference_Attribute + Field_Name_Staticness, + Field_Prefix, + Field_Nature, + Field_Base_Name, -- Iir_Kind_Left_Type_Attribute Field_Expr_Staticness, Field_Name_Staticness, @@ -4323,60 +4686,112 @@ package body Vhdl.Nodes_Meta is Field_Prefix, Field_Type, Field_Base_Name, - -- Iir_Kind_Image_Attribute + -- Iir_Kind_Image_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Value_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Pos_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Val_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Succ_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Pred_Attribute + Field_Expr_Staticness, + Field_Name_Staticness, + Field_Prefix, + Field_Type, + Field_Parameter, + Field_Base_Name, + -- Iir_Kind_Leftof_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Parameter, Field_Base_Name, - -- Iir_Kind_Value_Attribute + -- Iir_Kind_Rightof_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, Field_Parameter, Field_Base_Name, - -- Iir_Kind_Pos_Attribute + -- Iir_Kind_Signal_Slew_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, + Field_Attr_Chain, Field_Parameter, + Field_Parameter_2, Field_Base_Name, - -- Iir_Kind_Val_Attribute + -- Iir_Kind_Quantity_Slew_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, + Field_Attr_Chain, Field_Parameter, + Field_Parameter_2, Field_Base_Name, - -- Iir_Kind_Succ_Attribute + -- Iir_Kind_Ramp_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, + Field_Attr_Chain, Field_Parameter, + Field_Parameter_2, Field_Base_Name, - -- Iir_Kind_Pred_Attribute + -- Iir_Kind_Dot_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, - Field_Parameter, + Field_Attr_Chain, + Field_Signal_Attribute_Declaration, Field_Base_Name, - -- Iir_Kind_Leftof_Attribute + -- Iir_Kind_Integ_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, - Field_Parameter, + Field_Attr_Chain, + Field_Signal_Attribute_Declaration, Field_Base_Name, - -- Iir_Kind_Rightof_Attribute + -- Iir_Kind_Above_Attribute Field_Expr_Staticness, Field_Name_Staticness, Field_Prefix, Field_Type, + Field_Attr_Chain, + Field_Signal_Attribute_Declaration, Field_Parameter, Field_Base_Name, -- Iir_Kind_Delayed_Attribute @@ -4579,257 +4994,282 @@ package body Vhdl.Nodes_Meta is Iir_Kind_Association_Element_Package => 131, Iir_Kind_Association_Element_Type => 139, Iir_Kind_Association_Element_Subprogram => 145, - Iir_Kind_Choice_By_Range => 153, - Iir_Kind_Choice_By_Expression => 161, - Iir_Kind_Choice_By_Others => 167, - Iir_Kind_Choice_By_None => 173, - Iir_Kind_Choice_By_Name => 180, - Iir_Kind_Entity_Aspect_Entity => 182, - Iir_Kind_Entity_Aspect_Configuration => 183, - Iir_Kind_Entity_Aspect_Open => 183, - Iir_Kind_Psl_Hierarchical_Name => 185, - Iir_Kind_Block_Configuration => 191, - Iir_Kind_Block_Header => 195, - Iir_Kind_Component_Configuration => 202, - Iir_Kind_Binding_Indication => 206, - Iir_Kind_Entity_Class => 208, - Iir_Kind_Attribute_Value => 216, - Iir_Kind_Signature => 219, - Iir_Kind_Aggregate_Info => 226, - Iir_Kind_Procedure_Call => 230, - Iir_Kind_Record_Element_Constraint => 236, - Iir_Kind_Array_Element_Resolution => 238, - Iir_Kind_Record_Resolution => 239, - Iir_Kind_Record_Element_Resolution => 242, - Iir_Kind_Attribute_Specification => 250, - Iir_Kind_Disconnection_Specification => 256, - Iir_Kind_Configuration_Specification => 262, - Iir_Kind_Access_Type_Definition => 270, - Iir_Kind_Incomplete_Type_Definition => 278, - Iir_Kind_Interface_Type_Definition => 285, - Iir_Kind_File_Type_Definition => 292, - Iir_Kind_Protected_Type_Declaration => 301, - Iir_Kind_Record_Type_Definition => 312, - Iir_Kind_Array_Type_Definition => 324, - Iir_Kind_Array_Subtype_Definition => 339, - Iir_Kind_Record_Subtype_Definition => 352, - Iir_Kind_Access_Subtype_Definition => 360, - Iir_Kind_Physical_Subtype_Definition => 370, - Iir_Kind_Floating_Subtype_Definition => 381, - Iir_Kind_Integer_Subtype_Definition => 391, - Iir_Kind_Enumeration_Subtype_Definition => 401, - Iir_Kind_Enumeration_Type_Definition => 412, - Iir_Kind_Integer_Type_Definition => 420, - Iir_Kind_Floating_Type_Definition => 428, - Iir_Kind_Physical_Type_Definition => 439, - Iir_Kind_Range_Expression => 447, - Iir_Kind_Protected_Type_Body => 454, - Iir_Kind_Wildcard_Type_Definition => 459, - Iir_Kind_Subtype_Definition => 466, - Iir_Kind_Scalar_Nature_Definition => 470, - Iir_Kind_Overload_List => 471, - Iir_Kind_Entity_Declaration => 484, - Iir_Kind_Configuration_Declaration => 493, - Iir_Kind_Context_Declaration => 499, - Iir_Kind_Package_Declaration => 514, - Iir_Kind_Package_Instantiation_Declaration => 528, - Iir_Kind_Vmode_Declaration => 539, - Iir_Kind_Vprop_Declaration => 550, - Iir_Kind_Vunit_Declaration => 562, - Iir_Kind_Package_Body => 570, - Iir_Kind_Architecture_Body => 583, - Iir_Kind_Type_Declaration => 590, - Iir_Kind_Anonymous_Type_Declaration => 596, - Iir_Kind_Subtype_Declaration => 603, - Iir_Kind_Nature_Declaration => 609, - Iir_Kind_Subnature_Declaration => 615, - Iir_Kind_Package_Header => 617, - Iir_Kind_Unit_Declaration => 626, - Iir_Kind_Library_Declaration => 633, - Iir_Kind_Component_Declaration => 643, - Iir_Kind_Attribute_Declaration => 650, - Iir_Kind_Group_Template_Declaration => 656, - Iir_Kind_Group_Declaration => 663, - Iir_Kind_Element_Declaration => 670, - Iir_Kind_Non_Object_Alias_Declaration => 678, - Iir_Kind_Psl_Declaration => 686, - Iir_Kind_Psl_Endpoint_Declaration => 700, - Iir_Kind_Terminal_Declaration => 707, - Iir_Kind_Free_Quantity_Declaration => 718, - Iir_Kind_Across_Quantity_Declaration => 730, - Iir_Kind_Through_Quantity_Declaration => 742, - Iir_Kind_Enumeration_Literal => 753, - Iir_Kind_Function_Declaration => 778, - Iir_Kind_Procedure_Declaration => 802, - Iir_Kind_Function_Body => 812, - Iir_Kind_Procedure_Body => 823, - Iir_Kind_Object_Alias_Declaration => 834, - Iir_Kind_File_Declaration => 848, - Iir_Kind_Guard_Signal_Declaration => 861, - Iir_Kind_Signal_Declaration => 878, - Iir_Kind_Variable_Declaration => 891, - Iir_Kind_Constant_Declaration => 905, - Iir_Kind_Iterator_Declaration => 916, - Iir_Kind_Interface_Constant_Declaration => 932, - Iir_Kind_Interface_Variable_Declaration => 948, - Iir_Kind_Interface_Signal_Declaration => 969, - Iir_Kind_Interface_File_Declaration => 985, - Iir_Kind_Interface_Type_Declaration => 995, - Iir_Kind_Interface_Package_Declaration => 1007, - Iir_Kind_Interface_Function_Declaration => 1024, - Iir_Kind_Interface_Procedure_Declaration => 1037, - Iir_Kind_Anonymous_Signal_Declaration => 1046, - Iir_Kind_Signal_Attribute_Declaration => 1049, - Iir_Kind_Identity_Operator => 1053, - Iir_Kind_Negation_Operator => 1057, - Iir_Kind_Absolute_Operator => 1061, - Iir_Kind_Not_Operator => 1065, - Iir_Kind_Implicit_Condition_Operator => 1069, - Iir_Kind_Condition_Operator => 1073, - Iir_Kind_Reduction_And_Operator => 1077, - Iir_Kind_Reduction_Or_Operator => 1081, - Iir_Kind_Reduction_Nand_Operator => 1085, - Iir_Kind_Reduction_Nor_Operator => 1089, - Iir_Kind_Reduction_Xor_Operator => 1093, - Iir_Kind_Reduction_Xnor_Operator => 1097, - Iir_Kind_And_Operator => 1102, - Iir_Kind_Or_Operator => 1107, - Iir_Kind_Nand_Operator => 1112, - Iir_Kind_Nor_Operator => 1117, - Iir_Kind_Xor_Operator => 1122, - Iir_Kind_Xnor_Operator => 1127, - Iir_Kind_Equality_Operator => 1132, - Iir_Kind_Inequality_Operator => 1137, - Iir_Kind_Less_Than_Operator => 1142, - Iir_Kind_Less_Than_Or_Equal_Operator => 1147, - Iir_Kind_Greater_Than_Operator => 1152, - Iir_Kind_Greater_Than_Or_Equal_Operator => 1157, - Iir_Kind_Match_Equality_Operator => 1162, - Iir_Kind_Match_Inequality_Operator => 1167, - Iir_Kind_Match_Less_Than_Operator => 1172, - Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1177, - Iir_Kind_Match_Greater_Than_Operator => 1182, - Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1187, - Iir_Kind_Sll_Operator => 1192, - Iir_Kind_Sla_Operator => 1197, - Iir_Kind_Srl_Operator => 1202, - Iir_Kind_Sra_Operator => 1207, - Iir_Kind_Rol_Operator => 1212, - Iir_Kind_Ror_Operator => 1217, - Iir_Kind_Addition_Operator => 1222, - Iir_Kind_Substraction_Operator => 1227, - Iir_Kind_Concatenation_Operator => 1232, - Iir_Kind_Multiplication_Operator => 1237, - Iir_Kind_Division_Operator => 1242, - Iir_Kind_Modulus_Operator => 1247, - Iir_Kind_Remainder_Operator => 1252, - Iir_Kind_Exponentiation_Operator => 1257, - Iir_Kind_Function_Call => 1265, - Iir_Kind_Aggregate => 1272, - Iir_Kind_Parenthesis_Expression => 1275, - Iir_Kind_Qualified_Expression => 1279, - Iir_Kind_Type_Conversion => 1284, - Iir_Kind_Allocator_By_Expression => 1288, - Iir_Kind_Allocator_By_Subtype => 1293, - Iir_Kind_Selected_Element => 1301, - Iir_Kind_Dereference => 1306, - Iir_Kind_Implicit_Dereference => 1311, - Iir_Kind_Slice_Name => 1318, - Iir_Kind_Indexed_Name => 1324, - Iir_Kind_Psl_Expression => 1326, - Iir_Kind_Sensitized_Process_Statement => 1347, - Iir_Kind_Process_Statement => 1367, - Iir_Kind_Concurrent_Simple_Signal_Assignment => 1380, - Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1393, - Iir_Kind_Concurrent_Selected_Signal_Assignment => 1407, - Iir_Kind_Concurrent_Assertion_Statement => 1415, - Iir_Kind_Concurrent_Procedure_Call_Statement => 1422, - Iir_Kind_Psl_Assert_Directive => 1435, - Iir_Kind_Psl_Assume_Directive => 1446, - Iir_Kind_Psl_Cover_Directive => 1458, - Iir_Kind_Psl_Restrict_Directive => 1469, - Iir_Kind_Block_Statement => 1483, - Iir_Kind_If_Generate_Statement => 1494, - Iir_Kind_Case_Generate_Statement => 1503, - Iir_Kind_For_Generate_Statement => 1512, - Iir_Kind_Component_Instantiation_Statement => 1523, - Iir_Kind_Psl_Default_Clock => 1527, - Iir_Kind_Simple_Simultaneous_Statement => 1534, - Iir_Kind_Generate_Statement_Body => 1545, - Iir_Kind_If_Generate_Else_Clause => 1551, - Iir_Kind_Simple_Signal_Assignment_Statement => 1562, - Iir_Kind_Conditional_Signal_Assignment_Statement => 1573, - Iir_Kind_Selected_Waveform_Assignment_Statement => 1585, - Iir_Kind_Null_Statement => 1589, - Iir_Kind_Assertion_Statement => 1596, - Iir_Kind_Report_Statement => 1602, - Iir_Kind_Wait_Statement => 1610, - Iir_Kind_Variable_Assignment_Statement => 1617, - Iir_Kind_Conditional_Variable_Assignment_Statement => 1624, - Iir_Kind_Return_Statement => 1630, - Iir_Kind_For_Loop_Statement => 1641, - Iir_Kind_While_Loop_Statement => 1652, - Iir_Kind_Next_Statement => 1659, - Iir_Kind_Exit_Statement => 1666, - Iir_Kind_Case_Statement => 1674, - Iir_Kind_Procedure_Call_Statement => 1680, - Iir_Kind_If_Statement => 1690, - Iir_Kind_Elsif => 1696, - Iir_Kind_Character_Literal => 1704, - Iir_Kind_Simple_Name => 1712, - Iir_Kind_Selected_Name => 1721, - Iir_Kind_Operator_Symbol => 1727, - Iir_Kind_Reference_Name => 1732, - Iir_Kind_External_Constant_Name => 1740, - Iir_Kind_External_Signal_Name => 1748, - Iir_Kind_External_Variable_Name => 1757, - Iir_Kind_Selected_By_All_Name => 1763, - Iir_Kind_Parenthesis_Name => 1768, - Iir_Kind_Package_Pathname => 1772, - Iir_Kind_Absolute_Pathname => 1773, - Iir_Kind_Relative_Pathname => 1774, - Iir_Kind_Pathname_Element => 1779, - Iir_Kind_Base_Attribute => 1781, - Iir_Kind_Subtype_Attribute => 1786, - Iir_Kind_Element_Attribute => 1791, - Iir_Kind_Left_Type_Attribute => 1796, - Iir_Kind_Right_Type_Attribute => 1801, - Iir_Kind_High_Type_Attribute => 1806, - Iir_Kind_Low_Type_Attribute => 1811, - Iir_Kind_Ascending_Type_Attribute => 1816, - Iir_Kind_Image_Attribute => 1822, - Iir_Kind_Value_Attribute => 1828, - Iir_Kind_Pos_Attribute => 1834, - Iir_Kind_Val_Attribute => 1840, - Iir_Kind_Succ_Attribute => 1846, - Iir_Kind_Pred_Attribute => 1852, - Iir_Kind_Leftof_Attribute => 1858, - Iir_Kind_Rightof_Attribute => 1864, - Iir_Kind_Delayed_Attribute => 1873, - Iir_Kind_Stable_Attribute => 1882, - Iir_Kind_Quiet_Attribute => 1891, - Iir_Kind_Transaction_Attribute => 1900, - Iir_Kind_Event_Attribute => 1904, - Iir_Kind_Active_Attribute => 1908, - Iir_Kind_Last_Event_Attribute => 1912, - Iir_Kind_Last_Active_Attribute => 1916, - Iir_Kind_Last_Value_Attribute => 1920, - Iir_Kind_Driving_Attribute => 1924, - Iir_Kind_Driving_Value_Attribute => 1928, - Iir_Kind_Behavior_Attribute => 1928, - Iir_Kind_Structure_Attribute => 1928, - Iir_Kind_Simple_Name_Attribute => 1935, - Iir_Kind_Instance_Name_Attribute => 1940, - Iir_Kind_Path_Name_Attribute => 1945, - Iir_Kind_Left_Array_Attribute => 1952, - Iir_Kind_Right_Array_Attribute => 1959, - Iir_Kind_High_Array_Attribute => 1966, - Iir_Kind_Low_Array_Attribute => 1973, - Iir_Kind_Length_Array_Attribute => 1980, - Iir_Kind_Ascending_Array_Attribute => 1987, - Iir_Kind_Range_Array_Attribute => 1994, - Iir_Kind_Reverse_Range_Array_Attribute => 2001, - Iir_Kind_Attribute_Name => 2010 + Iir_Kind_Association_Element_Terminal => 151, + Iir_Kind_Choice_By_Range => 159, + Iir_Kind_Choice_By_Expression => 167, + Iir_Kind_Choice_By_Others => 173, + Iir_Kind_Choice_By_None => 179, + Iir_Kind_Choice_By_Name => 186, + Iir_Kind_Entity_Aspect_Entity => 188, + Iir_Kind_Entity_Aspect_Configuration => 189, + Iir_Kind_Entity_Aspect_Open => 189, + Iir_Kind_Psl_Hierarchical_Name => 191, + Iir_Kind_Block_Configuration => 197, + Iir_Kind_Block_Header => 201, + Iir_Kind_Component_Configuration => 208, + Iir_Kind_Binding_Indication => 212, + Iir_Kind_Entity_Class => 214, + Iir_Kind_Attribute_Value => 222, + Iir_Kind_Signature => 225, + Iir_Kind_Aggregate_Info => 232, + Iir_Kind_Procedure_Call => 236, + Iir_Kind_Record_Element_Constraint => 242, + Iir_Kind_Array_Element_Resolution => 244, + Iir_Kind_Record_Resolution => 245, + Iir_Kind_Record_Element_Resolution => 248, + Iir_Kind_Break_Element => 252, + Iir_Kind_Attribute_Specification => 260, + Iir_Kind_Disconnection_Specification => 266, + Iir_Kind_Step_Limit_Specification => 272, + Iir_Kind_Configuration_Specification => 278, + Iir_Kind_Access_Type_Definition => 286, + 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 => 428, + Iir_Kind_Integer_Type_Definition => 436, + Iir_Kind_Floating_Type_Definition => 444, + Iir_Kind_Physical_Type_Definition => 455, + Iir_Kind_Range_Expression => 463, + Iir_Kind_Protected_Type_Body => 470, + Iir_Kind_Wildcard_Type_Definition => 475, + Iir_Kind_Subtype_Definition => 482, + Iir_Kind_Scalar_Nature_Definition => 490, + Iir_Kind_Record_Nature_Definition => 502, + 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 => 553, + Iir_Kind_Context_Declaration => 559, + Iir_Kind_Package_Declaration => 574, + Iir_Kind_Package_Instantiation_Declaration => 588, + Iir_Kind_Vmode_Declaration => 599, + Iir_Kind_Vprop_Declaration => 610, + Iir_Kind_Vunit_Declaration => 622, + Iir_Kind_Package_Body => 630, + Iir_Kind_Architecture_Body => 643, + Iir_Kind_Type_Declaration => 650, + Iir_Kind_Anonymous_Type_Declaration => 656, + Iir_Kind_Subtype_Declaration => 663, + Iir_Kind_Nature_Declaration => 669, + Iir_Kind_Subnature_Declaration => 676, + Iir_Kind_Package_Header => 678, + Iir_Kind_Unit_Declaration => 687, + Iir_Kind_Library_Declaration => 694, + Iir_Kind_Component_Declaration => 704, + Iir_Kind_Attribute_Declaration => 711, + Iir_Kind_Group_Template_Declaration => 717, + Iir_Kind_Group_Declaration => 724, + Iir_Kind_Element_Declaration => 731, + Iir_Kind_Nature_Element_Declaration => 738, + Iir_Kind_Non_Object_Alias_Declaration => 746, + Iir_Kind_Psl_Declaration => 754, + Iir_Kind_Psl_Endpoint_Declaration => 768, + Iir_Kind_Enumeration_Literal => 779, + Iir_Kind_Function_Declaration => 804, + Iir_Kind_Procedure_Declaration => 828, + Iir_Kind_Function_Body => 838, + Iir_Kind_Procedure_Body => 849, + Iir_Kind_Terminal_Declaration => 858, + Iir_Kind_Object_Alias_Declaration => 869, + Iir_Kind_Free_Quantity_Declaration => 881, + Iir_Kind_Spectrum_Quantity_Declaration => 894, + Iir_Kind_Noise_Quantity_Declaration => 906, + Iir_Kind_Across_Quantity_Declaration => 922, + Iir_Kind_Through_Quantity_Declaration => 938, + Iir_Kind_File_Declaration => 952, + Iir_Kind_Guard_Signal_Declaration => 965, + Iir_Kind_Signal_Declaration => 982, + Iir_Kind_Variable_Declaration => 995, + Iir_Kind_Constant_Declaration => 1009, + Iir_Kind_Iterator_Declaration => 1020, + Iir_Kind_Interface_Constant_Declaration => 1036, + Iir_Kind_Interface_Variable_Declaration => 1052, + Iir_Kind_Interface_Signal_Declaration => 1073, + Iir_Kind_Interface_File_Declaration => 1089, + Iir_Kind_Interface_Quantity_Declaration => 1105, + Iir_Kind_Interface_Terminal_Declaration => 1117, + Iir_Kind_Interface_Type_Declaration => 1127, + Iir_Kind_Interface_Package_Declaration => 1139, + Iir_Kind_Interface_Function_Declaration => 1156, + Iir_Kind_Interface_Procedure_Declaration => 1169, + Iir_Kind_Anonymous_Signal_Declaration => 1178, + Iir_Kind_Signal_Attribute_Declaration => 1181, + Iir_Kind_Identity_Operator => 1185, + Iir_Kind_Negation_Operator => 1189, + Iir_Kind_Absolute_Operator => 1193, + Iir_Kind_Not_Operator => 1197, + Iir_Kind_Implicit_Condition_Operator => 1201, + Iir_Kind_Condition_Operator => 1205, + Iir_Kind_Reduction_And_Operator => 1209, + Iir_Kind_Reduction_Or_Operator => 1213, + Iir_Kind_Reduction_Nand_Operator => 1217, + Iir_Kind_Reduction_Nor_Operator => 1221, + Iir_Kind_Reduction_Xor_Operator => 1225, + Iir_Kind_Reduction_Xnor_Operator => 1229, + Iir_Kind_And_Operator => 1234, + Iir_Kind_Or_Operator => 1239, + Iir_Kind_Nand_Operator => 1244, + Iir_Kind_Nor_Operator => 1249, + Iir_Kind_Xor_Operator => 1254, + Iir_Kind_Xnor_Operator => 1259, + Iir_Kind_Equality_Operator => 1264, + Iir_Kind_Inequality_Operator => 1269, + Iir_Kind_Less_Than_Operator => 1274, + Iir_Kind_Less_Than_Or_Equal_Operator => 1279, + Iir_Kind_Greater_Than_Operator => 1284, + Iir_Kind_Greater_Than_Or_Equal_Operator => 1289, + Iir_Kind_Match_Equality_Operator => 1294, + Iir_Kind_Match_Inequality_Operator => 1299, + Iir_Kind_Match_Less_Than_Operator => 1304, + Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1309, + Iir_Kind_Match_Greater_Than_Operator => 1314, + Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1319, + Iir_Kind_Sll_Operator => 1324, + Iir_Kind_Sla_Operator => 1329, + Iir_Kind_Srl_Operator => 1334, + Iir_Kind_Sra_Operator => 1339, + Iir_Kind_Rol_Operator => 1344, + Iir_Kind_Ror_Operator => 1349, + Iir_Kind_Addition_Operator => 1354, + Iir_Kind_Substraction_Operator => 1359, + Iir_Kind_Concatenation_Operator => 1364, + Iir_Kind_Multiplication_Operator => 1369, + Iir_Kind_Division_Operator => 1374, + Iir_Kind_Modulus_Operator => 1379, + Iir_Kind_Remainder_Operator => 1384, + Iir_Kind_Exponentiation_Operator => 1389, + Iir_Kind_Function_Call => 1397, + Iir_Kind_Aggregate => 1404, + Iir_Kind_Parenthesis_Expression => 1407, + Iir_Kind_Qualified_Expression => 1411, + Iir_Kind_Type_Conversion => 1416, + Iir_Kind_Allocator_By_Expression => 1420, + Iir_Kind_Allocator_By_Subtype => 1425, + Iir_Kind_Selected_Element => 1433, + Iir_Kind_Dereference => 1438, + Iir_Kind_Implicit_Dereference => 1443, + Iir_Kind_Slice_Name => 1450, + Iir_Kind_Indexed_Name => 1456, + Iir_Kind_Psl_Expression => 1458, + Iir_Kind_Sensitized_Process_Statement => 1479, + Iir_Kind_Process_Statement => 1499, + Iir_Kind_Concurrent_Simple_Signal_Assignment => 1512, + Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1525, + Iir_Kind_Concurrent_Selected_Signal_Assignment => 1539, + Iir_Kind_Concurrent_Assertion_Statement => 1547, + Iir_Kind_Concurrent_Procedure_Call_Statement => 1554, + Iir_Kind_Concurrent_Break_Statement => 1562, + Iir_Kind_Psl_Assert_Directive => 1575, + Iir_Kind_Psl_Assume_Directive => 1586, + Iir_Kind_Psl_Cover_Directive => 1598, + Iir_Kind_Psl_Restrict_Directive => 1609, + Iir_Kind_Block_Statement => 1623, + Iir_Kind_If_Generate_Statement => 1634, + Iir_Kind_Case_Generate_Statement => 1643, + Iir_Kind_For_Generate_Statement => 1652, + Iir_Kind_Component_Instantiation_Statement => 1663, + Iir_Kind_Psl_Default_Clock => 1667, + Iir_Kind_Generate_Statement_Body => 1678, + Iir_Kind_If_Generate_Else_Clause => 1684, + Iir_Kind_Simple_Simultaneous_Statement => 1691, + Iir_Kind_Simultaneous_Procedural_Statement => 1699, + Iir_Kind_Simultaneous_If_Statement => 1708, + Iir_Kind_Simultaneous_Elsif => 1714, + Iir_Kind_Simple_Signal_Assignment_Statement => 1725, + Iir_Kind_Conditional_Signal_Assignment_Statement => 1736, + Iir_Kind_Selected_Waveform_Assignment_Statement => 1748, + Iir_Kind_Null_Statement => 1752, + Iir_Kind_Assertion_Statement => 1759, + Iir_Kind_Report_Statement => 1765, + Iir_Kind_Wait_Statement => 1773, + Iir_Kind_Variable_Assignment_Statement => 1780, + Iir_Kind_Conditional_Variable_Assignment_Statement => 1787, + Iir_Kind_Return_Statement => 1793, + Iir_Kind_For_Loop_Statement => 1804, + Iir_Kind_While_Loop_Statement => 1815, + Iir_Kind_Next_Statement => 1822, + Iir_Kind_Exit_Statement => 1829, + Iir_Kind_Case_Statement => 1837, + Iir_Kind_Procedure_Call_Statement => 1843, + Iir_Kind_Break_Statement => 1850, + Iir_Kind_If_Statement => 1860, + Iir_Kind_Elsif => 1866, + Iir_Kind_Character_Literal => 1874, + Iir_Kind_Simple_Name => 1882, + Iir_Kind_Selected_Name => 1891, + Iir_Kind_Operator_Symbol => 1897, + Iir_Kind_Reference_Name => 1902, + Iir_Kind_External_Constant_Name => 1910, + Iir_Kind_External_Signal_Name => 1918, + Iir_Kind_External_Variable_Name => 1927, + Iir_Kind_Selected_By_All_Name => 1933, + Iir_Kind_Parenthesis_Name => 1938, + Iir_Kind_Package_Pathname => 1942, + Iir_Kind_Absolute_Pathname => 1943, + Iir_Kind_Relative_Pathname => 1944, + Iir_Kind_Pathname_Element => 1949, + Iir_Kind_Base_Attribute => 1951, + Iir_Kind_Subtype_Attribute => 1956, + Iir_Kind_Element_Attribute => 1961, + Iir_Kind_Across_Attribute => 1966, + Iir_Kind_Through_Attribute => 1971, + Iir_Kind_Nature_Reference_Attribute => 1975, + Iir_Kind_Left_Type_Attribute => 1980, + Iir_Kind_Right_Type_Attribute => 1985, + Iir_Kind_High_Type_Attribute => 1990, + Iir_Kind_Low_Type_Attribute => 1995, + Iir_Kind_Ascending_Type_Attribute => 2000, + Iir_Kind_Image_Attribute => 2006, + Iir_Kind_Value_Attribute => 2012, + Iir_Kind_Pos_Attribute => 2018, + Iir_Kind_Val_Attribute => 2024, + Iir_Kind_Succ_Attribute => 2030, + Iir_Kind_Pred_Attribute => 2036, + Iir_Kind_Leftof_Attribute => 2042, + Iir_Kind_Rightof_Attribute => 2048, + Iir_Kind_Signal_Slew_Attribute => 2056, + Iir_Kind_Quantity_Slew_Attribute => 2064, + Iir_Kind_Ramp_Attribute => 2072, + Iir_Kind_Dot_Attribute => 2079, + Iir_Kind_Integ_Attribute => 2086, + Iir_Kind_Above_Attribute => 2094, + Iir_Kind_Delayed_Attribute => 2103, + Iir_Kind_Stable_Attribute => 2112, + Iir_Kind_Quiet_Attribute => 2121, + Iir_Kind_Transaction_Attribute => 2130, + Iir_Kind_Event_Attribute => 2134, + Iir_Kind_Active_Attribute => 2138, + Iir_Kind_Last_Event_Attribute => 2142, + Iir_Kind_Last_Active_Attribute => 2146, + Iir_Kind_Last_Value_Attribute => 2150, + Iir_Kind_Driving_Attribute => 2154, + Iir_Kind_Driving_Value_Attribute => 2158, + Iir_Kind_Behavior_Attribute => 2158, + Iir_Kind_Structure_Attribute => 2158, + Iir_Kind_Simple_Name_Attribute => 2165, + Iir_Kind_Instance_Name_Attribute => 2170, + Iir_Kind_Path_Name_Attribute => 2175, + Iir_Kind_Left_Array_Attribute => 2182, + Iir_Kind_Right_Array_Attribute => 2189, + Iir_Kind_High_Array_Attribute => 2196, + Iir_Kind_Low_Array_Attribute => 2203, + Iir_Kind_Length_Array_Attribute => 2210, + Iir_Kind_Ascending_Array_Attribute => 2217, + Iir_Kind_Range_Array_Attribute => 2224, + Iir_Kind_Reverse_Range_Array_Attribute => 2231, + Iir_Kind_Attribute_Name => 2240 ); function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -5356,8 +5796,12 @@ package body Vhdl.Nodes_Meta is return Get_Incomplete_Type_Declaration (N); when Field_Interface_Type_Subprograms => return Get_Interface_Type_Subprograms (N); + when Field_Nature_Definition => + return Get_Nature_Definition (N); when Field_Nature => return Get_Nature (N); + when Field_Subnature_Indication => + return Get_Subnature_Indication (N); when Field_Base_Name => return Get_Base_Name (N); when Field_Interface_Declaration_Chain => @@ -5366,6 +5810,8 @@ package body Vhdl.Nodes_Meta is return Get_Subprogram_Specification (N); when Field_Sequential_Statement_Chain => return Get_Sequential_Statement_Chain (N); + when Field_Simultaneous_Statement_Chain => + return Get_Simultaneous_Statement_Chain (N); when Field_Subprogram_Body => return Get_Subprogram_Body (N); when Field_Return_Type => @@ -5418,16 +5864,28 @@ package body Vhdl.Nodes_Meta is return Get_Right_Limit_Expr (N); when Field_Base_Type => return Get_Base_Type (N); + when Field_Base_Nature => + return Get_Base_Nature (N); when Field_Resolution_Indication => return Get_Resolution_Indication (N); when Field_Record_Element_Resolution_Chain => return Get_Record_Element_Resolution_Chain (N); when Field_Tolerance => return Get_Tolerance (N); + when Field_Plus_Terminal_Name => + return Get_Plus_Terminal_Name (N); + when Field_Minus_Terminal_Name => + return Get_Minus_Terminal_Name (N); when Field_Plus_Terminal => return Get_Plus_Terminal (N); when Field_Minus_Terminal => return Get_Minus_Terminal (N); + when Field_Magnitude_Expression => + return Get_Magnitude_Expression (N); + when Field_Phase_Expression => + return Get_Phase_Expression (N); + when Field_Power_Expression => + return Get_Power_Expression (N); when Field_Simultaneous_Left => return Get_Simultaneous_Left (N); when Field_Simultaneous_Right => @@ -5436,6 +5894,10 @@ package body Vhdl.Nodes_Meta is return Get_Element_Subtype_Indication (N); when Field_Element_Subtype => return Get_Element_Subtype (N); + when Field_Element_Subnature_Indication => + return Get_Element_Subnature_Indication (N); + when Field_Element_Subnature => + return Get_Element_Subnature (N); when Field_Array_Element_Constraint => return Get_Array_Element_Constraint (N); when Field_Owned_Elements_Chain => @@ -5448,6 +5910,14 @@ package body Vhdl.Nodes_Meta is return Get_Reference (N); when Field_Nature_Declarator => return Get_Nature_Declarator (N); + when Field_Across_Type_Mark => + return Get_Across_Type_Mark (N); + when Field_Through_Type_Mark => + return Get_Through_Type_Mark (N); + when Field_Across_Type_Definition => + return Get_Across_Type_Definition (N); + when Field_Through_Type_Definition => + return Get_Through_Type_Definition (N); when Field_Across_Type => return Get_Across_Type (N); when Field_Through_Type => @@ -5466,6 +5936,12 @@ package body Vhdl.Nodes_Meta is return Get_Package_Origin (N); when Field_Condition_Clause => return Get_Condition_Clause (N); + when Field_Break_Element => + return Get_Break_Element (N); + when Field_Selector_Quantity => + return Get_Selector_Quantity (N); + when Field_Break_Quantity => + return Get_Break_Quantity (N); when Field_Timeout_Clause => return Get_Timeout_Clause (N); when Field_Assertion_Condition => @@ -5578,6 +6054,8 @@ package body Vhdl.Nodes_Meta is return Get_Index_Subtype (N); when Field_Parameter => return Get_Parameter (N); + when Field_Parameter_2 => + return Get_Parameter_2 (N); when Field_Attr_Chain => return Get_Attr_Chain (N); when Field_Signal_Attribute_Declaration => @@ -5614,6 +6092,8 @@ package body Vhdl.Nodes_Meta is return Get_Method_Object (N); when Field_Subtype_Type_Mark => return Get_Subtype_Type_Mark (N); + when Field_Subnature_Nature_Mark => + return Get_Subnature_Nature_Mark (N); when Field_Type_Conversion_Subtype => return Get_Type_Conversion_Subtype (N); when Field_Type_Mark => @@ -5758,8 +6238,12 @@ package body Vhdl.Nodes_Meta is Set_Incomplete_Type_Declaration (N, V); when Field_Interface_Type_Subprograms => Set_Interface_Type_Subprograms (N, V); + when Field_Nature_Definition => + Set_Nature_Definition (N, V); when Field_Nature => Set_Nature (N, V); + when Field_Subnature_Indication => + Set_Subnature_Indication (N, V); when Field_Base_Name => Set_Base_Name (N, V); when Field_Interface_Declaration_Chain => @@ -5768,6 +6252,8 @@ package body Vhdl.Nodes_Meta is Set_Subprogram_Specification (N, V); when Field_Sequential_Statement_Chain => Set_Sequential_Statement_Chain (N, V); + when Field_Simultaneous_Statement_Chain => + Set_Simultaneous_Statement_Chain (N, V); when Field_Subprogram_Body => Set_Subprogram_Body (N, V); when Field_Return_Type => @@ -5820,16 +6306,28 @@ package body Vhdl.Nodes_Meta is Set_Right_Limit_Expr (N, V); when Field_Base_Type => Set_Base_Type (N, V); + when Field_Base_Nature => + Set_Base_Nature (N, V); when Field_Resolution_Indication => Set_Resolution_Indication (N, V); when Field_Record_Element_Resolution_Chain => Set_Record_Element_Resolution_Chain (N, V); when Field_Tolerance => Set_Tolerance (N, V); + when Field_Plus_Terminal_Name => + Set_Plus_Terminal_Name (N, V); + when Field_Minus_Terminal_Name => + Set_Minus_Terminal_Name (N, V); when Field_Plus_Terminal => Set_Plus_Terminal (N, V); when Field_Minus_Terminal => Set_Minus_Terminal (N, V); + when Field_Magnitude_Expression => + Set_Magnitude_Expression (N, V); + when Field_Phase_Expression => + Set_Phase_Expression (N, V); + when Field_Power_Expression => + Set_Power_Expression (N, V); when Field_Simultaneous_Left => Set_Simultaneous_Left (N, V); when Field_Simultaneous_Right => @@ -5838,6 +6336,10 @@ package body Vhdl.Nodes_Meta is Set_Element_Subtype_Indication (N, V); when Field_Element_Subtype => Set_Element_Subtype (N, V); + when Field_Element_Subnature_Indication => + Set_Element_Subnature_Indication (N, V); + when Field_Element_Subnature => + Set_Element_Subnature (N, V); when Field_Array_Element_Constraint => Set_Array_Element_Constraint (N, V); when Field_Owned_Elements_Chain => @@ -5850,6 +6352,14 @@ package body Vhdl.Nodes_Meta is Set_Reference (N, V); when Field_Nature_Declarator => Set_Nature_Declarator (N, V); + when Field_Across_Type_Mark => + Set_Across_Type_Mark (N, V); + when Field_Through_Type_Mark => + Set_Through_Type_Mark (N, V); + when Field_Across_Type_Definition => + Set_Across_Type_Definition (N, V); + when Field_Through_Type_Definition => + Set_Through_Type_Definition (N, V); when Field_Across_Type => Set_Across_Type (N, V); when Field_Through_Type => @@ -5868,6 +6378,12 @@ package body Vhdl.Nodes_Meta is Set_Package_Origin (N, V); when Field_Condition_Clause => Set_Condition_Clause (N, V); + when Field_Break_Element => + Set_Break_Element (N, V); + when Field_Selector_Quantity => + Set_Selector_Quantity (N, V); + when Field_Break_Quantity => + Set_Break_Quantity (N, V); when Field_Timeout_Clause => Set_Timeout_Clause (N, V); when Field_Assertion_Condition => @@ -5980,6 +6496,8 @@ package body Vhdl.Nodes_Meta is Set_Index_Subtype (N, V); when Field_Parameter => Set_Parameter (N, V); + when Field_Parameter_2 => + Set_Parameter_2 (N, V); when Field_Attr_Chain => Set_Attr_Chain (N, V); when Field_Signal_Attribute_Declaration => @@ -6016,6 +6534,8 @@ package body Vhdl.Nodes_Meta is Set_Method_Object (N, V); when Field_Subtype_Type_Mark => Set_Subtype_Type_Mark (N, V); + when Field_Subnature_Nature_Mark => + Set_Subnature_Nature_Mark (N, V); when Field_Type_Conversion_Subtype => Set_Type_Conversion_Subtype (N, V); when Field_Type_Mark => @@ -6146,6 +6666,8 @@ package body Vhdl.Nodes_Meta is return Get_Entity_Name_List (N); when Field_Signal_List => return Get_Signal_List (N); + when Field_Quantity_List => + return Get_Quantity_List (N); when Field_Enumeration_Literal_List => return Get_Enumeration_Literal_List (N); when Field_Group_Constituent_List => @@ -6180,6 +6702,8 @@ package body Vhdl.Nodes_Meta is Set_Entity_Name_List (N, V); when Field_Signal_List => Set_Signal_List (N, V); + when Field_Quantity_List => + Set_Quantity_List (N, V); when Field_Enumeration_Literal_List => Set_Enumeration_Literal_List (N, V); when Field_Group_Constituent_List => @@ -6424,6 +6948,8 @@ package body Vhdl.Nodes_Meta is begin pragma Assert (Fields_Type (F) = Type_Iir_Staticness); case F is + when Field_Nature_Staticness => + return Get_Nature_Staticness (N); when Field_Type_Staticness => return Get_Type_Staticness (N); when Field_Expr_Staticness => @@ -6442,6 +6968,8 @@ package body Vhdl.Nodes_Meta is begin pragma Assert (Fields_Type (F) = Type_Iir_Staticness); case F is + when Field_Nature_Staticness => + Set_Nature_Staticness (N, V); when Field_Type_Staticness => Set_Type_Staticness (N, V); when Field_Expr_Staticness => @@ -7111,6 +7639,11 @@ package body Vhdl.Nodes_Meta is return K = Iir_Kind_Disconnection_Specification; end Has_Signal_List; + function Has_Quantity_List (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Step_Limit_Specification; + end Has_Quantity_List; + function Has_Designated_Entity (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Attribute_Value; @@ -7124,7 +7657,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type - | Iir_Kind_Association_Element_Subprogram => + | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal => return True; when others => return False; @@ -7137,7 +7671,8 @@ package body Vhdl.Nodes_Meta is when Iir_Kind_Association_Element_By_Expression | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type - | Iir_Kind_Association_Element_Subprogram => + | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal => return True; when others => return False; @@ -7162,7 +7697,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type - | Iir_Kind_Association_Element_Subprogram => + | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal => return True; when others => return False; @@ -7177,7 +7713,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type - | Iir_Kind_Association_Element_Subprogram => + | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal => return True; when others => return False; @@ -7203,6 +7740,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Anonymous_Signal_Declaration => return True; when others => @@ -7349,7 +7887,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement - | Iir_Kind_Generate_Statement_Body => + | Iir_Kind_Generate_Statement_Body + | Iir_Kind_Simultaneous_Procedural_Statement => return True; when others => return False; @@ -7504,6 +8043,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal | Iir_Kind_Choice_By_Range | Iir_Kind_Choice_By_Expression | Iir_Kind_Choice_By_Others @@ -7514,8 +8054,10 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Entity_Class | Iir_Kind_Record_Element_Constraint | Iir_Kind_Record_Element_Resolution + | Iir_Kind_Break_Element | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification + | Iir_Kind_Step_Limit_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body | Iir_Kind_Package_Declaration @@ -7535,15 +8077,17 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Terminal_Declaration - | Iir_Kind_Free_Quantity_Declaration - | Iir_Kind_Across_Quantity_Declaration - | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body + | Iir_Kind_Terminal_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration @@ -7553,6 +8097,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration @@ -7566,6 +8112,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Psl_Assert_Directive | Iir_Kind_Psl_Assume_Directive | Iir_Kind_Psl_Cover_Directive @@ -7577,6 +8124,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Simple_Simultaneous_Statement + | Iir_Kind_Simultaneous_If_Statement | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -7593,6 +8141,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement | Iir_Kind_External_Constant_Name | Iir_Kind_External_Signal_Name @@ -7653,12 +8202,14 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Attribute_Declaration | Iir_Kind_Element_Declaration | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Free_Quantity_Declaration - | Iir_Kind_Across_Quantity_Declaration - | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -7669,6 +8220,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Anonymous_Signal_Declaration @@ -7743,6 +8295,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Base_Attribute | Iir_Kind_Subtype_Attribute | Iir_Kind_Element_Attribute + | Iir_Kind_Across_Attribute + | Iir_Kind_Through_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute @@ -7756,6 +8310,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -7790,8 +8350,10 @@ package body Vhdl.Nodes_Meta is case K is when Iir_Kind_Subtype_Declaration | Iir_Kind_Element_Declaration - | Iir_Kind_Free_Quantity_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration @@ -7801,6 +8363,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Allocator_By_Subtype | Iir_Kind_External_Constant_Name | Iir_Kind_External_Signal_Name @@ -7848,18 +8411,39 @@ package body Vhdl.Nodes_Meta is return K = Iir_Kind_Interface_Type_Declaration; end Has_Interface_Type_Subprograms; + function Has_Nature_Definition (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Nature_Declaration; + end Has_Nature_Definition; + function Has_Nature (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Nature_Declaration | Iir_Kind_Subnature_Declaration - | Iir_Kind_Terminal_Declaration => + | Iir_Kind_Nature_Element_Declaration + | Iir_Kind_Terminal_Declaration + | Iir_Kind_Interface_Terminal_Declaration + | Iir_Kind_Nature_Reference_Attribute => return True; when others => return False; end case; end Has_Nature; + function Has_Subnature_Indication (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Subnature_Declaration + | Iir_Kind_Nature_Element_Declaration + | Iir_Kind_Terminal_Declaration + | Iir_Kind_Interface_Terminal_Declaration => + return True; + when others => + return False; + end case; + end Has_Subnature_Indication; + function Has_Mode (K : Iir_Kind) return Boolean is begin case K is @@ -7867,7 +8451,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration - | Iir_Kind_Interface_File_Declaration => + | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration => return True; when others => return False; @@ -7915,6 +8500,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Selected_By_All_Name | Iir_Kind_Subtype_Attribute | Iir_Kind_Element_Attribute + | Iir_Kind_Across_Attribute + | Iir_Kind_Through_Attribute + | Iir_Kind_Nature_Reference_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute @@ -7928,6 +8516,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -7981,6 +8575,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Procedure_Body | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement + | Iir_Kind_Simultaneous_Procedural_Statement | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_If_Statement @@ -7991,6 +8586,17 @@ package body Vhdl.Nodes_Meta is end case; end Has_Sequential_Statement_Chain; + function Has_Simultaneous_Statement_Chain (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif => + return True; + when others => + return False; + end case; + end Has_Simultaneous_Statement_Chain; + function Has_Subprogram_Body (K : Iir_Kind) return Boolean is begin case K is @@ -8087,6 +8693,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Anonymous_Signal_Declaration => return True; when others => @@ -8163,7 +8770,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement | Iir_Kind_Block_Statement - | Iir_Kind_Generate_Statement_Body => + | Iir_Kind_Generate_Statement_Body + | Iir_Kind_Simultaneous_Procedural_Statement => return True; when others => return False; @@ -8184,7 +8792,8 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Record_Element_Constraint - | Iir_Kind_Element_Declaration => + | Iir_Kind_Element_Declaration + | Iir_Kind_Nature_Element_Declaration => return True; when others => return False; @@ -8318,17 +8927,20 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Element_Declaration + | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Terminal_Declaration - | Iir_Kind_Free_Quantity_Declaration - | Iir_Kind_Across_Quantity_Declaration - | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration + | Iir_Kind_Terminal_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -8339,6 +8951,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration @@ -8352,6 +8966,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Psl_Assert_Directive | Iir_Kind_Psl_Assume_Directive | Iir_Kind_Psl_Cover_Directive @@ -8362,8 +8977,10 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Psl_Default_Clock - | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body + | Iir_Kind_Simple_Simultaneous_Statement + | Iir_Kind_Simultaneous_Procedural_Statement + | Iir_Kind_Simultaneous_If_Statement | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -8380,6 +8997,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement | Iir_Kind_Character_Literal | Iir_Kind_Simple_Name @@ -8404,6 +9022,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Psl_Assert_Directive | Iir_Kind_Psl_Assume_Directive | Iir_Kind_Psl_Cover_Directive @@ -8415,6 +9034,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Psl_Default_Clock | Iir_Kind_Simple_Simultaneous_Statement + | Iir_Kind_Simultaneous_Procedural_Statement + | Iir_Kind_Simultaneous_If_Statement | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -8431,6 +9052,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement => return True; when others => @@ -8462,17 +9084,20 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Element_Declaration + | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Terminal_Declaration - | Iir_Kind_Free_Quantity_Declaration - | Iir_Kind_Across_Quantity_Declaration - | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration + | Iir_Kind_Terminal_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -8483,6 +9108,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration @@ -8494,6 +9121,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Psl_Assert_Directive | Iir_Kind_Psl_Assume_Directive | Iir_Kind_Psl_Cover_Directive @@ -8503,8 +9131,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Case_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement - | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_If_Generate_Else_Clause + | Iir_Kind_Simple_Simultaneous_Statement + | Iir_Kind_Simultaneous_If_Statement | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -8521,6 +9150,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement => return True; when others => @@ -8601,6 +9231,19 @@ package body Vhdl.Nodes_Meta is end case; end Has_Base_Type; + function Has_Base_Nature (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Scalar_Nature_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; + end Has_Base_Nature; + function Has_Resolution_Indication (K : Iir_Kind) return Boolean is begin case K is @@ -8632,6 +9275,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Record_Subtype_Definition | Iir_Kind_Floating_Subtype_Definition | Iir_Kind_Subtype_Definition + | Iir_Kind_Array_Subnature_Definition | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Simple_Simultaneous_Statement => @@ -8641,6 +9285,28 @@ package body Vhdl.Nodes_Meta is end case; end Has_Tolerance; + function Has_Plus_Terminal_Name (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration => + return True; + when others => + return False; + end case; + end Has_Plus_Terminal_Name; + + function Has_Minus_Terminal_Name (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration => + return True; + when others => + return False; + end case; + end Has_Minus_Terminal_Name; + function Has_Plus_Terminal (K : Iir_Kind) return Boolean is begin case K is @@ -8663,6 +9329,21 @@ package body Vhdl.Nodes_Meta is end case; end Has_Minus_Terminal; + function Has_Magnitude_Expression (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Spectrum_Quantity_Declaration; + end Has_Magnitude_Expression; + + function Has_Phase_Expression (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Spectrum_Quantity_Declaration; + end Has_Phase_Expression; + + function Has_Power_Expression (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Noise_Quantity_Declaration; + end Has_Power_Expression; + function Has_Simultaneous_Left (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Simple_Simultaneous_Statement; @@ -8688,6 +9369,19 @@ package body Vhdl.Nodes_Meta is return K = Iir_Kind_Enumeration_Type_Definition; end Has_Is_Character_Type; + function Has_Nature_Staticness (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Scalar_Nature_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; + end Has_Nature_Staticness; + function Has_Type_Staticness (K : Iir_Kind) return Boolean is begin case K is @@ -8712,7 +9406,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Physical_Type_Definition | Iir_Kind_Wildcard_Type_Definition | Iir_Kind_Subtype_Attribute - | Iir_Kind_Element_Attribute => + | Iir_Kind_Element_Attribute + | Iir_Kind_Across_Attribute + | Iir_Kind_Through_Attribute => return True; when others => return False; @@ -8725,7 +9421,10 @@ package body Vhdl.Nodes_Meta is when Iir_Kind_Record_Type_Definition | Iir_Kind_Array_Type_Definition | Iir_Kind_Array_Subtype_Definition - | Iir_Kind_Record_Subtype_Definition => + | Iir_Kind_Record_Subtype_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => return True; when others => return False; @@ -8736,7 +9435,9 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Array_Type_Definition - | Iir_Kind_Array_Subtype_Definition => + | Iir_Kind_Array_Subtype_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => return True; when others => return False; @@ -8746,7 +9447,13 @@ package body Vhdl.Nodes_Meta is function Has_Index_Subtype_Definition_List (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Array_Type_Definition; + case K is + when Iir_Kind_Array_Type_Definition + | Iir_Kind_Array_Nature_Definition => + return True; + when others => + return False; + end case; end Has_Index_Subtype_Definition_List; function Has_Element_Subtype_Indication (K : Iir_Kind) return Boolean is @@ -8771,21 +9478,50 @@ package body Vhdl.Nodes_Meta is end case; end Has_Element_Subtype; + function Has_Element_Subnature_Indication (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Array_Nature_Definition; + end Has_Element_Subnature_Indication; + + function Has_Element_Subnature (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; + end Has_Element_Subnature; + function Has_Index_Constraint_List (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Array_Subtype_Definition; + case K is + when Iir_Kind_Array_Subtype_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; end Has_Index_Constraint_List; function Has_Array_Element_Constraint (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Array_Subtype_Definition; + case K is + when Iir_Kind_Array_Subtype_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; end Has_Array_Element_Constraint; function Has_Elements_Declaration_List (K : Iir_Kind) return Boolean is begin case K is when Iir_Kind_Record_Type_Definition - | Iir_Kind_Record_Subtype_Definition => + | Iir_Kind_Record_Subtype_Definition + | Iir_Kind_Record_Nature_Definition => return True; when others => return False; @@ -8832,17 +9568,75 @@ package body Vhdl.Nodes_Meta is function Has_Nature_Declarator (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Scalar_Nature_Definition; + case K is + when Iir_Kind_Scalar_Nature_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; end Has_Nature_Declarator; - function Has_Across_Type (K : Iir_Kind) return Boolean is + function Has_Across_Type_Mark (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Scalar_Nature_Definition; + end Has_Across_Type_Mark; + + function Has_Through_Type_Mark (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Scalar_Nature_Definition; + end Has_Through_Type_Mark; + + function Has_Across_Type_Definition (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; + end Has_Across_Type_Definition; + + function Has_Through_Type_Definition (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; + end Has_Through_Type_Definition; + + function Has_Across_Type (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Scalar_Nature_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; end Has_Across_Type; function Has_Through_Type (K : Iir_Kind) return Boolean is begin - return K = Iir_Kind_Scalar_Nature_Definition; + case K is + when Iir_Kind_Scalar_Nature_Definition + | Iir_Kind_Record_Nature_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => + return True; + when others => + return False; + end case; end Has_Through_Type; function Has_Target (K : Iir_Kind) return Boolean is @@ -8920,6 +9714,7 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Sensitized_Process_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Wait_Statement => return True; when others => @@ -8948,6 +9743,27 @@ package body Vhdl.Nodes_Meta is return K = Iir_Kind_Wait_Statement; end Has_Condition_Clause; + function Has_Break_Element (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Concurrent_Break_Statement + | Iir_Kind_Break_Statement => + return True; + when others => + return False; + end case; + end Has_Break_Element; + + function Has_Selector_Quantity (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Break_Element; + end Has_Selector_Quantity; + + function Has_Break_Quantity (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Break_Element; + end Has_Break_Quantity; + function Has_Timeout_Clause (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Wait_Statement; @@ -9189,7 +10005,9 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Array_Type_Definition - | Iir_Kind_Array_Subtype_Definition => + | Iir_Kind_Array_Subtype_Definition + | Iir_Kind_Array_Nature_Definition + | Iir_Kind_Array_Subnature_Definition => return True; when others => return False; @@ -9307,8 +10125,10 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Conditional_Expression + | Iir_Kind_Break_Element | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification + | Iir_Kind_Step_Limit_Specification | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Parenthesis_Expression | Iir_Kind_Qualified_Expression @@ -9470,11 +10290,15 @@ package body Vhdl.Nodes_Meta is case K is when Iir_Kind_Conditional_Waveform | Iir_Kind_Conditional_Expression + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_If_Generate_Else_Clause + | Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; @@ -9486,7 +10310,9 @@ package body Vhdl.Nodes_Meta is function Has_Else_Clause (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_If_Statement + when Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif + | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; when others => @@ -9523,6 +10349,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Record_Element_Constraint | Iir_Kind_Attribute_Specification | Iir_Kind_Disconnection_Specification + | Iir_Kind_Step_Limit_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Protected_Type_Body | Iir_Kind_Entity_Declaration @@ -9546,19 +10373,22 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Group_Template_Declaration | Iir_Kind_Group_Declaration | Iir_Kind_Element_Declaration + | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Endpoint_Declaration - | Iir_Kind_Terminal_Declaration - | Iir_Kind_Free_Quantity_Declaration - | Iir_Kind_Across_Quantity_Declaration - | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Enumeration_Literal | Iir_Kind_Function_Declaration | Iir_Kind_Procedure_Declaration | Iir_Kind_Function_Body | Iir_Kind_Procedure_Body + | Iir_Kind_Terminal_Declaration | Iir_Kind_Object_Alias_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -9569,6 +10399,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Package_Declaration | Iir_Kind_Interface_Function_Declaration @@ -9582,6 +10414,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Concurrent_Selected_Signal_Assignment | Iir_Kind_Concurrent_Assertion_Statement | Iir_Kind_Concurrent_Procedure_Call_Statement + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_Psl_Assert_Directive | Iir_Kind_Psl_Assume_Directive | Iir_Kind_Psl_Cover_Directive @@ -9592,9 +10425,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_For_Generate_Statement | Iir_Kind_Component_Instantiation_Statement | Iir_Kind_Psl_Default_Clock - | Iir_Kind_Simple_Simultaneous_Statement | Iir_Kind_Generate_Statement_Body | Iir_Kind_If_Generate_Else_Clause + | Iir_Kind_Simple_Simultaneous_Statement + | Iir_Kind_Simultaneous_Procedural_Statement + | Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -9611,6 +10447,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Exit_Statement | Iir_Kind_Case_Statement | Iir_Kind_Procedure_Call_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif | Iir_Kind_External_Constant_Name @@ -9755,11 +10592,13 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Range_Expression | Iir_Kind_Unit_Declaration | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Enumeration_Literal + | Iir_Kind_Object_Alias_Declaration | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration - | Iir_Kind_Enumeration_Literal - | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -9770,6 +10609,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Identity_Operator | Iir_Kind_Negation_Operator @@ -9848,6 +10688,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -10030,11 +10876,14 @@ package body Vhdl.Nodes_Meta is when Iir_Kind_Attribute_Value | Iir_Kind_Unit_Declaration | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Enumeration_Literal + | Iir_Kind_Terminal_Declaration + | Iir_Kind_Object_Alias_Declaration | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration - | Iir_Kind_Enumeration_Literal - | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -10045,6 +10894,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Function_Call | Iir_Kind_Selected_Element @@ -10060,6 +10911,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_External_Variable_Name | Iir_Kind_Subtype_Attribute | Iir_Kind_Element_Attribute + | Iir_Kind_Across_Attribute + | Iir_Kind_Through_Attribute + | Iir_Kind_Nature_Reference_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute @@ -10073,6 +10927,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -10118,6 +10978,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Base_Attribute | Iir_Kind_Subtype_Attribute | Iir_Kind_Element_Attribute + | Iir_Kind_Across_Attribute + | Iir_Kind_Through_Attribute + | Iir_Kind_Nature_Reference_Attribute | Iir_Kind_Left_Type_Attribute | Iir_Kind_Right_Type_Attribute | Iir_Kind_High_Type_Attribute @@ -10131,6 +10994,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -10203,7 +11072,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Association_Element_Open | Iir_Kind_Association_Element_Package | Iir_Kind_Association_Element_Type - | Iir_Kind_Association_Element_Subprogram => + | Iir_Kind_Association_Element_Subprogram + | Iir_Kind_Association_Element_Terminal => return True; when others => return False; @@ -10248,6 +11118,10 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Pred_Attribute | Iir_Kind_Leftof_Attribute | Iir_Kind_Rightof_Attribute + | Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Above_Attribute | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute @@ -10266,10 +11140,28 @@ package body Vhdl.Nodes_Meta is end case; end Has_Parameter; + function Has_Parameter_2 (K : Iir_Kind) return Boolean is + begin + case K is + when Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute => + return True; + when others => + return False; + end case; + end Has_Parameter_2; + function Has_Attr_Chain (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_Delayed_Attribute + when Iir_Kind_Signal_Slew_Attribute + | Iir_Kind_Quantity_Slew_Attribute + | Iir_Kind_Ramp_Attribute + | Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute + | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute => @@ -10282,7 +11174,10 @@ package body Vhdl.Nodes_Meta is function Has_Signal_Attribute_Declaration (K : Iir_Kind) return Boolean is begin case K is - when Iir_Kind_Delayed_Attribute + when Iir_Kind_Dot_Attribute + | Iir_Kind_Integ_Attribute + | Iir_Kind_Above_Attribute + | Iir_Kind_Delayed_Attribute | Iir_Kind_Stable_Attribute | Iir_Kind_Quiet_Attribute | Iir_Kind_Transaction_Attribute => @@ -10502,6 +11397,11 @@ package body Vhdl.Nodes_Meta is end case; end Has_Subtype_Type_Mark; + function Has_Subnature_Nature_Mark (K : Iir_Kind) return Boolean is + begin + return K = Iir_Kind_Array_Subnature_Definition; + end Has_Subnature_Nature_Mark; + function Has_Type_Conversion_Subtype (K : Iir_Kind) return Boolean is begin return K = Iir_Kind_Type_Conversion; @@ -10511,6 +11411,7 @@ package body Vhdl.Nodes_Meta is begin case K is when Iir_Kind_Disconnection_Specification + | Iir_Kind_Step_Limit_Specification | Iir_Kind_Attribute_Declaration | Iir_Kind_Qualified_Expression | Iir_Kind_Type_Conversion => @@ -10653,13 +11554,15 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Non_Object_Alias_Declaration | Iir_Kind_Psl_Declaration | Iir_Kind_Psl_Endpoint_Declaration + | Iir_Kind_Function_Declaration + | Iir_Kind_Procedure_Declaration | Iir_Kind_Terminal_Declaration + | Iir_Kind_Object_Alias_Declaration | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration | Iir_Kind_Across_Quantity_Declaration | Iir_Kind_Through_Quantity_Declaration - | Iir_Kind_Function_Declaration - | Iir_Kind_Procedure_Declaration - | Iir_Kind_Object_Alias_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Guard_Signal_Declaration | Iir_Kind_Signal_Declaration @@ -10670,6 +11573,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Interface_Function_Declaration | Iir_Kind_Interface_Procedure_Declaration => @@ -10686,6 +11591,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Record_Type_Definition | Iir_Kind_Physical_Type_Definition | Iir_Kind_Protected_Type_Body + | Iir_Kind_Record_Nature_Definition | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration @@ -10704,7 +11610,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Block_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_Case_Generate_Statement - | Iir_Kind_For_Generate_Statement => + | Iir_Kind_For_Generate_Statement + | Iir_Kind_Simultaneous_Procedural_Statement => return True; when others => return False; @@ -10718,6 +11625,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Record_Type_Definition | Iir_Kind_Physical_Type_Definition | Iir_Kind_Protected_Type_Body + | Iir_Kind_Record_Nature_Definition | Iir_Kind_Entity_Declaration | Iir_Kind_Configuration_Declaration | Iir_Kind_Context_Declaration @@ -10738,6 +11646,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Case_Generate_Statement | Iir_Kind_For_Generate_Statement | Iir_Kind_Generate_Statement_Body + | Iir_Kind_Simultaneous_Procedural_Statement + | Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif | Iir_Kind_For_Loop_Statement | Iir_Kind_While_Loop_Statement | Iir_Kind_Case_Statement @@ -10797,7 +11708,8 @@ package body Vhdl.Nodes_Meta is when Iir_Kind_Component_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Process_Statement - | Iir_Kind_Block_Statement => + | Iir_Kind_Block_Statement + | Iir_Kind_Simultaneous_Procedural_Statement => return True; when others => return False; @@ -10849,7 +11761,13 @@ package body Vhdl.Nodes_Meta is case K is when Iir_Kind_Library_Clause | Iir_Kind_Element_Declaration + | Iir_Kind_Nature_Element_Declaration | Iir_Kind_Terminal_Declaration + | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_File_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration @@ -10859,6 +11777,8 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration => return True; when others => @@ -10873,7 +11793,9 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration - | Iir_Kind_Interface_File_Declaration => + | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration => return True; when others => return False; @@ -10886,7 +11808,9 @@ package body Vhdl.Nodes_Meta is when Iir_Kind_Interface_Constant_Declaration | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration - | Iir_Kind_Interface_File_Declaration => + | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration => return True; when others => return False; @@ -10933,6 +11857,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Conditional_Expression | Iir_Kind_Component_Configuration | Iir_Kind_Disconnection_Specification + | Iir_Kind_Step_Limit_Specification | Iir_Kind_Configuration_Specification | Iir_Kind_Record_Type_Definition | Iir_Kind_Record_Subtype_Definition @@ -10945,7 +11870,12 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Floating_Type_Definition | Iir_Kind_Physical_Type_Definition | Iir_Kind_Subtype_Definition + | Iir_Kind_Record_Nature_Definition | Iir_Kind_Free_Quantity_Declaration + | Iir_Kind_Spectrum_Quantity_Declaration + | Iir_Kind_Noise_Quantity_Declaration + | Iir_Kind_Across_Quantity_Declaration + | Iir_Kind_Through_Quantity_Declaration | Iir_Kind_Signal_Declaration | Iir_Kind_Variable_Declaration | Iir_Kind_Constant_Declaration @@ -10953,14 +11883,19 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_Interface_Variable_Declaration | Iir_Kind_Interface_Signal_Declaration | Iir_Kind_Interface_File_Declaration + | Iir_Kind_Interface_Quantity_Declaration + | Iir_Kind_Interface_Terminal_Declaration | Iir_Kind_Interface_Type_Declaration | Iir_Kind_Anonymous_Signal_Declaration | Iir_Kind_Sensitized_Process_Statement | Iir_Kind_Concurrent_Simple_Signal_Assignment | Iir_Kind_Concurrent_Conditional_Signal_Assignment | Iir_Kind_Concurrent_Selected_Signal_Assignment + | Iir_Kind_Concurrent_Break_Statement | Iir_Kind_If_Generate_Statement | Iir_Kind_If_Generate_Else_Clause + | Iir_Kind_Simultaneous_If_Statement + | Iir_Kind_Simultaneous_Elsif | Iir_Kind_Simple_Signal_Assignment_Statement | Iir_Kind_Conditional_Signal_Assignment_Statement | Iir_Kind_Selected_Waveform_Assignment_Statement @@ -10970,6 +11905,7 @@ package body Vhdl.Nodes_Meta is | Iir_Kind_While_Loop_Statement | Iir_Kind_Next_Statement | Iir_Kind_Exit_Statement + | Iir_Kind_Break_Statement | Iir_Kind_If_Statement | Iir_Kind_Elsif => return True; -- cgit v1.2.3