]> gcc.gnu.org Git - gcc.git/commitdiff
sem_ch3.adb (Process_Subtype): An allocator is a valid construct that can carry a...
authorArnaud Charlet <charlet@gcc.gnu.org>
Tue, 5 Aug 2008 15:14:29 +0000 (17:14 +0200)
committerArnaud Charlet <charlet@gcc.gnu.org>
Tue, 5 Aug 2008 15:14:29 +0000 (17:14 +0200)
2008-08-05  Ed Schonberg  <schonberg@adacore.com>

* sem_ch3.adb (Process_Subtype): An allocator is a valid construct that
can carry a null exclusion indicator, and on which an error may be
posted if the indicator is redundant.

* sem_ch8.adb (Analyze_Object_Renaming): Verify that a null exclusion
does not apply to a subtype mark that already excludes null.

* sem_ch12.adb (Formal_Object_Declaration): Verify that a null
exclusion does not apply to a subtype mark that already excludes null.

From-SVN: r138728

gcc/ada/ChangeLog
gcc/ada/sem_ch12.adb
gcc/ada/sem_ch3.adb
gcc/ada/sem_ch8.adb

index a0b29acef30287d3204f8ebf96688c01bd9d82fd..761c5dad643c645420c4cfa8090ed6439fbc8306 100644 (file)
@@ -1,3 +1,27 @@
+2008-08-05  Ed Schonberg  <schonberg@adacore.com>
+
+       * freeze.adb:
+       (Freeze_Entity): A deferred constant does not violate the restriction
+       No_Default_Initialization, 
+
+       * sem_ch3.adb (Process_Subtype): An allocator is a valid construct that
+       can carry a null exclusion indicator, and on which an error may be
+       posted if the indicator is redundant.
+
+       * sem_ch8.adb (Analyze_Object_Renaming): Verify that a null exclusion
+       does not apply to a subtype mark that already excludes null.
+
+       * sem_ch12.adb (Formal_Object_Declaration): Verify that a null
+       exclusion does not apply to a subtype mark that already excludes null.
+
+2008-08-05  Thomas Quinot  <quinot@adacore.com>
+
+       * Makefile.rtl: Compile s-oscons.ads as part of the runtime library.
+
+2008-08-05  Doug Rupp  <rupp@adacore.com>
+
+       * vms_data.ads: Translation for /POINTER_SIZE qualifier.
+
 2008-08-05  Thomas Quinot  <quinot@adacore.com>
 
        * gsocket.h: Make this file includable in a Nucleus environment, which
index dc23ddea238dfe08d3daec7d48711259cb7478a0..82b47aa17a65b8ff93411a89063010a9f19ac6e5 100644 (file)
@@ -1810,6 +1810,16 @@ package body Sem_Ch12 is
          Find_Type (Subtype_Mark (N));
          T := Entity (Subtype_Mark (N));
 
+         --  Verify that there is no redundant null exclusion.
+
+         if Null_Exclusion_Present (N)
+           and then Can_Never_Be_Null (T)
+         then
+            Error_Msg_NE
+              ("`NOT NULL` not allowed (& already excludes null)",
+                 N, T);
+         end if;
+
       --  Ada 2005 (AI-423): Formal object with an access definition
 
       else
index 3720b3b7643e467b2b5da36d8129eea7379b3632..8a44655edf9470e4fd54d7a806b687925e0038d0 100644 (file)
@@ -16507,7 +16507,9 @@ package body Sem_Ch3 is
              or else
            Nkind_In (P, N_Derived_Type_Definition,
                         N_Discriminant_Specification,
+                        N_Formal_Object_Declaration,
                         N_Object_Declaration,
+                        N_Object_Renaming_Declaration,
                         N_Parameter_Specification,
                         N_Subtype_Declaration);
 
@@ -16552,6 +16554,9 @@ package body Sem_Ch3 is
                      Error_Node :=
                        Subtype_Indication (Component_Definition (Related_Nod));
 
+                  when N_Allocator =>
+                     Error_Node := Expression (Related_Nod);
+
                   when others =>
                      pragma Assert (False);
                      Error_Node := Related_Nod;
index 16c79d99f048e218c1a7ec76e64eaa112c3ceb29..9a19b2a8b1eee5563bade90952cf7d324e59ed8d 100644 (file)
@@ -884,6 +884,11 @@ package body Sem_Ch8 is
                   Error_Msg_N
                     ("renamed object does not exclude `NULL` "
                      & "(RM 8.5.1(4.6/2))", N);
+
+               elsif Can_Never_Be_Null (Etype (Nam_Ent)) then
+                  Error_Msg_NE
+                    ("`NOT NULL` not allowed (type of& already excludes null)",
+                      N, Nam_Ent);
                end if;
             end if;
          end;
This page took 0.129732 seconds and 5 git commands to generate.