diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/vhdl/vhdl-nodes.ads | 2 | ||||
| -rw-r--r-- | src/vhdl/vhdl-nodes_meta.adb | 420 | ||||
| -rw-r--r-- | src/vhdl/vhdl-sem_decls.adb | 34 | ||||
| -rw-r--r-- | src/vhdl/vhdl-sem_expr.adb | 15 | ||||
| -rw-r--r-- | src/vhdl/vhdl-sem_names.adb | 4 | 
5 files changed, 256 insertions, 219 deletions
| diff --git a/src/vhdl/vhdl-nodes.ads b/src/vhdl/vhdl-nodes.ads index 8d123e3a3..973e7f748 100644 --- a/src/vhdl/vhdl-nodes.ads +++ b/src/vhdl/vhdl-nodes.ads @@ -2436,6 +2436,8 @@ package Vhdl.Nodes is     --  name in a overloaded subprogram.     --   Get/Set_Is_Within_Flag (Flag5)     -- +   --   Get/Set_Use_Flag (Flag6) +   --     --   Get/Set_Expr_Staticness (State1)     --     --   Get/Set_Name_Staticness (State2) diff --git a/src/vhdl/vhdl-nodes_meta.adb b/src/vhdl/vhdl-nodes_meta.adb index 44dc8a566..1dc02eb4b 100644 --- a/src/vhdl/vhdl-nodes_meta.adb +++ b/src/vhdl/vhdl-nodes_meta.adb @@ -3448,6 +3448,7 @@ package body Vhdl.Nodes_Meta is        Field_Seen_Flag,        Field_Visible_Flag,        Field_Is_Within_Flag, +      Field_Use_Flag,        Field_Expr_Staticness,        Field_Name_Staticness,        Field_Parent, @@ -5355,215 +5356,215 @@ package body Vhdl.Nodes_Meta is        Iir_Kind_Non_Object_Alias_Declaration => 769,        Iir_Kind_Psl_Declaration => 777,        Iir_Kind_Psl_Endpoint_Declaration => 791, -      Iir_Kind_Enumeration_Literal => 802, -      Iir_Kind_Function_Declaration => 827, -      Iir_Kind_Procedure_Declaration => 851, -      Iir_Kind_Function_Body => 861, -      Iir_Kind_Procedure_Body => 872, -      Iir_Kind_Function_Instantiation_Declaration => 883, -      Iir_Kind_Procedure_Instantiation_Declaration => 893, -      Iir_Kind_Terminal_Declaration => 902, -      Iir_Kind_Object_Alias_Declaration => 914, -      Iir_Kind_Free_Quantity_Declaration => 926, -      Iir_Kind_Spectrum_Quantity_Declaration => 939, -      Iir_Kind_Noise_Quantity_Declaration => 951, -      Iir_Kind_Across_Quantity_Declaration => 967, -      Iir_Kind_Through_Quantity_Declaration => 983, -      Iir_Kind_File_Declaration => 998, -      Iir_Kind_Guard_Signal_Declaration => 1012, -      Iir_Kind_Signal_Declaration => 1029, -      Iir_Kind_Variable_Declaration => 1042, -      Iir_Kind_Constant_Declaration => 1056, -      Iir_Kind_Iterator_Declaration => 1068, -      Iir_Kind_Interface_Constant_Declaration => 1085, -      Iir_Kind_Interface_Variable_Declaration => 1101, -      Iir_Kind_Interface_Signal_Declaration => 1122, -      Iir_Kind_Interface_File_Declaration => 1138, -      Iir_Kind_Interface_Quantity_Declaration => 1154, -      Iir_Kind_Interface_Terminal_Declaration => 1166, -      Iir_Kind_Interface_Type_Declaration => 1177, -      Iir_Kind_Interface_Package_Declaration => 1190, -      Iir_Kind_Interface_Function_Declaration => 1208, -      Iir_Kind_Interface_Procedure_Declaration => 1222, -      Iir_Kind_Signal_Attribute_Declaration => 1225, -      Iir_Kind_Identity_Operator => 1229, -      Iir_Kind_Negation_Operator => 1233, -      Iir_Kind_Absolute_Operator => 1237, -      Iir_Kind_Not_Operator => 1241, -      Iir_Kind_Implicit_Condition_Operator => 1245, -      Iir_Kind_Condition_Operator => 1249, -      Iir_Kind_Reduction_And_Operator => 1253, -      Iir_Kind_Reduction_Or_Operator => 1257, -      Iir_Kind_Reduction_Nand_Operator => 1261, -      Iir_Kind_Reduction_Nor_Operator => 1265, -      Iir_Kind_Reduction_Xor_Operator => 1269, -      Iir_Kind_Reduction_Xnor_Operator => 1273, -      Iir_Kind_And_Operator => 1278, -      Iir_Kind_Or_Operator => 1283, -      Iir_Kind_Nand_Operator => 1288, -      Iir_Kind_Nor_Operator => 1293, -      Iir_Kind_Xor_Operator => 1298, -      Iir_Kind_Xnor_Operator => 1303, -      Iir_Kind_Equality_Operator => 1308, -      Iir_Kind_Inequality_Operator => 1313, -      Iir_Kind_Less_Than_Operator => 1318, -      Iir_Kind_Less_Than_Or_Equal_Operator => 1323, -      Iir_Kind_Greater_Than_Operator => 1328, -      Iir_Kind_Greater_Than_Or_Equal_Operator => 1333, -      Iir_Kind_Match_Equality_Operator => 1338, -      Iir_Kind_Match_Inequality_Operator => 1343, -      Iir_Kind_Match_Less_Than_Operator => 1348, -      Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1353, -      Iir_Kind_Match_Greater_Than_Operator => 1358, -      Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1363, -      Iir_Kind_Sll_Operator => 1368, -      Iir_Kind_Sla_Operator => 1373, -      Iir_Kind_Srl_Operator => 1378, -      Iir_Kind_Sra_Operator => 1383, -      Iir_Kind_Rol_Operator => 1388, -      Iir_Kind_Ror_Operator => 1393, -      Iir_Kind_Addition_Operator => 1398, -      Iir_Kind_Substraction_Operator => 1403, -      Iir_Kind_Concatenation_Operator => 1408, -      Iir_Kind_Multiplication_Operator => 1413, -      Iir_Kind_Division_Operator => 1418, -      Iir_Kind_Modulus_Operator => 1423, -      Iir_Kind_Remainder_Operator => 1428, -      Iir_Kind_Exponentiation_Operator => 1433, -      Iir_Kind_Function_Call => 1441, -      Iir_Kind_Aggregate => 1448, -      Iir_Kind_Parenthesis_Expression => 1451, -      Iir_Kind_Qualified_Expression => 1455, -      Iir_Kind_Type_Conversion => 1460, -      Iir_Kind_Allocator_By_Expression => 1465, -      Iir_Kind_Allocator_By_Subtype => 1471, -      Iir_Kind_Selected_Element => 1479, -      Iir_Kind_Dereference => 1484, -      Iir_Kind_Implicit_Dereference => 1489, -      Iir_Kind_Slice_Name => 1496, -      Iir_Kind_Indexed_Name => 1502, -      Iir_Kind_Psl_Prev => 1508, -      Iir_Kind_Psl_Stable => 1513, -      Iir_Kind_Psl_Rose => 1518, -      Iir_Kind_Psl_Fell => 1523, -      Iir_Kind_Psl_Onehot => 1526, -      Iir_Kind_Psl_Onehot0 => 1529, -      Iir_Kind_Psl_Expression => 1531, -      Iir_Kind_Sensitized_Process_Statement => 1552, -      Iir_Kind_Process_Statement => 1572, -      Iir_Kind_Concurrent_Simple_Signal_Assignment => 1585, -      Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1598, -      Iir_Kind_Concurrent_Selected_Signal_Assignment => 1612, -      Iir_Kind_Concurrent_Assertion_Statement => 1620, -      Iir_Kind_Concurrent_Procedure_Call_Statement => 1627, -      Iir_Kind_Concurrent_Break_Statement => 1635, -      Iir_Kind_Psl_Assert_Directive => 1649, -      Iir_Kind_Psl_Assume_Directive => 1661, -      Iir_Kind_Psl_Cover_Directive => 1673, -      Iir_Kind_Psl_Restrict_Directive => 1684, -      Iir_Kind_Block_Statement => 1698, -      Iir_Kind_If_Generate_Statement => 1709, -      Iir_Kind_Case_Generate_Statement => 1718, -      Iir_Kind_For_Generate_Statement => 1727, -      Iir_Kind_Component_Instantiation_Statement => 1738, -      Iir_Kind_Psl_Default_Clock => 1741, -      Iir_Kind_Generate_Statement_Body => 1752, -      Iir_Kind_If_Generate_Else_Clause => 1758, -      Iir_Kind_Simple_Simultaneous_Statement => 1765, -      Iir_Kind_Simultaneous_Null_Statement => 1769, -      Iir_Kind_Simultaneous_Procedural_Statement => 1780, -      Iir_Kind_Simultaneous_Case_Statement => 1789, -      Iir_Kind_Simultaneous_If_Statement => 1798, -      Iir_Kind_Simultaneous_Elsif => 1804, -      Iir_Kind_Simple_Signal_Assignment_Statement => 1815, -      Iir_Kind_Conditional_Signal_Assignment_Statement => 1826, -      Iir_Kind_Selected_Waveform_Assignment_Statement => 1838, -      Iir_Kind_Signal_Force_Assignment_Statement => 1848, -      Iir_Kind_Signal_Release_Assignment_Statement => 1857, -      Iir_Kind_Null_Statement => 1861, -      Iir_Kind_Assertion_Statement => 1868, -      Iir_Kind_Report_Statement => 1874, -      Iir_Kind_Wait_Statement => 1882, -      Iir_Kind_Variable_Assignment_Statement => 1889, -      Iir_Kind_Conditional_Variable_Assignment_Statement => 1896, -      Iir_Kind_Return_Statement => 1902, -      Iir_Kind_For_Loop_Statement => 1913, -      Iir_Kind_While_Loop_Statement => 1924, -      Iir_Kind_Next_Statement => 1931, -      Iir_Kind_Exit_Statement => 1938, -      Iir_Kind_Case_Statement => 1947, -      Iir_Kind_Procedure_Call_Statement => 1953, -      Iir_Kind_Break_Statement => 1960, -      Iir_Kind_If_Statement => 1970, -      Iir_Kind_Elsif => 1976, -      Iir_Kind_Character_Literal => 1983, -      Iir_Kind_Simple_Name => 1990, -      Iir_Kind_Selected_Name => 1998, -      Iir_Kind_Operator_Symbol => 2003, -      Iir_Kind_Reference_Name => 2008, -      Iir_Kind_External_Constant_Name => 2017, -      Iir_Kind_External_Signal_Name => 2026, -      Iir_Kind_External_Variable_Name => 2036, -      Iir_Kind_Selected_By_All_Name => 2042, -      Iir_Kind_Parenthesis_Name => 2047, -      Iir_Kind_Package_Pathname => 2051, -      Iir_Kind_Absolute_Pathname => 2052, -      Iir_Kind_Relative_Pathname => 2053, -      Iir_Kind_Pathname_Element => 2058, -      Iir_Kind_Base_Attribute => 2060, -      Iir_Kind_Subtype_Attribute => 2065, -      Iir_Kind_Element_Attribute => 2070, -      Iir_Kind_Across_Attribute => 2075, -      Iir_Kind_Through_Attribute => 2080, -      Iir_Kind_Nature_Reference_Attribute => 2084, -      Iir_Kind_Left_Type_Attribute => 2089, -      Iir_Kind_Right_Type_Attribute => 2094, -      Iir_Kind_High_Type_Attribute => 2099, -      Iir_Kind_Low_Type_Attribute => 2104, -      Iir_Kind_Ascending_Type_Attribute => 2109, -      Iir_Kind_Image_Attribute => 2115, -      Iir_Kind_Value_Attribute => 2121, -      Iir_Kind_Pos_Attribute => 2127, -      Iir_Kind_Val_Attribute => 2133, -      Iir_Kind_Succ_Attribute => 2139, -      Iir_Kind_Pred_Attribute => 2145, -      Iir_Kind_Leftof_Attribute => 2151, -      Iir_Kind_Rightof_Attribute => 2157, -      Iir_Kind_Signal_Slew_Attribute => 2165, -      Iir_Kind_Quantity_Slew_Attribute => 2173, -      Iir_Kind_Ramp_Attribute => 2181, -      Iir_Kind_Zoh_Attribute => 2189, -      Iir_Kind_Ltf_Attribute => 2197, -      Iir_Kind_Ztf_Attribute => 2207, -      Iir_Kind_Dot_Attribute => 2214, -      Iir_Kind_Integ_Attribute => 2221, -      Iir_Kind_Above_Attribute => 2229, -      Iir_Kind_Quantity_Delayed_Attribute => 2237, -      Iir_Kind_Delayed_Attribute => 2246, -      Iir_Kind_Stable_Attribute => 2255, -      Iir_Kind_Quiet_Attribute => 2264, -      Iir_Kind_Transaction_Attribute => 2273, -      Iir_Kind_Event_Attribute => 2277, -      Iir_Kind_Active_Attribute => 2281, -      Iir_Kind_Last_Event_Attribute => 2285, -      Iir_Kind_Last_Active_Attribute => 2289, -      Iir_Kind_Last_Value_Attribute => 2293, -      Iir_Kind_Driving_Attribute => 2297, -      Iir_Kind_Driving_Value_Attribute => 2301, -      Iir_Kind_Behavior_Attribute => 2301, -      Iir_Kind_Structure_Attribute => 2301, -      Iir_Kind_Simple_Name_Attribute => 2308, -      Iir_Kind_Instance_Name_Attribute => 2313, -      Iir_Kind_Path_Name_Attribute => 2318, -      Iir_Kind_Left_Array_Attribute => 2325, -      Iir_Kind_Right_Array_Attribute => 2332, -      Iir_Kind_High_Array_Attribute => 2339, -      Iir_Kind_Low_Array_Attribute => 2346, -      Iir_Kind_Length_Array_Attribute => 2353, -      Iir_Kind_Ascending_Array_Attribute => 2360, -      Iir_Kind_Range_Array_Attribute => 2367, -      Iir_Kind_Reverse_Range_Array_Attribute => 2374, -      Iir_Kind_Attribute_Name => 2383 +      Iir_Kind_Enumeration_Literal => 803, +      Iir_Kind_Function_Declaration => 828, +      Iir_Kind_Procedure_Declaration => 852, +      Iir_Kind_Function_Body => 862, +      Iir_Kind_Procedure_Body => 873, +      Iir_Kind_Function_Instantiation_Declaration => 884, +      Iir_Kind_Procedure_Instantiation_Declaration => 894, +      Iir_Kind_Terminal_Declaration => 903, +      Iir_Kind_Object_Alias_Declaration => 915, +      Iir_Kind_Free_Quantity_Declaration => 927, +      Iir_Kind_Spectrum_Quantity_Declaration => 940, +      Iir_Kind_Noise_Quantity_Declaration => 952, +      Iir_Kind_Across_Quantity_Declaration => 968, +      Iir_Kind_Through_Quantity_Declaration => 984, +      Iir_Kind_File_Declaration => 999, +      Iir_Kind_Guard_Signal_Declaration => 1013, +      Iir_Kind_Signal_Declaration => 1030, +      Iir_Kind_Variable_Declaration => 1043, +      Iir_Kind_Constant_Declaration => 1057, +      Iir_Kind_Iterator_Declaration => 1069, +      Iir_Kind_Interface_Constant_Declaration => 1086, +      Iir_Kind_Interface_Variable_Declaration => 1102, +      Iir_Kind_Interface_Signal_Declaration => 1123, +      Iir_Kind_Interface_File_Declaration => 1139, +      Iir_Kind_Interface_Quantity_Declaration => 1155, +      Iir_Kind_Interface_Terminal_Declaration => 1167, +      Iir_Kind_Interface_Type_Declaration => 1178, +      Iir_Kind_Interface_Package_Declaration => 1191, +      Iir_Kind_Interface_Function_Declaration => 1209, +      Iir_Kind_Interface_Procedure_Declaration => 1223, +      Iir_Kind_Signal_Attribute_Declaration => 1226, +      Iir_Kind_Identity_Operator => 1230, +      Iir_Kind_Negation_Operator => 1234, +      Iir_Kind_Absolute_Operator => 1238, +      Iir_Kind_Not_Operator => 1242, +      Iir_Kind_Implicit_Condition_Operator => 1246, +      Iir_Kind_Condition_Operator => 1250, +      Iir_Kind_Reduction_And_Operator => 1254, +      Iir_Kind_Reduction_Or_Operator => 1258, +      Iir_Kind_Reduction_Nand_Operator => 1262, +      Iir_Kind_Reduction_Nor_Operator => 1266, +      Iir_Kind_Reduction_Xor_Operator => 1270, +      Iir_Kind_Reduction_Xnor_Operator => 1274, +      Iir_Kind_And_Operator => 1279, +      Iir_Kind_Or_Operator => 1284, +      Iir_Kind_Nand_Operator => 1289, +      Iir_Kind_Nor_Operator => 1294, +      Iir_Kind_Xor_Operator => 1299, +      Iir_Kind_Xnor_Operator => 1304, +      Iir_Kind_Equality_Operator => 1309, +      Iir_Kind_Inequality_Operator => 1314, +      Iir_Kind_Less_Than_Operator => 1319, +      Iir_Kind_Less_Than_Or_Equal_Operator => 1324, +      Iir_Kind_Greater_Than_Operator => 1329, +      Iir_Kind_Greater_Than_Or_Equal_Operator => 1334, +      Iir_Kind_Match_Equality_Operator => 1339, +      Iir_Kind_Match_Inequality_Operator => 1344, +      Iir_Kind_Match_Less_Than_Operator => 1349, +      Iir_Kind_Match_Less_Than_Or_Equal_Operator => 1354, +      Iir_Kind_Match_Greater_Than_Operator => 1359, +      Iir_Kind_Match_Greater_Than_Or_Equal_Operator => 1364, +      Iir_Kind_Sll_Operator => 1369, +      Iir_Kind_Sla_Operator => 1374, +      Iir_Kind_Srl_Operator => 1379, +      Iir_Kind_Sra_Operator => 1384, +      Iir_Kind_Rol_Operator => 1389, +      Iir_Kind_Ror_Operator => 1394, +      Iir_Kind_Addition_Operator => 1399, +      Iir_Kind_Substraction_Operator => 1404, +      Iir_Kind_Concatenation_Operator => 1409, +      Iir_Kind_Multiplication_Operator => 1414, +      Iir_Kind_Division_Operator => 1419, +      Iir_Kind_Modulus_Operator => 1424, +      Iir_Kind_Remainder_Operator => 1429, +      Iir_Kind_Exponentiation_Operator => 1434, +      Iir_Kind_Function_Call => 1442, +      Iir_Kind_Aggregate => 1449, +      Iir_Kind_Parenthesis_Expression => 1452, +      Iir_Kind_Qualified_Expression => 1456, +      Iir_Kind_Type_Conversion => 1461, +      Iir_Kind_Allocator_By_Expression => 1466, +      Iir_Kind_Allocator_By_Subtype => 1472, +      Iir_Kind_Selected_Element => 1480, +      Iir_Kind_Dereference => 1485, +      Iir_Kind_Implicit_Dereference => 1490, +      Iir_Kind_Slice_Name => 1497, +      Iir_Kind_Indexed_Name => 1503, +      Iir_Kind_Psl_Prev => 1509, +      Iir_Kind_Psl_Stable => 1514, +      Iir_Kind_Psl_Rose => 1519, +      Iir_Kind_Psl_Fell => 1524, +      Iir_Kind_Psl_Onehot => 1527, +      Iir_Kind_Psl_Onehot0 => 1530, +      Iir_Kind_Psl_Expression => 1532, +      Iir_Kind_Sensitized_Process_Statement => 1553, +      Iir_Kind_Process_Statement => 1573, +      Iir_Kind_Concurrent_Simple_Signal_Assignment => 1586, +      Iir_Kind_Concurrent_Conditional_Signal_Assignment => 1599, +      Iir_Kind_Concurrent_Selected_Signal_Assignment => 1613, +      Iir_Kind_Concurrent_Assertion_Statement => 1621, +      Iir_Kind_Concurrent_Procedure_Call_Statement => 1628, +      Iir_Kind_Concurrent_Break_Statement => 1636, +      Iir_Kind_Psl_Assert_Directive => 1650, +      Iir_Kind_Psl_Assume_Directive => 1662, +      Iir_Kind_Psl_Cover_Directive => 1674, +      Iir_Kind_Psl_Restrict_Directive => 1685, +      Iir_Kind_Block_Statement => 1699, +      Iir_Kind_If_Generate_Statement => 1710, +      Iir_Kind_Case_Generate_Statement => 1719, +      Iir_Kind_For_Generate_Statement => 1728, +      Iir_Kind_Component_Instantiation_Statement => 1739, +      Iir_Kind_Psl_Default_Clock => 1742, +      Iir_Kind_Generate_Statement_Body => 1753, +      Iir_Kind_If_Generate_Else_Clause => 1759, +      Iir_Kind_Simple_Simultaneous_Statement => 1766, +      Iir_Kind_Simultaneous_Null_Statement => 1770, +      Iir_Kind_Simultaneous_Procedural_Statement => 1781, +      Iir_Kind_Simultaneous_Case_Statement => 1790, +      Iir_Kind_Simultaneous_If_Statement => 1799, +      Iir_Kind_Simultaneous_Elsif => 1805, +      Iir_Kind_Simple_Signal_Assignment_Statement => 1816, +      Iir_Kind_Conditional_Signal_Assignment_Statement => 1827, +      Iir_Kind_Selected_Waveform_Assignment_Statement => 1839, +      Iir_Kind_Signal_Force_Assignment_Statement => 1849, +      Iir_Kind_Signal_Release_Assignment_Statement => 1858, +      Iir_Kind_Null_Statement => 1862, +      Iir_Kind_Assertion_Statement => 1869, +      Iir_Kind_Report_Statement => 1875, +      Iir_Kind_Wait_Statement => 1883, +      Iir_Kind_Variable_Assignment_Statement => 1890, +      Iir_Kind_Conditional_Variable_Assignment_Statement => 1897, +      Iir_Kind_Return_Statement => 1903, +      Iir_Kind_For_Loop_Statement => 1914, +      Iir_Kind_While_Loop_Statement => 1925, +      Iir_Kind_Next_Statement => 1932, +      Iir_Kind_Exit_Statement => 1939, +      Iir_Kind_Case_Statement => 1948, +      Iir_Kind_Procedure_Call_Statement => 1954, +      Iir_Kind_Break_Statement => 1961, +      Iir_Kind_If_Statement => 1971, +      Iir_Kind_Elsif => 1977, +      Iir_Kind_Character_Literal => 1984, +      Iir_Kind_Simple_Name => 1991, +      Iir_Kind_Selected_Name => 1999, +      Iir_Kind_Operator_Symbol => 2004, +      Iir_Kind_Reference_Name => 2009, +      Iir_Kind_External_Constant_Name => 2018, +      Iir_Kind_External_Signal_Name => 2027, +      Iir_Kind_External_Variable_Name => 2037, +      Iir_Kind_Selected_By_All_Name => 2043, +      Iir_Kind_Parenthesis_Name => 2048, +      Iir_Kind_Package_Pathname => 2052, +      Iir_Kind_Absolute_Pathname => 2053, +      Iir_Kind_Relative_Pathname => 2054, +      Iir_Kind_Pathname_Element => 2059, +      Iir_Kind_Base_Attribute => 2061, +      Iir_Kind_Subtype_Attribute => 2066, +      Iir_Kind_Element_Attribute => 2071, +      Iir_Kind_Across_Attribute => 2076, +      Iir_Kind_Through_Attribute => 2081, +      Iir_Kind_Nature_Reference_Attribute => 2085, +      Iir_Kind_Left_Type_Attribute => 2090, +      Iir_Kind_Right_Type_Attribute => 2095, +      Iir_Kind_High_Type_Attribute => 2100, +      Iir_Kind_Low_Type_Attribute => 2105, +      Iir_Kind_Ascending_Type_Attribute => 2110, +      Iir_Kind_Image_Attribute => 2116, +      Iir_Kind_Value_Attribute => 2122, +      Iir_Kind_Pos_Attribute => 2128, +      Iir_Kind_Val_Attribute => 2134, +      Iir_Kind_Succ_Attribute => 2140, +      Iir_Kind_Pred_Attribute => 2146, +      Iir_Kind_Leftof_Attribute => 2152, +      Iir_Kind_Rightof_Attribute => 2158, +      Iir_Kind_Signal_Slew_Attribute => 2166, +      Iir_Kind_Quantity_Slew_Attribute => 2174, +      Iir_Kind_Ramp_Attribute => 2182, +      Iir_Kind_Zoh_Attribute => 2190, +      Iir_Kind_Ltf_Attribute => 2198, +      Iir_Kind_Ztf_Attribute => 2208, +      Iir_Kind_Dot_Attribute => 2215, +      Iir_Kind_Integ_Attribute => 2222, +      Iir_Kind_Above_Attribute => 2230, +      Iir_Kind_Quantity_Delayed_Attribute => 2238, +      Iir_Kind_Delayed_Attribute => 2247, +      Iir_Kind_Stable_Attribute => 2256, +      Iir_Kind_Quiet_Attribute => 2265, +      Iir_Kind_Transaction_Attribute => 2274, +      Iir_Kind_Event_Attribute => 2278, +      Iir_Kind_Active_Attribute => 2282, +      Iir_Kind_Last_Event_Attribute => 2286, +      Iir_Kind_Last_Active_Attribute => 2290, +      Iir_Kind_Last_Value_Attribute => 2294, +      Iir_Kind_Driving_Attribute => 2298, +      Iir_Kind_Driving_Value_Attribute => 2302, +      Iir_Kind_Behavior_Attribute => 2302, +      Iir_Kind_Structure_Attribute => 2302, +      Iir_Kind_Simple_Name_Attribute => 2309, +      Iir_Kind_Instance_Name_Attribute => 2314, +      Iir_Kind_Path_Name_Attribute => 2319, +      Iir_Kind_Left_Array_Attribute => 2326, +      Iir_Kind_Right_Array_Attribute => 2333, +      Iir_Kind_High_Array_Attribute => 2340, +      Iir_Kind_Low_Array_Attribute => 2347, +      Iir_Kind_Length_Array_Attribute => 2354, +      Iir_Kind_Ascending_Array_Attribute => 2361, +      Iir_Kind_Range_Array_Attribute => 2368, +      Iir_Kind_Reverse_Range_Array_Attribute => 2375, +      Iir_Kind_Attribute_Name => 2384       );     function Get_Fields_First (K : Iir_Kind) return Fields_Index is @@ -12183,6 +12184,7 @@ package body Vhdl.Nodes_Meta is             | Iir_Kind_Non_Object_Alias_Declaration             | Iir_Kind_Psl_Declaration             | Iir_Kind_Psl_Endpoint_Declaration +           | Iir_Kind_Enumeration_Literal             | Iir_Kind_Function_Declaration             | Iir_Kind_Procedure_Declaration             | Iir_Kind_Terminal_Declaration diff --git a/src/vhdl/vhdl-sem_decls.adb b/src/vhdl/vhdl-sem_decls.adb index f7b57f601..19c5ec4d7 100644 --- a/src/vhdl/vhdl-sem_decls.adb +++ b/src/vhdl/vhdl-sem_decls.adb @@ -2403,6 +2403,11 @@ package body Vhdl.Sem_Decls is     procedure Check_Full_Declaration (Decls_Parent : Iir; Decl: Iir)     is +      procedure Warn_Unused (E : Iir) is +      begin +         Warning_Msg_Sem (Warnid_Unused, +E, "%n is never referenced", +E); +      end Warn_Unused; +        El: Iir;        --  If set, emit a warning if a declaration is not used. @@ -2524,17 +2529,36 @@ package body Vhdl.Sem_Decls is                      and then not Is_Implicit_Subprogram (El)                      and then not Is_Second_Subprogram_Specification (El)                    then -                     Warning_Msg_Sem (Warnid_Unused, +El, -                                      "%n is never referenced", +El); +                     Warn_Unused (El);                    end if;                 when Iir_Kind_Signal_Declaration                   | Iir_Kind_Variable_Declaration                   | Iir_Kind_Component_Declaration -                 | Iir_Kind_Type_Declaration                   | Iir_Kind_Subtype_Declaration =>                    if not Get_Use_Flag (El) then -                     Warning_Msg_Sem (Warnid_Unused, +El, -                                      "%n is never referenced", +El); +                     Warn_Unused (El); +                  end if; +               when Iir_Kind_Type_Declaration => +                  if not Get_Use_Flag (El) then +                     Warn_Unused (El); +                  else +                     declare +                        Def : constant Iir := Get_Type_Definition (El); +                        Lits : Iir_Flist; +                        Lit : Iir; +                     begin +                        if Get_Kind (Def) +                          = Iir_Kind_Enumeration_Type_Definition +                        then +                           Lits := Get_Enumeration_Literal_List (Def); +                           for I in Flist_First .. Flist_Last (Lits) loop +                              Lit := Get_Nth_Element (Lits, I); +                              if not Get_Use_Flag (Lit) then +                                 Warn_Unused (Lit); +                              end if; +                           end loop; +                        end if; +                     end;                    end if;                 when others =>                    null; diff --git a/src/vhdl/vhdl-sem_expr.adb b/src/vhdl/vhdl-sem_expr.adb index 498f1c4b2..f54b7a027 100644 --- a/src/vhdl/vhdl-sem_expr.adb +++ b/src/vhdl/vhdl-sem_expr.adb @@ -4983,11 +4983,16 @@ package body Vhdl.Sem_Expr is                 if E = Error_Mark then                    return Null_Iir;                 end if; -               if Get_Kind (E) = Iir_Kind_Constant_Declaration -                 and then not Deferred_Constant_Allowed -               then -                  Check_Constant_Restriction (E, Expr); -               end if; +               case Get_Kind (E) is +                  when Iir_Kind_Constant_Declaration => +                     if not Deferred_Constant_Allowed then +                        Check_Constant_Restriction (E, Expr); +                     end if; +                  when Iir_Kind_Enumeration_Literal => +                     Set_Use_Flag (E, True); +                  when others => +                     null; +               end case;                 E := Name_To_Expression (Expr, A_Type);                 return E;              end; diff --git a/src/vhdl/vhdl-sem_names.adb b/src/vhdl/vhdl-sem_names.adb index 566932049..28bfcaab4 100644 --- a/src/vhdl/vhdl-sem_names.adb +++ b/src/vhdl/vhdl-sem_names.adb @@ -4830,6 +4830,10 @@ package body Vhdl.Sem_Names is                    end if;                 end if; +               if Get_Kind (Expr) = Iir_Kind_Enumeration_Literal then +                  Set_Use_Flag (Expr, True); +               end if; +                 return Res;              end if;           when Iir_Kind_Function_Call | 
