Commit dd5875a6 by Ed Schonberg Committed by Geert Bosch

sem_ch3.adb (Find_Type_Of_Subtype_Indic): If subtype indication is malformed...

	* sem_ch3.adb (Find_Type_Of_Subtype_Indic): If subtype indication
	is malformed, use instance of Any_Id to allow analysis to proceed.

	* par-ch12.adb (P_Formal_Type_Declaration): Propagate Error if
	type definition is illegal.
	(P_Formal_Derived_Type_Definition): Better recovery when TAGGED is
	misplaced.

From-SVN: r47642
parent c2a41e57
2001-12-04 Ed Schonberg <schonber@gnat.com> 2001-12-04 Ed Schonberg <schonber@gnat.com>
* sem_ch3.adb (Find_Type_Of_Subtype_Indic): If subtype indication
is malformed, use instance of Any_Id to allow analysis to proceed.
* par-ch12.adb (P_Formal_Type_Declaration): Propagate Error if
type definition is illegal.
(P_Formal_Derived_Type_Definition): Better recovery when TAGGED is
misplaced.
2001-12-04 Ed Schonberg <schonber@gnat.com>
* sem_warn.adb (Output_Unreferenced_Messages): Extend previous fix to * sem_warn.adb (Output_Unreferenced_Messages): Extend previous fix to
constants. constants.
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- $Revision: 1.46 $ -- $Revision$
-- -- -- --
-- Copyright (C) 1992-2001 Free Software Foundation, Inc. -- -- Copyright (C) 1992-2001 Free Software Foundation, Inc. --
-- -- -- --
...@@ -431,6 +431,7 @@ package body Ch12 is ...@@ -431,6 +431,7 @@ package body Ch12 is
function P_Formal_Type_Declaration return Node_Id is function P_Formal_Type_Declaration return Node_Id is
Decl_Node : Node_Id; Decl_Node : Node_Id;
Def_Node : Node_Id;
begin begin
Decl_Node := New_Node (N_Formal_Type_Declaration, Token_Ptr); Decl_Node := New_Node (N_Formal_Type_Declaration, Token_Ptr);
...@@ -446,8 +447,15 @@ package body Ch12 is ...@@ -446,8 +447,15 @@ package body Ch12 is
T_Is; T_Is;
Set_Formal_Type_Definition (Decl_Node, P_Formal_Type_Definition); Def_Node := P_Formal_Type_Definition;
TF_Semicolon;
if Def_Node /= Error then
Set_Formal_Type_Definition (Decl_Node, Def_Node);
TF_Semicolon;
else
Decl_Node := Error;
end if;
return Decl_Node; return Decl_Node;
end P_Formal_Type_Declaration; end P_Formal_Type_Declaration;
...@@ -621,6 +629,17 @@ package body Ch12 is ...@@ -621,6 +629,17 @@ package body Ch12 is
Scan; -- past WITH Scan; -- past WITH
Set_Private_Present (Def_Node, True); Set_Private_Present (Def_Node, True);
T_Private; T_Private;
elsif Token = Tok_Tagged then
Scan;
if Token = Tok_Private then
Error_Msg_SC ("TAGGED should be WITH");
Set_Private_Present (Def_Node, True);
T_Private;
else
Ignore (Tok_Tagged);
end if;
end if; end if;
return Def_Node; return Def_Node;
......
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
-- -- -- --
-- B o d y -- -- B o d y --
-- -- -- --
-- $Revision: 1.2 $ -- $Revision$
-- -- -- --
-- Copyright (C) 1992-2001, Free Software Foundation, Inc. -- -- Copyright (C) 1992-2001, Free Software Foundation, Inc. --
-- -- -- --
...@@ -9300,6 +9300,10 @@ package body Sem_Ch3 is ...@@ -9300,6 +9300,10 @@ package body Sem_Ch3 is
-- Otherwise we have a subtype mark without a constraint -- Otherwise we have a subtype mark without a constraint
elsif Error_Posted (S) then
Rewrite (S, New_Occurrence_Of (Any_Id, Sloc (S)));
return Any_Type;
else else
Find_Type (S); Find_Type (S);
Typ := Entity (S); Typ := Entity (S);
......
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