aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-nodes_meta.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/vhdl-nodes_meta.adb')
-rw-r--r--src/vhdl/vhdl-nodes_meta.adb283
1 files changed, 149 insertions, 134 deletions
diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb
index e6e3129d3..310f31d86 100644
--- a/src/vhdl/vhdl-nodes_meta.adb
+++ b/src/vhdl/vhdl-nodes_meta.adb
@@ -335,6 +335,7 @@ package body Vhdl.Nodes_Meta is
Field_Aggr_Others_Flag => Type_Boolean,
Field_Aggr_Named_Flag => Type_Boolean,
Field_Aggregate_Expand_Flag => Type_Boolean,
+ Field_Determined_Aggregate_Flag => Type_Boolean,
Field_Association_Choices_Chain => Type_Iir,
Field_Case_Statement_Alternative_Chain => Type_Iir,
Field_Matching_Flag => Type_Boolean,
@@ -1044,6 +1045,8 @@ package body Vhdl.Nodes_Meta is
return "aggr_named_flag";
when Field_Aggregate_Expand_Flag =>
return "aggregate_expand_flag";
+ when Field_Determined_Aggregate_Flag =>
+ return "determined_aggregate_flag";
when Field_Association_Choices_Chain =>
return "association_choices_chain";
when Field_Case_Statement_Alternative_Chain =>
@@ -2462,6 +2465,8 @@ package body Vhdl.Nodes_Meta is
return Attr_None;
when Field_Aggregate_Expand_Flag =>
return Attr_None;
+ when Field_Determined_Aggregate_Flag =>
+ return Attr_None;
when Field_Association_Choices_Chain =>
return Attr_Chain;
when Field_Case_Statement_Alternative_Chain =>
@@ -4240,6 +4245,7 @@ package body Vhdl.Nodes_Meta is
Field_Base_Name,
-- Iir_Kind_Aggregate
Field_Aggregate_Expand_Flag,
+ Field_Determined_Aggregate_Flag,
Field_Expr_Staticness,
Field_Association_Choices_Chain,
Field_Literal_Subtype,
@@ -5512,140 +5518,140 @@ package body Vhdl.Nodes_Meta is
Iir_Kind_Remainder_Operator => 1443,
Iir_Kind_Exponentiation_Operator => 1448,
Iir_Kind_Function_Call => 1456,
- Iir_Kind_Aggregate => 1463,
- Iir_Kind_Parenthesis_Expression => 1466,
- Iir_Kind_Qualified_Expression => 1470,
- Iir_Kind_Type_Conversion => 1475,
- Iir_Kind_Allocator_By_Expression => 1480,
- Iir_Kind_Allocator_By_Subtype => 1486,
- Iir_Kind_Selected_Element => 1494,
- Iir_Kind_Dereference => 1499,
- Iir_Kind_Implicit_Dereference => 1504,
- Iir_Kind_Slice_Name => 1511,
- Iir_Kind_Indexed_Name => 1517,
- Iir_Kind_Psl_Prev => 1523,
- Iir_Kind_Psl_Stable => 1528,
- Iir_Kind_Psl_Rose => 1533,
- Iir_Kind_Psl_Fell => 1538,
- Iir_Kind_Psl_Onehot => 1541,
- Iir_Kind_Psl_Onehot0 => 1544,
- Iir_Kind_Psl_Expression => 1546,
- Iir_Kind_Sensitized_Process_Statement => 1568,
- Iir_Kind_Process_Statement => 1589,
- Iir_Kind_Concurrent_Simple_Signal_Assignment => 1602,
- Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1615,
- Iir_Kind_Concurrent_Selected_Signal_Assignment => 1629,
- Iir_Kind_Concurrent_Assertion_Statement => 1637,
- Iir_Kind_Concurrent_Procedure_Call_Statement => 1644,
- Iir_Kind_Concurrent_Break_Statement => 1652,
- Iir_Kind_Psl_Assert_Directive => 1666,
- Iir_Kind_Psl_Assume_Directive => 1678,
- Iir_Kind_Psl_Cover_Directive => 1690,
- Iir_Kind_Psl_Restrict_Directive => 1701,
- Iir_Kind_Block_Statement => 1715,
- Iir_Kind_If_Generate_Statement => 1726,
- Iir_Kind_Case_Generate_Statement => 1735,
- Iir_Kind_For_Generate_Statement => 1744,
- Iir_Kind_Component_Instantiation_Statement => 1755,
- Iir_Kind_Psl_Default_Clock => 1758,
- Iir_Kind_Generate_Statement_Body => 1769,
- Iir_Kind_If_Generate_Else_Clause => 1775,
- Iir_Kind_Simple_Simultaneous_Statement => 1782,
- Iir_Kind_Simultaneous_Null_Statement => 1786,
- Iir_Kind_Simultaneous_Procedural_Statement => 1797,
- Iir_Kind_Simultaneous_Case_Statement => 1806,
- Iir_Kind_Simultaneous_If_Statement => 1815,
- Iir_Kind_Simultaneous_Elsif => 1821,
- Iir_Kind_Simple_Signal_Assignment_Statement => 1832,
- Iir_Kind_Conditional_Signal_Assignment_Statement => 1843,
- Iir_Kind_Selected_Waveform_Assignment_Statement => 1855,
- Iir_Kind_Signal_Force_Assignment_Statement => 1865,
- Iir_Kind_Signal_Release_Assignment_Statement => 1874,
- Iir_Kind_Null_Statement => 1878,
- Iir_Kind_Assertion_Statement => 1885,
- Iir_Kind_Report_Statement => 1891,
- Iir_Kind_Wait_Statement => 1899,
- Iir_Kind_Variable_Assignment_Statement => 1906,
- Iir_Kind_Conditional_Variable_Assignment_Statement => 1913,
- Iir_Kind_Return_Statement => 1919,
- Iir_Kind_For_Loop_Statement => 1930,
- Iir_Kind_While_Loop_Statement => 1941,
- Iir_Kind_Next_Statement => 1948,
- Iir_Kind_Exit_Statement => 1955,
- Iir_Kind_Case_Statement => 1964,
- Iir_Kind_Procedure_Call_Statement => 1970,
- Iir_Kind_Break_Statement => 1977,
- Iir_Kind_If_Statement => 1987,
- Iir_Kind_Suspend_State_Statement => 1991,
- Iir_Kind_Elsif => 1997,
- Iir_Kind_Character_Literal => 2004,
- Iir_Kind_Simple_Name => 2011,
- Iir_Kind_Selected_Name => 2019,
- Iir_Kind_Operator_Symbol => 2024,
- Iir_Kind_Reference_Name => 2029,
- Iir_Kind_External_Constant_Name => 2038,
- Iir_Kind_External_Signal_Name => 2047,
- Iir_Kind_External_Variable_Name => 2057,
- Iir_Kind_Selected_By_All_Name => 2063,
- Iir_Kind_Parenthesis_Name => 2068,
- Iir_Kind_Package_Pathname => 2072,
- Iir_Kind_Absolute_Pathname => 2073,
- Iir_Kind_Relative_Pathname => 2074,
- Iir_Kind_Pathname_Element => 2079,
- Iir_Kind_Base_Attribute => 2081,
- Iir_Kind_Subtype_Attribute => 2086,
- Iir_Kind_Element_Attribute => 2091,
- Iir_Kind_Across_Attribute => 2096,
- Iir_Kind_Through_Attribute => 2101,
- Iir_Kind_Nature_Reference_Attribute => 2105,
- Iir_Kind_Left_Type_Attribute => 2110,
- Iir_Kind_Right_Type_Attribute => 2115,
- Iir_Kind_High_Type_Attribute => 2120,
- Iir_Kind_Low_Type_Attribute => 2125,
- Iir_Kind_Ascending_Type_Attribute => 2130,
- Iir_Kind_Image_Attribute => 2136,
- Iir_Kind_Value_Attribute => 2142,
- Iir_Kind_Pos_Attribute => 2148,
- Iir_Kind_Val_Attribute => 2154,
- Iir_Kind_Succ_Attribute => 2160,
- Iir_Kind_Pred_Attribute => 2166,
- Iir_Kind_Leftof_Attribute => 2172,
- Iir_Kind_Rightof_Attribute => 2178,
- Iir_Kind_Signal_Slew_Attribute => 2186,
- Iir_Kind_Quantity_Slew_Attribute => 2194,
- Iir_Kind_Ramp_Attribute => 2202,
- Iir_Kind_Zoh_Attribute => 2210,
- Iir_Kind_Ltf_Attribute => 2218,
- Iir_Kind_Ztf_Attribute => 2228,
- Iir_Kind_Dot_Attribute => 2235,
- Iir_Kind_Integ_Attribute => 2242,
- Iir_Kind_Quantity_Delayed_Attribute => 2250,
- Iir_Kind_Above_Attribute => 2258,
- Iir_Kind_Delayed_Attribute => 2267,
- Iir_Kind_Stable_Attribute => 2276,
- Iir_Kind_Quiet_Attribute => 2285,
- Iir_Kind_Transaction_Attribute => 2294,
- Iir_Kind_Event_Attribute => 2298,
- Iir_Kind_Active_Attribute => 2302,
- Iir_Kind_Last_Event_Attribute => 2306,
- Iir_Kind_Last_Active_Attribute => 2310,
- Iir_Kind_Last_Value_Attribute => 2314,
- Iir_Kind_Driving_Attribute => 2318,
- Iir_Kind_Driving_Value_Attribute => 2322,
- Iir_Kind_Behavior_Attribute => 2322,
- Iir_Kind_Structure_Attribute => 2322,
- Iir_Kind_Simple_Name_Attribute => 2329,
- Iir_Kind_Instance_Name_Attribute => 2334,
- Iir_Kind_Path_Name_Attribute => 2339,
- Iir_Kind_Left_Array_Attribute => 2346,
- Iir_Kind_Right_Array_Attribute => 2353,
- Iir_Kind_High_Array_Attribute => 2360,
- Iir_Kind_Low_Array_Attribute => 2367,
- Iir_Kind_Length_Array_Attribute => 2374,
- Iir_Kind_Ascending_Array_Attribute => 2381,
- Iir_Kind_Range_Array_Attribute => 2388,
- Iir_Kind_Reverse_Range_Array_Attribute => 2395,
- Iir_Kind_Attribute_Name => 2404
+ Iir_Kind_Aggregate => 1464,
+ Iir_Kind_Parenthesis_Expression => 1467,
+ Iir_Kind_Qualified_Expression => 1471,
+ Iir_Kind_Type_Conversion => 1476,
+ Iir_Kind_Allocator_By_Expression => 1481,
+ Iir_Kind_Allocator_By_Subtype => 1487,
+ Iir_Kind_Selected_Element => 1495,
+ Iir_Kind_Dereference => 1500,
+ Iir_Kind_Implicit_Dereference => 1505,
+ Iir_Kind_Slice_Name => 1512,
+ Iir_Kind_Indexed_Name => 1518,
+ Iir_Kind_Psl_Prev => 1524,
+ Iir_Kind_Psl_Stable => 1529,
+ Iir_Kind_Psl_Rose => 1534,
+ Iir_Kind_Psl_Fell => 1539,
+ Iir_Kind_Psl_Onehot => 1542,
+ Iir_Kind_Psl_Onehot0 => 1545,
+ Iir_Kind_Psl_Expression => 1547,
+ Iir_Kind_Sensitized_Process_Statement => 1569,
+ Iir_Kind_Process_Statement => 1590,
+ Iir_Kind_Concurrent_Simple_Signal_Assignment => 1603,
+ Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1616,
+ Iir_Kind_Concurrent_Selected_Signal_Assignment => 1630,
+ Iir_Kind_Concurrent_Assertion_Statement => 1638,
+ Iir_Kind_Concurrent_Procedure_Call_Statement => 1645,
+ Iir_Kind_Concurrent_Break_Statement => 1653,
+ Iir_Kind_Psl_Assert_Directive => 1667,
+ Iir_Kind_Psl_Assume_Directive => 1679,
+ Iir_Kind_Psl_Cover_Directive => 1691,
+ Iir_Kind_Psl_Restrict_Directive => 1702,
+ Iir_Kind_Block_Statement => 1716,
+ Iir_Kind_If_Generate_Statement => 1727,
+ Iir_Kind_Case_Generate_Statement => 1736,
+ Iir_Kind_For_Generate_Statement => 1745,
+ Iir_Kind_Component_Instantiation_Statement => 1756,
+ Iir_Kind_Psl_Default_Clock => 1759,
+ Iir_Kind_Generate_Statement_Body => 1770,
+ Iir_Kind_If_Generate_Else_Clause => 1776,
+ Iir_Kind_Simple_Simultaneous_Statement => 1783,
+ Iir_Kind_Simultaneous_Null_Statement => 1787,
+ Iir_Kind_Simultaneous_Procedural_Statement => 1798,
+ Iir_Kind_Simultaneous_Case_Statement => 1807,
+ Iir_Kind_Simultaneous_If_Statement => 1816,
+ Iir_Kind_Simultaneous_Elsif => 1822,
+ Iir_Kind_Simple_Signal_Assignment_Statement => 1833,
+ Iir_Kind_Conditional_Signal_Assignment_Statement => 1844,
+ Iir_Kind_Selected_Waveform_Assignment_Statement => 1856,
+ Iir_Kind_Signal_Force_Assignment_Statement => 1866,
+ Iir_Kind_Signal_Release_Assignment_Statement => 1875,
+ Iir_Kind_Null_Statement => 1879,
+ Iir_Kind_Assertion_Statement => 1886,
+ Iir_Kind_Report_Statement => 1892,
+ Iir_Kind_Wait_Statement => 1900,
+ Iir_Kind_Variable_Assignment_Statement => 1907,
+ Iir_Kind_Conditional_Variable_Assignment_Statement => 1914,
+ Iir_Kind_Return_Statement => 1920,
+ Iir_Kind_For_Loop_Statement => 1931,
+ Iir_Kind_While_Loop_Statement => 1942,
+ Iir_Kind_Next_Statement => 1949,
+ Iir_Kind_Exit_Statement => 1956,
+ Iir_Kind_Case_Statement => 1965,
+ Iir_Kind_Procedure_Call_Statement => 1971,
+ Iir_Kind_Break_Statement => 1978,
+ Iir_Kind_If_Statement => 1988,
+ Iir_Kind_Suspend_State_Statement => 1992,
+ Iir_Kind_Elsif => 1998,
+ Iir_Kind_Character_Literal => 2005,
+ Iir_Kind_Simple_Name => 2012,
+ Iir_Kind_Selected_Name => 2020,
+ Iir_Kind_Operator_Symbol => 2025,
+ Iir_Kind_Reference_Name => 2030,
+ Iir_Kind_External_Constant_Name => 2039,
+ Iir_Kind_External_Signal_Name => 2048,
+ Iir_Kind_External_Variable_Name => 2058,
+ Iir_Kind_Selected_By_All_Name => 2064,
+ Iir_Kind_Parenthesis_Name => 2069,
+ Iir_Kind_Package_Pathname => 2073,
+ Iir_Kind_Absolute_Pathname => 2074,
+ Iir_Kind_Relative_Pathname => 2075,
+ Iir_Kind_Pathname_Element => 2080,
+ Iir_Kind_Base_Attribute => 2082,
+ Iir_Kind_Subtype_Attribute => 2087,
+ Iir_Kind_Element_Attribute => 2092,
+ Iir_Kind_Across_Attribute => 2097,
+ Iir_Kind_Through_Attribute => 2102,
+ Iir_Kind_Nature_Reference_Attribute => 2106,
+ Iir_Kind_Left_Type_Attribute => 2111,
+ Iir_Kind_Right_Type_Attribute => 2116,
+ Iir_Kind_High_Type_Attribute => 2121,
+ Iir_Kind_Low_Type_Attribute => 2126,
+ Iir_Kind_Ascending_Type_Attribute => 2131,
+ Iir_Kind_Image_Attribute => 2137,
+ Iir_Kind_Value_Attribute => 2143,
+ Iir_Kind_Pos_Attribute => 2149,
+ Iir_Kind_Val_Attribute => 2155,
+ Iir_Kind_Succ_Attribute => 2161,
+ Iir_Kind_Pred_Attribute => 2167,
+ Iir_Kind_Leftof_Attribute => 2173,
+ Iir_Kind_Rightof_Attribute => 2179,
+ Iir_Kind_Signal_Slew_Attribute => 2187,
+ Iir_Kind_Quantity_Slew_Attribute => 2195,
+ Iir_Kind_Ramp_Attribute => 2203,
+ Iir_Kind_Zoh_Attribute => 2211,
+ Iir_Kind_Ltf_Attribute => 2219,
+ Iir_Kind_Ztf_Attribute => 2229,
+ Iir_Kind_Dot_Attribute => 2236,
+ Iir_Kind_Integ_Attribute => 2243,
+ Iir_Kind_Quantity_Delayed_Attribute => 2251,
+ Iir_Kind_Above_Attribute => 2259,
+ Iir_Kind_Delayed_Attribute => 2268,
+ Iir_Kind_Stable_Attribute => 2277,
+ Iir_Kind_Quiet_Attribute => 2286,
+ Iir_Kind_Transaction_Attribute => 2295,
+ Iir_Kind_Event_Attribute => 2299,
+ Iir_Kind_Active_Attribute => 2303,
+ Iir_Kind_Last_Event_Attribute => 2307,
+ Iir_Kind_Last_Active_Attribute => 2311,
+ Iir_Kind_Last_Value_Attribute => 2315,
+ Iir_Kind_Driving_Attribute => 2319,
+ Iir_Kind_Driving_Value_Attribute => 2323,
+ Iir_Kind_Behavior_Attribute => 2323,
+ Iir_Kind_Structure_Attribute => 2323,
+ Iir_Kind_Simple_Name_Attribute => 2330,
+ Iir_Kind_Instance_Name_Attribute => 2335,
+ Iir_Kind_Path_Name_Attribute => 2340,
+ Iir_Kind_Left_Array_Attribute => 2347,
+ Iir_Kind_Right_Array_Attribute => 2354,
+ Iir_Kind_High_Array_Attribute => 2361,
+ Iir_Kind_Low_Array_Attribute => 2368,
+ Iir_Kind_Length_Array_Attribute => 2375,
+ Iir_Kind_Ascending_Array_Attribute => 2382,
+ Iir_Kind_Range_Array_Attribute => 2389,
+ Iir_Kind_Reverse_Range_Array_Attribute => 2396,
+ Iir_Kind_Attribute_Name => 2405
);
function Get_Fields_First (K : Iir_Kind) return Fields_Index is
@@ -5776,6 +5782,8 @@ package body Vhdl.Nodes_Meta is
return Get_Aggr_Named_Flag (N);
when Field_Aggregate_Expand_Flag =>
return Get_Aggregate_Expand_Flag (N);
+ when Field_Determined_Aggregate_Flag =>
+ return Get_Determined_Aggregate_Flag (N);
when Field_Matching_Flag =>
return Get_Matching_Flag (N);
when Field_Has_Disconnect_Flag =>
@@ -5936,6 +5944,8 @@ package body Vhdl.Nodes_Meta is
Set_Aggr_Named_Flag (N, V);
when Field_Aggregate_Expand_Flag =>
Set_Aggregate_Expand_Flag (N, V);
+ when Field_Determined_Aggregate_Flag =>
+ Set_Determined_Aggregate_Flag (N, V);
when Field_Matching_Flag =>
Set_Matching_Flag (N, V);
when Field_Has_Disconnect_Flag =>
@@ -12026,6 +12036,11 @@ package body Vhdl.Nodes_Meta is
return K = Iir_Kind_Aggregate;
end Has_Aggregate_Expand_Flag;
+ function Has_Determined_Aggregate_Flag (K : Iir_Kind) return Boolean is
+ begin
+ return K = Iir_Kind_Aggregate;
+ end Has_Determined_Aggregate_Flag;
+
function Has_Association_Choices_Chain (K : Iir_Kind) return Boolean is
begin
return K = Iir_Kind_Aggregate;