+2014-01-29 Tristan Gingold <gingold@adacore.com>
+
+ * exp_ch9.adb (Is_Exception_Safe): Return true if no exceptions.
+
+2014-01-29 Yannick Moy <moy@adacore.com>
+
+ * inline.ads (Pending_Body_Info): Add SPARK_Mode and
+ SPARK_Mode_Pragma components to be able to analyze generic
+ instance.
+ * sem_ch12.adb (Analyze_Package_Instantiation,
+ Inline_Instance_Body, Need_Subprogram_Instance_Body,
+ Load_Parent_Of_Generic): Pass in SPARK_Mode from instantiation
+ for future analysis of the instance.
+ (Instantiate_Package_Body,
+ Instantiate_Subprogram_Body, Set_Instance_Inv): Set SPARK_Mode
+ from instantiation to analyze the instance.
+
2014-01-29 Robert Dewar <dewar@adacore.com>
* sem_ch7.adb, sem_prag.adb, sem_ch4.adb, sem_ch6.adb: Minor code
Local_Suppress_Stack_Top => Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings));
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma));
end if;
end if;
Local_Suppress_Stack_Top => Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings)),
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma)),
Inlined_Body => True);
Pop_Scope;
Local_Suppress_Stack_Top => Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings)),
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma)),
Inlined_Body => True);
end if;
end Inline_Instance_Body;
Local_Suppress_Stack_Top => Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings));
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma));
return True;
-- Here if not inlined, or we ignore the inlining
Opt.Ada_Version := Body_Info.Version;
Opt.Ada_Version_Pragma := Body_Info.Version_Pragma;
Restore_Warnings (Body_Info.Warnings);
+ Opt.SPARK_Mode := Body_Info.SPARK_Mode;
+ Opt.SPARK_Mode_Pragma := Body_Info.SPARK_Mode_Pragma;
if No (Gen_Body_Id) then
Load_Parent_Of_Generic
Opt.Ada_Version := Body_Info.Version;
Opt.Ada_Version_Pragma := Body_Info.Version_Pragma;
Restore_Warnings (Body_Info.Warnings);
+ Opt.SPARK_Mode := Body_Info.SPARK_Mode;
+ Opt.SPARK_Mode_Pragma := Body_Info.SPARK_Mode_Pragma;
if No (Gen_Body_Id) then
Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings);
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma);
-- Package instance
Local_Suppress_Stack_Top => Local_Suppress_Stack_Top,
Version => Ada_Version,
Version_Pragma => Ada_Version_Pragma,
- Warnings => Save_Warnings)),
+ Warnings => Save_Warnings,
+ SPARK_Mode => SPARK_Mode,
+ SPARK_Mode_Pragma => SPARK_Mode_Pragma)),
Body_Optional => Body_Optional);
end;
end if;
(Gen_Unit : Entity_Id;
Act_Unit : Entity_Id)
is
- Assertion_Status : constant Boolean := Assertions_Enabled;
+ Assertion_Status : constant Boolean := Assertions_Enabled;
+ Save_SPARK_Mode : constant SPARK_Mode_Type := SPARK_Mode;
+ Save_SPARK_Mode_Pragma : constant Node_Id := SPARK_Mode_Pragma;
begin
-- Regardless of the current mode, predefined units are analyzed in the
if Ada_Version >= Ada_2012 then
Assertions_Enabled := Assertion_Status;
end if;
+
+ -- SPARK_Mode for an instance is the one applicable at the point of
+ -- instantiation.
+
+ SPARK_Mode := Save_SPARK_Mode;
+ SPARK_Mode_Pragma := Save_SPARK_Mode_Pragma;
end if;
Current_Instantiated_Parent :=