[Ada] par-ch6: do not mark subprogram as missing "is" if imported

gcc/ada/

	* par-ch6.adb (Contains_Import_Aspect): New function.
	(P_Subprogram): Acknowledge `Import` aspects.
This commit is contained in:
Ghjuvan Lacambre 2021-06-17 10:01:33 +02:00 committed by Pierre-Marie de Rodat
parent f377685e3d
commit d35d546a7f
1 changed files with 25 additions and 1 deletions

View File

@ -201,6 +201,28 @@ package body Ch6 is
-- Error recovery: cannot raise Error_Resync
function P_Subprogram (Pf_Flags : Pf_Rec) return Node_Id is
function Contains_Import_Aspect (Aspects : List_Id) return Boolean;
-- Return True if Aspects contains an Import aspect.
----------------------------
-- Contains_Import_Aspect --
----------------------------
function Contains_Import_Aspect (Aspects : List_Id) return Boolean is
Aspect : Node_Id := First (Aspects);
begin
while Present (Aspect) loop
if Chars (Identifier (Aspect)) = Name_Import then
return True;
end if;
Next (Aspect);
end loop;
return False;
end Contains_Import_Aspect;
Specification_Node : Node_Id;
Name_Node : Node_Id;
Aspects : List_Id;
@ -982,10 +1004,12 @@ package body Ch6 is
if Pf_Flags.Pbod
-- Disconnect this processing if we have scanned a null procedure
-- because in this case the spec is complete anyway with no body.
-- or an Import aspect because in this case the spec is complete
-- anyway with no body.
and then (Nkind (Specification_Node) /= N_Procedure_Specification
or else not Null_Present (Specification_Node))
and then not Contains_Import_Aspect (Aspects)
then
SIS_Labl := Scopes (Scope.Last).Labl;
SIS_Sloc := Scopes (Scope.Last).Sloc;