aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/parse.adb
diff options
context:
space:
mode:
Diffstat (limited to 'src/vhdl/parse.adb')
-rw-r--r--src/vhdl/parse.adb31
1 files changed, 21 insertions, 10 deletions
diff --git a/src/vhdl/parse.adb b/src/vhdl/parse.adb
index 99c459027..31af2556d 100644
--- a/src/vhdl/parse.adb
+++ b/src/vhdl/parse.adb
@@ -3162,7 +3162,7 @@ package body Parse is
Set_Minus_Terminal (First, Parse_Name);
end if;
when others =>
- Error_Msg_Parse ("missign type or across/throught aspect "
+ Error_Msg_Parse ("missing type or across/throught aspect "
& "in quantity declaration");
Eat_Tokens_Until_Semi_Colon;
raise Expect_Error;
@@ -3271,7 +3271,7 @@ package body Parse is
if Current_Token /= Tok_Comma then
case Current_Token is
when Tok_Assign =>
- Error_Msg_Parse ("missign type in " & Disp_Name (Kind));
+ Error_Msg_Parse ("missing type in " & Disp_Name (Kind));
exit;
when others =>
Error_Msg_Parse
@@ -6642,23 +6642,27 @@ package body Parse is
return Res;
end Parse_Process_Statement;
- procedure Check_Formal_Form (Formal : Iir) is
+ function Check_Formal_Form (Formal : Iir) return Iir is
begin
if Formal = Null_Iir then
- return;
+ return Formal;
end if;
case Get_Kind (Formal) is
when Iir_Kind_Simple_Name
| Iir_Kind_Slice_Name
| Iir_Kind_Selected_Name =>
- null;
+ return Formal;
when Iir_Kind_Parenthesis_Name =>
-- Could be an indexed name, so nothing to check within the
-- parenthesis.
- null;
+ return Formal;
+ when Iir_Kind_String_Literal8 =>
+ -- Operator designator
+ return String_To_Operator_Symbol (Formal);
when others =>
- Error_Msg_Parse (+Formal, "incorrect formal name");
+ Error_Msg_Parse (+Formal, "incorrect formal name ignored");
+ return Null_Iir;
end case;
end Check_Formal_Form;
@@ -6736,10 +6740,8 @@ package body Parse is
end if;
when Tok_Double_Arrow =>
- Formal := Actual;
-
-- Check that FORMAL is a name and not an expression.
- Check_Formal_Form (Formal);
+ Formal := Check_Formal_Form (Actual);
-- Skip '=>'
Scan;
@@ -6805,8 +6807,13 @@ package body Parse is
function Parse_Generic_Map_Aspect return Iir is
begin
Expect (Tok_Generic);
+
+ -- Skip 'generic'.
Scan_Expect (Tok_Map);
+
+ -- Skip 'map'.
Scan;
+
return Parse_Association_List_In_Parenthesis;
end Parse_Generic_Map_Aspect;
@@ -8539,6 +8546,10 @@ package body Parse is
if Current_Token = Tok_Generic then
Set_Generic_Map_Aspect_Chain (Res, Parse_Generic_Map_Aspect);
+ elsif Current_Token = Tok_Left_Paren then
+ Error_Msg_Parse ("missing 'generic map'");
+ Set_Generic_Map_Aspect_Chain
+ (Res, Parse_Association_List_In_Parenthesis);
end if;
Expect (Tok_Semi_Colon);