Commit d9049d04 by Ed Schonberg Committed by Arnaud Charlet

sem_dim.adb (Analyze_Dimension): Analyze object declaration and identifier nodes…

sem_dim.adb (Analyze_Dimension): Analyze object declaration and identifier nodes that do not come from source...

2017-01-19  Ed Schonberg  <schonberg@adacore.com>

	* sem_dim.adb (Analyze_Dimension): Analyze object declaration and
	identifier nodes that do not come from source, to handle properly
	dimensionality check within an inlined body which inclddes both
	original operands and rewritten operands. This removes spurious
	dimensionality errors in the presence of front-end inlining,
	as well as in SPARK mode.

From-SVN: r244614
parent a57c520e
2017-01-19 Ed Schonberg <schonberg@adacore.com>
* sem_dim.adb (Analyze_Dimension): Analyze object declaration and
identifier nodes that do not come from source, to handle properly
dimensionality check within an inlined body which inclddes both
original operands and rewritten operands. This removes spurious
dimensionality errors in the presence of front-end inlining,
as well as in SPARK mode.
2017-01-16 Jakub Jelinek <jakub@redhat.com>
PR driver/49726
......
......@@ -1122,16 +1122,22 @@ package body Sem_Dim is
-- Aspect is an Ada 2012 feature. Note that there is no need to check
-- dimensions for nodes that don't come from source, except for subtype
-- declarations where the dimensions are inherited from the base type,
-- and for explicit dereferences generated when expanding iterators.
-- for explicit dereferences generated when expanding iterators, and
-- for object declarations generated for inlining.
if Ada_Version < Ada_2012 then
return;
elsif not Comes_From_Source (N)
and then Nkind (N) /= N_Subtype_Declaration
and then Nkind (N) /= N_Explicit_Dereference
then
return;
elsif not Comes_From_Source (N) then
if Nkind_In (N, N_Explicit_Dereference,
N_Identifier,
N_Object_Declaration,
N_Subtype_Declaration)
then
null;
else
return;
end if;
end if;
case Nkind (N) is
......@@ -2138,7 +2144,8 @@ package body Sem_Dim is
end if;
end if;
-- Removal of dimensions in expression
-- Remove dimensions in expression after checking consistency
-- with given type.
Remove_Dimensions (Expr);
end if;
......
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