Analyze_Dimension (N);
return;
- -- A Raise_Expression takes its type from context. The expression
- -- itself does not specify any possible interpretation.
-
- -- Seems confusing to set the Etype to Typ here, only to be overwritten
- -- and set to Ctx_Type in the big case statement???
+ -- A Raise_Expression takes its type from context. The Etype was set
+ -- to Any_Type, reflecting the fact that the expression itself does
+ -- not specify any possible interpretation. So we set the type to the
+ -- resolution type here and now. We need to do this before Resolve sees
+ -- the Any_Type value.
elsif Nkind (N) = N_Raise_Expression then
Set_Etype (N, Typ);
- -- Return if type = Any_Type (previous error encountered).
+ -- Any other case of Any_Type as the Etype value means that we had
+ -- a previous error.
elsif Etype (N) = Any_Type then
Debug_A_Exit ("resolving ", N, " (done, Etype = Any_Type)");
-- Why is the following null, needs a comment ???
- when N_Quantified_Expression => null;
+ when N_Quantified_Expression
+ => null;
+
+ -- Nothing to do for Raise_Expression, since we took care of
+ -- setting the Etype earlier, and no other processing is needed.
when N_Raise_Expression
- => Set_Etype (N, Ctx_Type);
+ => null;
when N_Raise_xxx_Error
=> Set_Etype (N, Ctx_Type);
if In_Instance_Body then
Error_Msg_N
("??type in allocator has deeper level than "
- & " designated class-wide type", E);
+ & "designated class-wide type", E);
Error_Msg_N
("\??Program_Error will be raised at run time", E);
Rewrite (N,
then
if In_Instance_Body then
Conversion_Error_N
- ("??source array type has deeper accesibility "
+ ("??source array type has deeper accessibility "
& "level than target", Operand);
Conversion_Error_N
("\??Program_Error will be raised at run time",
-- --
-- B o d y --
-- --
--- Copyright (C) 1992-2012, Free Software Foundation, Inc. --
+-- Copyright (C) 1992-2013, 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- --
RA : Entity_Id;
begin
- -- Retrieve parent subtype from subtype declaration for actual.
+ -- Retrieve parent subtype from subtype declaration for actual
if Nkind (Par) = N_Subtype_Declaration
and then not Comes_From_Source (Par)
end if;
end if;
- -- Otherwise actual is not the actual of an enclosing instance.
+ -- Otherwise actual is not the actual of an enclosing instance
return T;
end Real_Actual;
-- Determine whether a subprogram is an actual in an enclosing instance.
-- An overloading between such a subprogram and one declared outside the
-- instance is resolved in favor of the first, because it resolved in
- -- the generic. Within the instance the eactual is represented by a
+ -- the generic. Within the instance the actual is represented by a
-- constructed subprogram renaming.
function Matches (Actual, Formal : Node_Id) return Boolean;