diff options
author | Tristan Gingold <tgingold@free.fr> | 2019-05-08 07:33:04 +0200 |
---|---|---|
committer | Tristan Gingold <tgingold@free.fr> | 2019-05-08 07:33:04 +0200 |
commit | a05c5813bee6c063dc196471e66816fbca5dc50e (patch) | |
tree | 7e6e01af2cbb3bcb02bf52fab6bf3075e613a211 /src/vhdl/vhdl-errors.ads | |
parent | d87e8284e3dc3adced8b8aa2258e3a87097396b1 (diff) | |
download | ghdl-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.ads | 136 |
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; |