@@ -185,9 +185,6 @@ package body LSP.Ada_Contexts is
185185 return ; -- Name resolution fails, nothing to do.
186186 end if ;
187187
188- First_Part := Laltools.Common.Find_Canonical_Part
189- (Definition, Self.Trace);
190-
191188 -- Display the method ancestry in three cases:
192189 --
193190 -- . When the preference is set to Always
@@ -204,6 +201,9 @@ package body LSP.Ada_Contexts is
204201 or else (Display_Method_Ancestry_Policy = Definition_Only
205202 and then On_Defining_Name)
206203 then
204+ First_Part := Laltools.Common.Find_Canonical_Part
205+ (Definition, Self.Trace);
206+
207207 if First_Part = Libadalang.Analysis.No_Defining_Name then
208208 Decl_For_Find_Overrides := Definition.P_Basic_Decl;
209209 else
@@ -227,28 +227,30 @@ package body LSP.Ada_Contexts is
227227 LSP.Lal_Utils.Append_Location (Result, Definition);
228228 end if ;
229229
230- declare
231- Imprecise_Over : Boolean;
232- Imprecise_Base : Boolean;
233- Overriding_Subps : constant Basic_Decl_Array :=
234- Self.Find_All_Overrides
235- (Decl_For_Find_Overrides,
236- Imprecise_Results => Imprecise_Over);
237- Base_Subps : constant Basic_Decl_Array :=
238- Self.Find_All_Base_Declarations
239- (Decl_For_Find_Overrides,
240- Imprecise_Results => Imprecise_Base);
241- begin
242- for Subp of Base_Subps loop
243- Append_Location
244- (Result, Subp.P_Defining_Name, LSP.Common.Is_Parent);
245- end loop ;
246- for Subp of Overriding_Subps loop
247- Append_Location
248- (Result, Subp.P_Defining_Name, LSP.Common.Is_Child);
249- end loop ;
250- Imprecise := Imprecise or Imprecise_Over or Imprecise_Base;
251- end ;
230+ if not Decl_For_Find_Overrides.Is_Null then
231+ declare
232+ Imprecise_Over : Boolean;
233+ Imprecise_Base : Boolean;
234+ Overriding_Subps : constant Basic_Decl_Array :=
235+ Self.Find_All_Overrides
236+ (Decl_For_Find_Overrides,
237+ Imprecise_Results => Imprecise_Over);
238+ Base_Subps : constant Basic_Decl_Array :=
239+ Self.Find_All_Base_Declarations
240+ (Decl_For_Find_Overrides,
241+ Imprecise_Results => Imprecise_Base);
242+ begin
243+ for Subp of Base_Subps loop
244+ Append_Location
245+ (Result, Subp.P_Defining_Name, LSP.Common.Is_Parent);
246+ end loop ;
247+ for Subp of Overriding_Subps loop
248+ Append_Location
249+ (Result, Subp.P_Defining_Name, LSP.Common.Is_Child);
250+ end loop ;
251+ Imprecise := Imprecise or Imprecise_Over or Imprecise_Base;
252+ end ;
253+ end if ;
252254 end Append_Declarations ;
253255
254256 -- ----------
0 commit comments