@@ -190,9 +190,6 @@ package body LSP.Ada_Contexts is
190190 return ; -- Name resolution fails, nothing to do.
191191 end if ;
192192
193- First_Part := Laltools.Common.Find_Canonical_Part
194- (Definition, Self.Trace);
195-
196193 -- Display the method ancestry in three cases:
197194 --
198195 -- . When the preference is set to Always
@@ -209,6 +206,9 @@ package body LSP.Ada_Contexts is
209206 or else (Display_Method_Ancestry_Policy = Definition_Only
210207 and then On_Defining_Name)
211208 then
209+ First_Part := Laltools.Common.Find_Canonical_Part
210+ (Definition, Self.Trace);
211+
212212 if First_Part = Libadalang.Analysis.No_Defining_Name then
213213 Decl_For_Find_Overrides := Definition.P_Basic_Decl;
214214 else
@@ -232,28 +232,30 @@ package body LSP.Ada_Contexts is
232232 LSP.Lal_Utils.Append_Location (Result, Definition);
233233 end if ;
234234
235- declare
236- Imprecise_Over : Boolean;
237- Imprecise_Base : Boolean;
238- Overriding_Subps : constant Basic_Decl_Array :=
239- Self.Find_All_Overrides
240- (Decl_For_Find_Overrides,
241- Imprecise_Results => Imprecise_Over);
242- Base_Subps : constant Basic_Decl_Array :=
243- Self.Find_All_Base_Declarations
244- (Decl_For_Find_Overrides,
245- Imprecise_Results => Imprecise_Base);
246- begin
247- for Subp of Base_Subps loop
248- Append_Location
249- (Result, Subp.P_Defining_Name, LSP.Common.Is_Parent);
250- end loop ;
251- for Subp of Overriding_Subps loop
252- Append_Location
253- (Result, Subp.P_Defining_Name, LSP.Common.Is_Child);
254- end loop ;
255- Imprecise := Imprecise or Imprecise_Over or Imprecise_Base;
256- end ;
235+ if not Decl_For_Find_Overrides.Is_Null then
236+ declare
237+ Imprecise_Over : Boolean;
238+ Imprecise_Base : Boolean;
239+ Overriding_Subps : constant Basic_Decl_Array :=
240+ Self.Find_All_Overrides
241+ (Decl_For_Find_Overrides,
242+ Imprecise_Results => Imprecise_Over);
243+ Base_Subps : constant Basic_Decl_Array :=
244+ Self.Find_All_Base_Declarations
245+ (Decl_For_Find_Overrides,
246+ Imprecise_Results => Imprecise_Base);
247+ begin
248+ for Subp of Base_Subps loop
249+ Append_Location
250+ (Result, Subp.P_Defining_Name, LSP.Common.Is_Parent);
251+ end loop ;
252+ for Subp of Overriding_Subps loop
253+ Append_Location
254+ (Result, Subp.P_Defining_Name, LSP.Common.Is_Child);
255+ end loop ;
256+ Imprecise := Imprecise or Imprecise_Over or Imprecise_Base;
257+ end ;
258+ end if ;
257259 end Append_Declarations ;
258260
259261 -- ----------
0 commit comments