Commit 50a73953 by Steve Baird Committed by Pierre-Marie de Rodat

[Ada] Don't fail a front-end assertion if errors have already been detected

In sem_eval.adb, we have an assertion that the type of a "null" literal
is an access type. It turns out that this assertion can fail when
processing an illegal program, e.g. one that contains something like
"Integer'(null)".  This leads to differences in the compiler's generated
output for such tests depending on whether assertions are/aren't
enabled; in particular, the "compilation abandoned due to previous
error" message generated in Comperr.Compiler_Abort. In order to avoid
these differences, we change the assertion so that it does not fail if
errors have already been posted on the given node.

2019-09-18  Steve Baird  <baird@adacore.com>

gcc/ada/

	* sem_eval.adb (Expr_Value): Do not fail "the type of a null
	literal must be an access type" assertion if errors have already
	been posted on the given node.

From-SVN: r275852
parent 432a3b36
2019-09-18 Steve Baird <baird@adacore.com>
* sem_eval.adb (Expr_Value): Do not fail "the type of a null
literal must be an access type" assertion if errors have already
been posted on the given node.
2019-09-18 Piotr Trojanek <trojanek@adacore.com>
* exp_dbug.ads, exp_dbug.adb (Get_Homonym_Number): Refine type
......
......@@ -4278,7 +4278,8 @@ package body Sem_Eval is
-- The NULL access value
elsif Kind = N_Null then
pragma Assert (Is_Access_Type (Underlying_Type (Etype (N))));
pragma Assert (Is_Access_Type (Underlying_Type (Etype (N)))
or else Error_Posted (N));
Val := Uint_0;
-- Character literal
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment