[multiple changes]
2014-05-21 Robert Dewar <dewar@adacore.com> * sem_elab.adb, prj-dect.adb: Minor reformatting. 2014-05-21 Robert Dewar <dewar@adacore.com> * erroutc.ads: Minor comment addition. 2014-05-21 Robert Dewar <dewar@adacore.com> * errout.ads: Add documentation for use of >*> tag. * restrict.adb: Make sure we use >*> tag for restriction warnings. 2014-05-21 Gary Dismukes <dismukes@adacore.com> * debug.adb: Add case of illegal overriding_indicator for a protected subprogram body to description of -gnatd.E switch. * sem_ch6.adb (Verify_Overriding_Indicator): Issue error message for cases of giving overriding_indicators on protected subprogram bodies, but change this to a warning if -gnatd.E is enabled. No longer give a style warning about missing indicators on protected subprogram bodies. From-SVN: r210704
This commit is contained in:
parent
b7b92f15d3
commit
23e28b4217
8 changed files with 77 additions and 19 deletions
|
@ -1,3 +1,26 @@
|
|||
2014-05-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* sem_elab.adb, prj-dect.adb: Minor reformatting.
|
||||
|
||||
2014-05-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* erroutc.ads: Minor comment addition.
|
||||
|
||||
2014-05-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* errout.ads: Add documentation for use of >*> tag.
|
||||
* restrict.adb: Make sure we use >*> tag for restriction warnings.
|
||||
|
||||
2014-05-21 Gary Dismukes <dismukes@adacore.com>
|
||||
|
||||
* debug.adb: Add case of illegal overriding_indicator for a
|
||||
protected subprogram body to description of -gnatd.E switch.
|
||||
* sem_ch6.adb (Verify_Overriding_Indicator): Issue error message
|
||||
for cases of giving overriding_indicators on protected subprogram
|
||||
bodies, but change this to a warning if -gnatd.E is enabled. No
|
||||
longer give a style warning about missing indicators on protected
|
||||
subprogram bodies.
|
||||
|
||||
2014-05-21 Robert Dewar <dewar@adacore.com>
|
||||
|
||||
* prj.ads, sem_ch12.adb, prj.adb, exp_pakd.adb,
|
||||
|
|
|
@ -614,6 +614,11 @@ package body Debug is
|
|||
--
|
||||
-- Errors relating to the new rules about not defining equality
|
||||
-- too late so that composition of equality can be assured.
|
||||
--
|
||||
-- Errors relating to overriding indicators on protected subprogram
|
||||
-- bodies (not an Ada 2012 incompatibility, but might cause errors
|
||||
-- for existing programs assuming they were legal because GNAT
|
||||
-- formerly allowed them).
|
||||
|
||||
-- d.F Sets GNATprove_Mode to True. This allows debugging the frontend in
|
||||
-- the special mode used by GNATprove.
|
||||
|
|
|
@ -312,10 +312,10 @@ package Errout is
|
|||
-- Insertion character < (Less Than: conditional warning message)
|
||||
-- The character < appearing anywhere in a message is used for a
|
||||
-- conditional error message. If Error_Msg_Warn is True, then the
|
||||
-- effect is the same as ? described above, and in particular << and
|
||||
-- <X< have the effect of ?? and ?X? respectively. If Error_Msg_Warn
|
||||
-- is False, then the < << or <X< sequence is ignored and the message
|
||||
-- is treated as a error rather than a warning.
|
||||
-- effect is the same as ? described above, and in particular <<
|
||||
-- <X< and <*< have the effect of ?? ?X? and ?*? respectively. If
|
||||
-- Error_Msg_Warn is False, then the < << or <X< sequence is ignored
|
||||
-- and the message is treated as a error rather than a warning.
|
||||
|
||||
-- Insertion character A-Z (Upper case letter: Ada reserved word)
|
||||
-- If two or more upper case letters appear in the message, they are
|
||||
|
|
|
@ -564,6 +564,10 @@ package Erroutc is
|
|||
-- the corresponding warning string is returned (or the null string if no
|
||||
-- Warning argument was present in the pragma). Tag is the error message
|
||||
-- tag for the message in question or the null string if there is no tag.
|
||||
--
|
||||
-- Note: we have a null default for Tag to deal with calls from an old
|
||||
-- branch of gnat2why, which does not know about tags in the calls but
|
||||
-- which uses the latest version of erroutc.
|
||||
|
||||
function Warning_Treated_As_Error (Msg : String) return Boolean;
|
||||
-- Returns True if the warning message Msg matches any of the strings
|
||||
|
|
|
@ -215,10 +215,9 @@ package body Prj.Dect is
|
|||
Name : constant Name_Id := Name_Of (Current_Package, In_Tree);
|
||||
begin
|
||||
if (Qualif = Aggregate and then Name /= Snames.Name_Builder)
|
||||
or else
|
||||
(Qualif = Aggregate_Library
|
||||
and then Name /= Snames.Name_Builder
|
||||
and then Name /= Snames.Name_Install)
|
||||
or else (Qualif = Aggregate_Library
|
||||
and then Name /= Snames.Name_Builder
|
||||
and then Name /= Snames.Name_Install)
|
||||
then
|
||||
Error_Msg_Name_1 := Name;
|
||||
Error_Msg
|
||||
|
|
|
@ -303,7 +303,7 @@ package body Restrict is
|
|||
Error_Msg_Node_1 := N;
|
||||
Error_Msg_Warn := No_Use_Of_Attribute_Warning (A_Id);
|
||||
Error_Msg_N
|
||||
("<violation of restriction `No_Use_Of_Attribute '='> &`#", N);
|
||||
("<*<violation of restriction `No_Use_Of_Attribute '='> &`#", N);
|
||||
end if;
|
||||
end Check_Restriction_No_Use_Of_Attribute;
|
||||
|
||||
|
@ -336,7 +336,7 @@ package body Restrict is
|
|||
Error_Msg_Node_1 := Id;
|
||||
Error_Msg_Warn := No_Use_Of_Pragma_Warning (P_Id);
|
||||
Error_Msg_N
|
||||
("<violation of restriction `No_Use_Of_Pragma '='> &`#", Id);
|
||||
("<*<violation of restriction `No_Use_Of_Pragma '='> &`#", Id);
|
||||
end if;
|
||||
end Check_Restriction_No_Use_Of_Pragma;
|
||||
|
||||
|
@ -645,7 +645,7 @@ package body Restrict is
|
|||
|
||||
if No_Dependences.Table (J).Warn then
|
||||
Error_Msg
|
||||
("??violation of restriction `No_Dependence '='> &`#",
|
||||
("?*?violation of restriction `No_Dependence '='> &`#",
|
||||
Sloc (Err));
|
||||
else
|
||||
Error_Msg
|
||||
|
@ -691,7 +691,7 @@ package body Restrict is
|
|||
Error_Msg_Node_1 := Id;
|
||||
Error_Msg_Warn := No_Specification_Of_Aspect_Warning (A_Id);
|
||||
Error_Msg_N
|
||||
("<violation of restriction `No_Specification_Of_Aspect '='> &`#",
|
||||
("<*<violation of restriction `No_Specification_Of_Aspect '='> &`#",
|
||||
Id);
|
||||
end if;
|
||||
end Check_Restriction_No_Specification_Of_Aspect;
|
||||
|
|
|
@ -2782,6 +2782,16 @@ package body Sem_Ch6 is
|
|||
elsif not Present (Overridden_Operation (Spec_Id)) then
|
||||
Error_Msg_NE
|
||||
("subprogram& is not overriding", Body_Spec, Spec_Id);
|
||||
|
||||
-- Overriding indicators aren't allowed for protected subprogram
|
||||
-- bodies (see the Confirmation in Ada Comment AC95-00213). Change
|
||||
-- this to a warning if -gnatd.E is enabled.
|
||||
|
||||
elsif Ekind (Scope (Spec_Id)) = E_Protected_Type then
|
||||
Error_Msg_Warn := Error_To_Warning;
|
||||
Error_Msg_N
|
||||
("<overriding indicator not allowed for protected "
|
||||
& "subprogram body", Body_Spec);
|
||||
end if;
|
||||
|
||||
elsif Must_Not_Override (Body_Spec) then
|
||||
|
@ -2797,20 +2807,37 @@ package body Sem_Ch6 is
|
|||
("subprogram & overrides predefined operator ",
|
||||
Body_Spec, Spec_Id);
|
||||
|
||||
-- If this is not a primitive operation or protected subprogram,
|
||||
-- then the overriding indicator is altogether illegal.
|
||||
-- Overriding indicators aren't allowed for protected subprogram
|
||||
-- bodies (see the Confirmation in Ada Comment AC95-00213). Change
|
||||
-- this to a warning if -gnatd.E is enabled.
|
||||
|
||||
elsif not Is_Primitive (Spec_Id)
|
||||
and then Ekind (Scope (Spec_Id)) /= E_Protected_Type
|
||||
then
|
||||
elsif Ekind (Scope (Spec_Id)) = E_Protected_Type then
|
||||
Error_Msg_Warn := Error_To_Warning;
|
||||
|
||||
Error_Msg_N
|
||||
("<overriding indicator not allowed " &
|
||||
"for protected subprogram body",
|
||||
Body_Spec);
|
||||
|
||||
-- If this is not a primitive operation, then the overriding
|
||||
-- indicator is altogether illegal.
|
||||
|
||||
elsif not Is_Primitive (Spec_Id) then
|
||||
Error_Msg_N
|
||||
("overriding indicator only allowed " &
|
||||
"if subprogram is primitive",
|
||||
Body_Spec);
|
||||
end if;
|
||||
|
||||
-- If checking the style rule and the operation overrides, then
|
||||
-- issue a warning about a missing overriding_indicator. Protected
|
||||
-- subprogram bodies are excluded from this style checking, since
|
||||
-- they aren't primitives (even though their declarations can
|
||||
-- override) and aren't allowed to have an overriding_indicator.
|
||||
|
||||
elsif Style_Check
|
||||
and then Present (Overridden_Operation (Spec_Id))
|
||||
and then Ekind (Scope (Spec_Id)) /= E_Protected_Type
|
||||
then
|
||||
pragma Assert (Unit_Declaration_Node (Body_Id) = N);
|
||||
Style.Missing_Overriding (N, Body_Id);
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
-- --
|
||||
-- B o d y --
|
||||
-- --
|
||||
-- Copyright (C) 1997-2013, Free Software Foundation, Inc. --
|
||||
-- Copyright (C) 1997-2014, Free Software Foundation, Inc. --
|
||||
-- --
|
||||
-- GNAT is free software; you can redistribute it and/or modify it under --
|
||||
-- terms of the GNU General Public License as published by the Free Soft- --
|
||||
|
@ -2503,7 +2503,7 @@ package body Sem_Elab is
|
|||
Collect_Tasks (Declarations (N));
|
||||
end if;
|
||||
|
||||
-- We only perform detailed checks in all tasks are library level
|
||||
-- We only perform detailed checks in all tasks that are library level
|
||||
-- entities. If the master is a subprogram or task, activation will
|
||||
-- depend on the activation of the master itself.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue