Comments
Patch
===================================================================
@@ -1322,9 +1322,12 @@
-- value of the exponent must be known compile time. Otherwise,
-- the exponentiation evaluation will return an error message.
- if L_Has_Dimensions
- and then Compile_Time_Known_Value (R)
- then
+ if L_Has_Dimensions then
+ if not Compile_Time_Known_Value (R) then
+ Error_Msg_N ("exponent of dimensioned operand must be " &
+ "known at compile-time", N);
+ end if;
+
declare
Exponent_Value : Rational := Zero;
The test presented below illustrates the current patch. ------------ -- Source -- ------------ with System.Dim.Mks; use System.Dim.Mks; with System.Dim.Mks_IO; use System.Dim.Mks_IO; procedure Main is begin for N in -3 .. +3 loop Put (m**N , Aft => 2, Exp => 0); end loop; end Main; ----------------- -- Compilation -- ----------------- $ gcc -c -gnat12 main.adb main.adb:7:13: exponent of dimensioned operand must be known at compile-time compilation abandoned due to previous error Tested on x86_64-pc-linux-gnu, committed on trunk 2012-08-06 Vincent Pucci <pucci@adacore.com> * sem_dim.adb (Analyze_Dimension_Binary_Op): Issue an error message for unknown exponent at compile-time.