aboutsummaryrefslogtreecommitdiffstats
path: root/src/vhdl/vhdl-errors.ads
diff options
context:
space:
mode:
authorTristan Gingold <tgingold@free.fr>2019-05-08 07:33:04 +0200
committerTristan Gingold <tgingold@free.fr>2019-05-08 07:33:04 +0200
commita05c5813bee6c063dc196471e66816fbca5dc50e (patch)
tree7e6e01af2cbb3bcb02bf52fab6bf3075e613a211 /src/vhdl/vhdl-errors.ads
parentd87e8284e3dc3adced8b8aa2258e3a87097396b1 (diff)
downloadghdl-a05c5813bee6c063dc196471e66816fbca5dc50e.tar.gz
ghdl-a05c5813bee6c063dc196471e66816fbca5dc50e.tar.bz2
ghdl-a05c5813bee6c063dc196471e66816fbca5dc50e.zip
vhdl: extract vhdl.errors from errorout.
Diffstat (limited to 'src/vhdl/vhdl-errors.ads')
-rw-r--r--src/vhdl/vhdl-errors.ads136
1 files changed, 136 insertions, 0 deletions
diff --git a/src/vhdl/vhdl-errors.ads b/src/vhdl/vhdl-errors.ads
new file mode 100644
index 000000000..0b44c2795
--- /dev/null
+++ b/src/vhdl/vhdl-errors.ads
@@ -0,0 +1,136 @@
+-- Error message handling for vhdl.
+-- Copyright (C) 2002-2019 Tristan Gingold
+--
+-- GHDL is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU General Public License as published by the Free
+-- Software Foundation; either version 2, or (at your option) any later
+-- version.
+--
+-- GHDL is distributed in the hope that it will be useful, but WITHOUT ANY
+-- WARRANTY; without even the implied warranty of MERCHANTABILITY or
+-- FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
+-- for more details.
+--
+-- You should have received a copy of the GNU General Public License
+-- along with GHDL; see the file COPYING. If not, write to the Free
+-- Software Foundation, 59 Temple Place - Suite 330, Boston, MA
+-- 02111-1307, USA.
+with Types; use Types;
+with Errorout; use Errorout;
+with Vhdl.Nodes; use Vhdl.Nodes;
+with Vhdl.Tokens;
+
+package Vhdl.Errors is
+ -- This kind can't be handled.
+ procedure Error_Kind (Msg: String; An_Iir: in Iir);
+ procedure Error_Kind (Msg: String; Def : Iir_Predefined_Functions);
+ pragma No_Return (Error_Kind);
+
+ -- Conversions
+ function "+" (V : Iir) return Earg_Type
+ renames Errorout.Make_Earg_Vhdl_Node;
+ function "+" (V : Vhdl.Tokens.Token_Type) return Earg_Type
+ renames Errorout.Make_Earg_Vhdl_Token;
+
+ -- Convert location.
+ function "+" (L : Iir) return Location_Type;
+
+ -- Disp a message during semantic analysis.
+ procedure Warning_Msg_Sem (Id : Msgid_Warnings;
+ Loc : Location_Type;
+ Msg: String;
+ Args : Earg_Arr := No_Eargs;
+ Cont : Boolean := False);
+ procedure Warning_Msg_Sem (Id : Msgid_Warnings;
+ Loc : Location_Type;
+ Msg: String;
+ Arg1 : Earg_Type;
+ Cont : Boolean := False);
+
+ procedure Error_Msg_Sem (Loc: Location_Type;
+ Msg: String;
+ Args : Earg_Arr := No_Eargs;
+ Cont : Boolean := False);
+ procedure Error_Msg_Sem
+ (Loc: Location_Type; Msg: String; Arg1 : Earg_Type);
+ procedure Error_Msg_Sem_1 (Msg: String; Loc : PSL_Node);
+
+ -- Like Error_Msg_Sem, but a warning if -frelaxed or --std=93c.
+ procedure Error_Msg_Sem_Relaxed (Loc : Iir;
+ Id : Msgid_Warnings;
+ Msg : String;
+ Args : Earg_Arr := No_Eargs);
+
+ -- Disp a message during elaboration (or configuration).
+ procedure Error_Msg_Elab
+ (Msg: String; Args : Earg_Arr := No_Eargs);
+ procedure Error_Msg_Elab
+ (Msg: String; Arg1 : Earg_Type);
+ procedure Error_Msg_Elab
+ (Loc: Iir; Msg: String; Args : Earg_Arr := No_Eargs);
+ procedure Error_Msg_Elab
+ (Loc: Iir; Msg: String; Arg1 : Earg_Type);
+
+ -- Like Error_Msg_Elab, but a warning if -frelaxed or --std=93c.
+ procedure Error_Msg_Elab_Relaxed (Loc : Iir;
+ Id : Msgid_Warnings;
+ Msg : String;
+ Args : Earg_Arr := No_Eargs);
+
+ -- Disp a warning durig elaboration (or configuration).
+ procedure Warning_Msg_Elab (Id : Msgid_Warnings;
+ Loc : Iir;
+ Msg: String;
+ Arg1 : Earg_Type;
+ Cont : Boolean := False);
+ procedure Warning_Msg_Elab (Id : Msgid_Warnings;
+ Loc : Iir;
+ Msg: String;
+ Args : Earg_Arr := No_Eargs;
+ Cont : Boolean := False);
+
+ -- Disp a bug message.
+ procedure Error_Internal (Expr: Iir; Msg: String := "");
+ pragma No_Return (Error_Internal);
+
+ -- Disp a node.
+ -- Used for output of message.
+ function Disp_Node (Node: Iir) return String;
+
+ -- Disp a node location.
+ -- Used for output of message.
+ function Disp_Location (Node: Iir) return String;
+
+ -- Disp non-terminal name from KIND.
+ function Disp_Name (Kind : Iir_Kind) return String;
+
+ -- SUBPRG must be a subprogram declaration or an enumeration literal
+ -- declaration.
+ -- Returns:
+ -- "enumeration literal XX [ return TYPE ]"
+ -- "function XXX [ TYPE1, TYPE2 return TYPE ]"
+ -- "procedure XXX [ TYPE1, TYPE2 ]"
+ -- "implicit function XXX [ TYPE1, TYPE2 return TYPE ]"
+ -- "implicit procedure XXX [ TYPE1, TYPE2 ]"
+ function Disp_Subprg (Subprg : Iir) return String;
+
+ -- Print element POS of discrete type DTYPE.
+ function Disp_Discrete (Dtype : Iir; Pos : Iir_Int64) return String;
+
+ -- Disp the name of the type of NODE if known.
+ -- Disp "unknown" if it is not known.
+ -- Disp all possible types if it is an overload list.
+ function Disp_Type_Of (Node : Iir) return String;
+
+ -- Disp an error message when a pure function CALLER calls impure CALLEE.
+ procedure Error_Pure
+ (Origin : Report_Origin; Caller : Iir; Callee : Iir; Loc : Iir);
+
+ -- Report an error message as type of EXPR does not match A_TYPE.
+ -- Location is EXPR.
+ procedure Error_Not_Match (Expr: Iir; A_Type: Iir);
+
+ -- Disp interface mode MODE.
+ function Get_Mode_Name (Mode : Iir_Mode) return String;
+
+end Vhdl.Errors;