2727import java .util .Optional ;
2828import java .util .Queue ;
2929import java .util .Set ;
30+ import java .util .concurrent .ConcurrentHashMap ;
3031import java .util .function .Predicate ;
3132import java .util .stream .Collectors ;
3233import java .util .stream .Stream ;
9495import org .eclipse .jdt .core .dom .MethodInvocation ;
9596import org .eclipse .jdt .core .dom .MethodRef ;
9697import org .eclipse .jdt .core .dom .Modifier ;
98+ import org .eclipse .jdt .core .dom .Modifier .ModifierKeyword ;
9799import org .eclipse .jdt .core .dom .ModuleDeclaration ;
98100import org .eclipse .jdt .core .dom .Name ;
99101import org .eclipse .jdt .core .dom .NormalAnnotation ;
126128import org .eclipse .jdt .core .dom .VariableDeclarationExpression ;
127129import org .eclipse .jdt .core .dom .VariableDeclarationFragment ;
128130import org .eclipse .jdt .core .dom .VariableDeclarationStatement ;
129- import org .eclipse .jdt .core .dom .Modifier .ModifierKeyword ;
130131import org .eclipse .jdt .core .formatter .DefaultCodeFormatterConstants ;
131132import org .eclipse .jdt .core .search .IJavaSearchConstants ;
132133import org .eclipse .jdt .core .search .SearchEngine ;
@@ -1452,6 +1453,7 @@ public void complete(org.eclipse.jdt.internal.compiler.env.ICompilationUnit sour
14521453 ? IJavaSearchConstants .ANNOTATION_TYPE
14531454 : IJavaSearchConstants .TYPE ;
14541455 if (!this .requestor .isIgnored (CompletionProposal .TYPE_REF )) {
1456+ final Set <String > alreadySuggestedFqn = ConcurrentHashMap .newKeySet ();
14551457 findTypes (completeAfter , typeMatchRule , null )
14561458 .filter (type -> filterTypeBasedOnAccess (type , currentPackage , currentTypeBinding ))
14571459 .filter (type -> {
@@ -1469,6 +1471,13 @@ public void complete(org.eclipse.jdt.internal.compiler.env.ICompilationUnit sour
14691471 .filter (type -> {
14701472 return filterBasedOnExtendsOrImplementsInfo (type , extendsOrImplementsInfo );
14711473 })
1474+ .filter (type -> {
1475+ if (alreadySuggestedFqn .contains (type .getFullyQualifiedName ())) {
1476+ return false ;
1477+ }
1478+ alreadySuggestedFqn .add (type .getFullyQualifiedName ());
1479+ return true ;
1480+ })
14721481 .map (this ::toProposal ).forEach (this .requestor ::accept );
14731482 }
14741483 }
0 commit comments