From d229e16e436d2b15c68035a96081adec9c65f577 Mon Sep 17 00:00:00 2001 From: Tristan Gingold Date: Mon, 13 May 2019 18:36:32 +0200 Subject: errorout: make it more neutral. --- src/errorout.adb | 57 +++++++++++++++++++++++++++++++------------------------- src/errorout.ads | 17 +++++++++-------- 2 files changed, 41 insertions(+), 33 deletions(-) (limited to 'src') 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; -- cgit v1.2.3