aboutsummaryrefslogtreecommitdiff
path: root/gcc/ada
diff options
context:
space:
mode:
authorArnaud Charlet <charlet@adacore.com>2020-09-08 16:09:16 -0400
committerPierre-Marie de Rodat <derodat@adacore.com>2020-10-26 04:58:56 -0400
commit1ab538527f9a67d2af427d1d65015611f4c46a6d (patch)
tree05627e5c21ec5bd764fe0ebf8b8320f0f584793f /gcc/ada
parent8cb66f960911050e557629447a0cacfab5fc68b1 (diff)
downloadgcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.zip
gcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.tar.gz
gcc-1ab538527f9a67d2af427d1d65015611f4c46a6d.tar.bz2
[Ada] Improve error on missing with clause
gcc/ada/ * sem_ch8.adb (Find_Direct_Name.Undefined): Handle known unit names with 3 selectors.
Diffstat (limited to 'gcc/ada')
-rw-r--r--gcc/ada/sem_ch8.adb22
1 files changed, 19 insertions, 3 deletions
diff --git a/gcc/ada/sem_ch8.adb b/gcc/ada/sem_ch8.adb
index 35c6f60..69430a6 100644
--- a/gcc/ada/sem_ch8.adb
+++ b/gcc/ada/sem_ch8.adb
@@ -5551,9 +5551,25 @@ package body Sem_Ch8 is
and then N = Prefix (Parent (N))
and then Is_Known_Unit (Parent (N))
then
- Error_Msg_Node_2 := Selector_Name (Parent (N));
- Error_Msg_N -- CODEFIX
- ("\\missing `WITH &.&;`", Prefix (Parent (N)));
+ declare
+ P : Node_Id := Parent (N);
+ begin
+ Error_Msg_Name_1 := Chars (N);
+ Error_Msg_Name_2 := Chars (Selector_Name (P));
+
+ if Nkind (Parent (P)) = N_Selected_Component
+ and then Is_Known_Unit (Parent (P))
+ then
+ P := Parent (P);
+ Error_Msg_Name_3 := Chars (Selector_Name (P));
+ Error_Msg_N -- CODEFIX
+ ("\\missing `WITH %.%.%;`", N);
+
+ else
+ Error_Msg_N -- CODEFIX
+ ("\\missing `WITH %.%;`", N);
+ end if;
+ end;
end if;
-- Now check for possible misspellings