aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/errorout.adb57
-rw-r--r--src/errorout.ads17
2 files changed, 41 insertions, 33 deletions
diff --git a/src/errorout.adb b/src/errorout.adb
index 55ac6c814..d1bec4cbf 100644
--- a/src/errorout.adb
+++ b/src/errorout.adb
@@ -148,6 +148,22 @@ package body Errorout is
return Res;
end "+";
+ procedure Report_Vhdl_Token (Tok : Vhdl.Tokens.Token_Type)
+ is
+ use Vhdl.Tokens;
+ begin
+ case Tok is
+ when Tok_Identifier =>
+ Report_Handler.Message ("an identifier");
+ when Tok_Eof =>
+ Report_Handler.Message ("end of file");
+ when others =>
+ Report_Handler.Message ("'");
+ Report_Handler.Message (Image (Tok));
+ Report_Handler.Message ("'");
+ end case;
+ end Report_Vhdl_Token;
+
procedure Report_Msg (Id : Msgid_Type;
Origin : Report_Origin;
Loc : Source_Coord_Type;
@@ -236,8 +252,9 @@ package body Errorout is
begin
Report_Handler.Message ("""");
case Arg.Kind is
- when Earg_Iir =>
- Id := Get_Identifier (Arg.Val_Iir);
+ when Earg_Vhdl_Node =>
+ Id := Vhdl.Nodes.Get_Identifier
+ (Arg.Val_Vhdl_Node);
when Earg_Id =>
Id := Arg.Val_Id;
when others =>
@@ -265,27 +282,15 @@ package body Errorout is
when 't' =>
-- A token
declare
- use Vhdl.Tokens;
Arg : Earg_Type renames Args (Argn);
- Tok : Token_Type;
begin
case Arg.Kind is
- when Earg_Token =>
- Tok := Arg.Val_Tok;
+ when Earg_Vhdl_Token =>
+ Report_Vhdl_Token (Arg.Val_Vhdl_Tok);
when others =>
-- Invalid conversion to character.
raise Internal_Error;
end case;
- case Tok is
- when Tok_Identifier =>
- Report_Handler.Message ("an identifier");
- when Tok_Eof =>
- Report_Handler.Message ("end of file");
- when others =>
- Report_Handler.Message ("'");
- Report_Handler.Message (Image (Tok));
- Report_Handler.Message ("'");
- end case;
end;
when 'l' =>
-- Location
@@ -299,8 +304,9 @@ package body Errorout is
case Arg.Kind is
when Earg_Location =>
Arg_Loc := Arg.Val_Loc;
- when Earg_Iir =>
- Arg_Loc := Get_Location (Arg.Val_Iir);
+ when Earg_Vhdl_Node =>
+ Arg_Loc := Vhdl.Nodes.Get_Location
+ (Arg.Val_Vhdl_Node);
when others =>
raise Internal_Error;
end case;
@@ -326,8 +332,9 @@ package body Errorout is
Arg : Earg_Type renames Args (Argn);
begin
case Arg.Kind is
- when Earg_Iir =>
- Report_Handler.Message (Disp_Node (Arg.Val_Iir));
+ when Earg_Vhdl_Node =>
+ Report_Handler.Message
+ (Disp_Node (Arg.Val_Vhdl_Node));
when others =>
-- Invalid conversion to node.
raise Internal_Error;
@@ -386,9 +393,9 @@ package body Errorout is
Report_Msg (Msgid_Error, Option, No_Source_Coord, Msg);
end Error_Msg_Option_NR;
- procedure Error_Msg_Option (Msg: String) is
+ procedure Error_Msg_Option (Msg: String; Args : Earg_Arr := No_Eargs) is
begin
- Error_Msg_Option_NR (Msg);
+ Report_Msg (Msgid_Error, Option, No_Source_Coord, Msg, Args);
raise Option_Error;
end Error_Msg_Option;
@@ -397,14 +404,14 @@ package body Errorout is
Report_Msg (Id, Option, No_Source_Coord, Msg);
end Warning_Msg_Option;
- function Make_Earg_Vhdl_Node (V : Iir) return Earg_Type is
+ function Make_Earg_Vhdl_Node (V : Vhdl.Nodes.Iir) return Earg_Type is
begin
- return (Kind => Earg_Iir, Val_Iir => V);
+ return (Kind => Earg_Vhdl_Node, Val_Vhdl_Node => V);
end Make_Earg_Vhdl_Node;
function Make_Earg_Vhdl_Token (V : Vhdl.Tokens.Token_Type)
return Earg_Type is
begin
- return (Kind => Earg_Token, Val_Tok => V);
+ return (Kind => Earg_Vhdl_Token, Val_Vhdl_Tok => V);
end Make_Earg_Vhdl_Token;
end Errorout;
diff --git a/src/errorout.ads b/src/errorout.ads
index 88b82b18a..860e663ba 100644
--- a/src/errorout.ads
+++ b/src/errorout.ads
@@ -16,7 +16,7 @@
-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
-- 02111-1307, USA.
with Types; use Types;
-with Vhdl.Nodes; use Vhdl.Nodes;
+with Vhdl.Nodes;
with Vhdl.Tokens;
package Errorout is
@@ -226,7 +226,7 @@ package Errorout is
-- Disp an error, prepended with program name, and raise option_error.
-- This is used for errors before initialisation, such as bad option or
-- bad filename.
- procedure Error_Msg_Option (Msg: String);
+ procedure Error_Msg_Option (Msg: String; Args : Earg_Arr := No_Eargs);
pragma No_Return (Error_Msg_Option);
-- Same as Error_Msg_Option but do not raise Option_Error.
@@ -235,29 +235,30 @@ package Errorout is
-- Warn about an option.
procedure Warning_Msg_Option (Id : Msgid_Warnings; Msg: String);
- function Make_Earg_Vhdl_Node (V : Iir) return Earg_Type;
+ function Make_Earg_Vhdl_Node (V : Vhdl.Nodes.Iir) return Earg_Type;
function Make_Earg_Vhdl_Token (V : Vhdl.Tokens.Token_Type) return Earg_Type;
private
type Earg_Kind is
(Earg_None,
- Earg_Iir, Earg_Location, Earg_Id, Earg_Char, Earg_Token, Earg_String8);
+ Earg_Location, Earg_Id, Earg_Char, Earg_String8,
+ Earg_Vhdl_Node, Earg_Vhdl_Token);
type Earg_Type (Kind : Earg_Kind := Earg_None) is record
case Kind is
when Earg_None =>
null;
- when Earg_Iir =>
- Val_Iir : Iir;
when Earg_Location =>
Val_Loc : Location_Type;
when Earg_Id =>
Val_Id : Name_Id;
when Earg_Char =>
Val_Char : Character;
- when Earg_Token =>
- Val_Tok : Vhdl.Tokens.Token_Type;
when Earg_String8 =>
Val_Str8 : String8_Len_Type;
+ when Earg_Vhdl_Node =>
+ Val_Vhdl_Node : Vhdl.Nodes.Iir;
+ when Earg_Vhdl_Token =>
+ Val_Vhdl_Tok : Vhdl.Tokens.Token_Type;
end case;
end record;