aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorEd Schonberg <schonber@gnat.com>2001-12-05 01:43:31 +0000
committerGeert Bosch <bosch@gcc.gnu.org>2001-12-05 02:43:31 +0100
commitc0def2adcc412435120f1b4e5cb7749aa0491bec (patch)
treeec4cdad4a6c00dd66fd4145cb13b57eb9462931d /gcc/ada
parent0626ef8add9823d3f8714e3a00d6372ba4f4ff4a (diff)
downloadgcc-c0def2adcc412435120f1b4e5cb7749aa0491bec.zip
gcc-c0def2adcc412435120f1b4e5cb7749aa0491bec.tar.gz
gcc-c0def2adcc412435120f1b4e5cb7749aa0491bec.tar.bz2
sem_ch7.adb (New_Private_Type): Set Is_Tagged_Type flag before processing discriminants to diagnose illegal...
* sem_ch7.adb (New_Private_Type): Set Is_Tagged_Type flag before processing discriminants to diagnose illegal default values. From-SVN: r47645
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/ChangeLog5
-rw-r--r--gcc/ada/sem_ch7.adb8
2 files changed, 11 insertions, 2 deletions
diff --git a/gcc/ada/ChangeLog b/gcc/ada/ChangeLog
index ea362f1..8aa8b16 100644
--- a/gcc/ada/ChangeLog
+++ b/gcc/ada/ChangeLog
@@ -1,5 +1,10 @@
2001-12-04 Ed Schonberg <schonber@gnat.com>
+ * sem_ch7.adb (New_Private_Type): Set Is_Tagged_Type flag before
+ processing discriminants to diagnose illegal default values.
+
+2001-12-04 Ed Schonberg <schonber@gnat.com>
+
* sem_attr.adb (Resolve_Attribute): Handle properly an non-classwide
access discriminant within a type extension that constrains its
parent discriminants.
diff --git a/gcc/ada/sem_ch7.adb b/gcc/ada/sem_ch7.adb
index c1b0521..74d70d1 100644
--- a/gcc/ada/sem_ch7.adb
+++ b/gcc/ada/sem_ch7.adb
@@ -6,7 +6,7 @@
-- --
-- B o d y --
-- --
--- $Revision: 1.335 $
+-- $Revision$
-- --
-- Copyright (C) 1992-2001, Free Software Foundation, Inc. --
-- --
@@ -1308,6 +1308,11 @@ package body Sem_Ch7 is
No (Discriminant_Specifications (N))
and then not Unknown_Discriminants_Present (N));
+ -- Set tagged flag before processing discriminants, to catch
+ -- illegal usage.
+
+ Set_Is_Tagged_Type (Id, Tagged_Present (Def));
+
Set_Discriminant_Constraint (Id, No_Elist);
Set_Girder_Constraint (Id, No_Elist);
@@ -1323,7 +1328,6 @@ package body Sem_Ch7 is
Set_Private_Dependents (Id, New_Elmt_List);
if Tagged_Present (Def) then
- Set_Is_Tagged_Type (Id, True);
Set_Ekind (Id, E_Record_Type_With_Private);
Make_Class_Wide_Type (Id);
Set_Primitive_Operations (Id, New_Elmt_List);