When the SPARK restriction mode was set, check that a declaration of 
unconstrained type is allowed only for constants of type string.

Tested on x86_64-pc-linux-gnu, committed on trunk

2011-09-02  Marc Sango  <sa...@adacore.com>

        * sem_ch3.adb (Analyze_Object_Declaration): Change
        comment and add additional check to differentiate constant of
        type string from others unconstrained type.

Index: sem_ch3.adb
===================================================================
--- sem_ch3.adb (revision 178461)
+++ sem_ch3.adb (working copy)
@@ -3320,13 +3320,12 @@
                --  In SPARK, a declaration of unconstrained type is allowed
                --  only for constants of type string.
 
-               --  Why no check for Comes_From_Source here, seems wrong ???
-               --  Where is check to differentiate string case ???
+               if Nkind (E) = N_String_Literal then
+                  Check_SPARK_Restriction
+                    ("declaration of object of unconstrained type not allowed",
+                     E);
+               end if;
 
-               Check_SPARK_Restriction
-                 ("declaration of object of unconstrained type not allowed",
-                  E);
-
                --  Unconstrained variables not allowed in Ada 83 mode
 
                if Ada_Version = Ada_83

Reply via email to