aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada/lib-xref.adb
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@gcc.gnu.org>2014-01-22 18:04:57 +0100
committerArnaud Charlet <charlet@gcc.gnu.org>2014-01-22 18:04:57 +0100
commit3b8056a559e3501d93ddf987cb5b20d2c6f9f188 (patch)
treefb500cca254aaedb7e5fc375e0443cd50f454d3e /gcc/ada/lib-xref.adb
parentfba9ebfc51f21a9ba4848c721bb925078737b024 (diff)
downloadgcc-3b8056a559e3501d93ddf987cb5b20d2c6f9f188.zip
gcc-3b8056a559e3501d93ddf987cb5b20d2c6f9f188.tar.gz
gcc-3b8056a559e3501d93ddf987cb5b20d2c6f9f188.tar.bz2
[multiple changes]
2014-01-22 Ed Schonberg <schonberg@adacore.com> * sem_ch6.adb (Analyze_Subprogram_Body_Helper): A subprogram body generated for an expression function within a protected body needs a set of renaming declarations if the expression function comes from source. 2014-01-22 Ed Schonberg <schonberg@adacore.com> * lib-xref.adb (Get_Type_Reference): In semantics-only mode, list interface progenitor of a tagged concurrent type, for better source navigation. 2014-01-22 Robert Dewar <dewar@adacore.com> * lib.adb (In_Extended_Main_Code_Unit): Return False for Standard_Location. (In_Extended_Main_Source_Unit): Return False for Standard_Location. * lib.ads (In_Extended_Main_Code_Unit): Add documentation on treatment of Slocs No_Location and Standard_Location. * restrict.adb (Check_Restriction_No_Dependence): Explicitly check for entity with Standard_Location Sloc, rather than relying on Lib routines to do that. * sem_res.adb (Resolve_Call): Implement SPARK_05 restriction that a call cannot occur before a later occuring body within the same unit. From-SVN: r206931
Diffstat (limited to 'gcc/ada/lib-xref.adb')
-rw-r--r--gcc/ada/lib-xref.adb16
1 files changed, 16 insertions, 0 deletions
diff --git a/gcc/ada/lib-xref.adb b/gcc/ada/lib-xref.adb
index 14462ce..409e736 100644
--- a/gcc/ada/lib-xref.adb
+++ b/gcc/ada/lib-xref.adb
@@ -1309,6 +1309,22 @@ package body Lib.Xref is
Right := '>';
end if;
+ -- For a synchronized type that implements an interface, we
+ -- treat the first progenitor as the parent. This is only
+ -- needed when compiling a package declaration on its own,
+ -- if the body is present interfaces are handled properly.
+
+ elsif Is_Concurrent_Type (Tref)
+ and then Is_Tagged_Type (Tref)
+ and then not Expander_Active
+ then
+ if Left /= '(' then
+ Left := '<';
+ Right := '>';
+ end if;
+
+ Tref := Entity (First (Interface_List (Parent (Tref))));
+
-- If the completion of a private type is itself a derived
-- type, we need the parent of the full view.