@@ -55,7 +55,9 @@ package body LSP.Ada_Completions.Parameters is
5555 (N : Libadalang.Analysis.Ada_Node'Class)
5656 return Libadalang.Analysis.Aggregate;
5757 function Get_Designators
58- (A : Libadalang.Analysis.Aggregate)
58+ (A : Libadalang.Analysis.Aggregate;
59+ Sloc : Langkit_Support.Slocs.Source_Location;
60+ Unnamed_Params : out Natural)
5961 return Laltools.Common.Node_Vectors.Vector;
6062 function Get_Spec_Aggregate_Designators
6163 (A : Libadalang.Analysis.Aggregate;
@@ -80,7 +82,9 @@ package body LSP.Ada_Completions.Parameters is
8082 (N : Libadalang.Analysis.Ada_Node'Class)
8183 return Libadalang.Analysis.Generic_Package_Instantiation;
8284 function Get_Designators
83- (G : Libadalang.Analysis.Generic_Package_Instantiation)
85+ (G : Libadalang.Analysis.Generic_Package_Instantiation;
86+ Sloc : Langkit_Support.Slocs.Source_Location;
87+ Unnamed_Params : out Natural)
8488 return Laltools.Common.Node_Vectors.Vector;
8589 function Get_Decl_Designators
8690 (G : Libadalang.Analysis.Generic_Package_Instantiation;
@@ -185,11 +189,16 @@ package body LSP.Ada_Completions.Parameters is
185189 -- -------------------
186190
187191 function Get_Designators
188- (A : Libadalang.Analysis.Aggregate)
192+ (A : Libadalang.Analysis.Aggregate;
193+ Sloc : Langkit_Support.Slocs.Source_Location;
194+ Unnamed_Params : out Natural)
189195 return Laltools.Common.Node_Vectors.Vector
190196 is
197+ pragma Unreferenced (Sloc);
191198 Res : Laltools.Common.Node_Vectors.Vector;
192199 begin
200+ Unnamed_Params := 0 ;
201+
193202 for Assoc of A.F_Assocs loop
194203 if Assoc.Kind in Ada_Aggregate_Assoc_Range then
195204 for Alt of Assoc.As_Aggregate_Assoc.F_Designators loop
@@ -501,16 +510,29 @@ package body LSP.Ada_Completions.Parameters is
501510 -- -------------------
502511
503512 function Get_Designators
504- (G : Libadalang.Analysis.Generic_Package_Instantiation)
513+ (G : Libadalang.Analysis.Generic_Package_Instantiation;
514+ Sloc : Langkit_Support.Slocs.Source_Location;
515+ Unnamed_Params : out Natural)
505516 return Laltools.Common.Node_Vectors.Vector
506517 is
518+ use Langkit_Support.Slocs;
507519 Designator : Libadalang.Analysis.Ada_Node;
508520 Res : Laltools.Common.Node_Vectors.Vector;
509521 begin
522+ Unnamed_Params := 0 ;
523+
510524 for Assoc of G.F_Params loop
511525 Designator := Assoc.As_Param_Assoc.F_Designator;
512526 if Designator /= No_Ada_Node then
513527 Res.Append (Designator);
528+ else
529+ if Res.Is_Empty
530+ -- Count only the unnamed params at the start
531+ and then Start_Sloc (Assoc.Sloc_Range) < Sloc
532+ -- Prevent adding false parameter because of LAL recovery
533+ then
534+ Unnamed_Params := Unnamed_Params + 1 ;
535+ end if ;
514536 end if ;
515537 end loop ;
516538
0 commit comments