diff options
author | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-07 09:46:16 +0000 |
---|---|---|
committer | charlet <charlet@138bc75d-0d04-0410-961f-82ee72b054a4> | 2005-07-07 09:46:16 +0000 |
commit | b26b6268ed6f1a9452d54d9e19342e620235f4ca (patch) | |
tree | cb60a98bd8b2a8eee5b74c882cddea07b285a3ad /gcc/ada/sem_ch3.adb | |
parent | e1c20931c7c1473851ea4b05e4d1aec6a74ec5aa (diff) | |
download | gcc-b26b6268ed6f1a9452d54d9e19342e620235f4ca.tar.gz |
2005-07-07 Javier Miranda <miranda@adacore.com>
* freeze.adb (Freeze_Entity): Check wrong uses of tag incomplete types.
* par-ch3.adb (P_Type_Declaration): Give support to tagged incomplete
types:
--
type DEFINING_IDENTIFIER [DISCRIMINANT_PART] [IS TAGGED];
--
* sem_attr.adb (Check_Not_Incomplete_Type): Additional checks for wrong
use of tag incomplete types.
* sem_ch3.adb (Analyze_Incomplete_Type): Add mininum decoration to
give support to tagged incomplete types.
* sem_ch5.adb (Analyze_Case_Statement): In generated code, if the
expression is a discriminant reference and its type is private, as can
happen within a stream operation for a mutable record, use the full
view of the type to resolve the case alternatives.
(Analyze_Assignment): Check wrong dereference of incomplete types.
* sem_ch6.adb (Process_Formals): Allow the use of tagged incomplete
types.
* sem_res.adb (Resolve_Explicit_Dereference): Allow the use of tagged
incomplete types.
* sinfo.adb (Taggged_Present/Set_Taggged_Present): Applicable to
N_Incomplete_Type_Declaration nodes.
* sinfo.ads (N_Incomplete_Type_Declaration): Addition of attribute
Tag_Present to give support to tagged incomplete types:
--
type DEFINING_IDENTIFIER [DISCRIMINANT_PART] [IS TAGGED];
--
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@101695 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/ada/sem_ch3.adb')
-rw-r--r-- | gcc/ada/sem_ch3.adb | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch3.adb b/gcc/ada/sem_ch3.adb index 124adbbb07c..bc60d9d4012 100644 --- a/gcc/ada/sem_ch3.adb +++ b/gcc/ada/sem_ch3.adb @@ -1529,6 +1529,16 @@ package body Sem_Ch3 is Init_Size_Align (T); Set_Is_First_Subtype (T, True); Set_Etype (T, T); + + -- Ada 2005 (AI-326): Mininum decoration to give support to tagged + -- incomplete types + + if Tagged_Present (N) then + Set_Is_Tagged_Type (T); + Make_Class_Wide_Type (T); + Set_Primitive_Operations (T, New_Elmt_List); + end if; + New_Scope (T); Set_Stored_Constraint (T, No_Elist); @@ -7535,10 +7545,10 @@ package body Sem_Ch3 is while Present (I) loop - -- Protect against wrong usages. Example: + -- Protect against wrong uses. For example: -- type I is interface; -- type O is tagged null record; - -- type Wrong is new I and O with null record; + -- type Wrong is new I and O with null record; -- ERROR if Is_Interface (Etype (I)) then @@ -14131,7 +14141,7 @@ package body Sem_Ch3 is H : Entity_Id; begin - -- If there is a previous partial view, no need to create a new one. + -- If there is a previous partial view, no need to create a new one if Prev /= T then return; |