-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2005, Free Software Foundation, Inc. --
-- --
-- GNAT is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free Soft- --
-- 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 distributed with GNAT; see file COPYING. If not, write --
--- to the Free Software Foundation, 59 Temple Place - Suite 330, Boston, --
--- MA 02111-1307, USA. --
+-- to the Free Software Foundation, 51 Franklin Street, Fifth Floor, --
+-- Boston, MA 02110-1301, USA. --
-- --
-- GNAT was originally developed by the GNAT team at New York University. --
-- Extensive contributions were provided by Ada Core Technologies Inc. --
null;
elsif not Is_Static_Expression (Arg1) then
- Error_Msg_NE
- ("call to & requires static string argument", N, Nam);
+ Error_Msg_FE
+ ("call to & requires static string argument!", N, Nam);
+ Why_Not_Static (Arg1);
elsif String_Length (Strval (Expr_Value_S (Arg1))) = 0 then
Error_Msg_NE
("argument in call to & must be 31 characters or less", N, Nam);
end if;
+ -- Check for the case of freeing a non-null object which will raise
+ -- Constaint_Error. Issue warning here, do the expansion in Exp_Intr.
+
+ elsif Cnam = Name_Free
+ and then Can_Never_Be_Null (Etype (Arg1))
+ then
+ Error_Msg_N
+ ("freeing `NOT NULL` object will raise Constraint_Error?", N);
+
-- For now, no other special checks are required
else
if not Is_Numeric_Type (T1) then
Errint ("intrinsic operator can only apply to numeric types", E, N);
end if;
-
end Check_Intrinsic_Operator;
--------------------------------
if Name_Buffer (1) /= 'O'
and then Nam /= Name_Asm
+ and then Nam /= Name_To_Address
and then Nam not in First_Intrinsic_Name .. Last_Intrinsic_Name
then
Errint ("unrecognized intrinsic subprogram", E, N);