Skip to content

Commit ae0c325

Browse files
committed
Weekly backport from metals (#19787)
scalameta/metals#6074 scalameta/metals#6129 [Cherry-picked 4742d7d][modified]
1 parent acf286f commit ae0c325

File tree

6 files changed

+369
-204
lines changed

6 files changed

+369
-204
lines changed

presentation-compiler/src/main/dotty/tools/pc/completions/Completions.scala

+17-11
Original file line numberDiff line numberDiff line change
@@ -499,14 +499,18 @@ class Completions(
499499
val query = completionPos.query
500500
if completionMode.is(Mode.Scope) && query.nonEmpty then
501501
val visitor = new CompilerSearchVisitor(sym =>
502-
indexedContext.lookupSym(sym) match
503-
case IndexedContext.Result.InScope => false
504-
case _ =>
505-
completionsWithSuffix(
506-
sym,
507-
sym.decodedName,
508-
CompletionValue.Workspace(_, _, _, sym)
509-
).map(visit).forall(_ == true),
502+
if !(sym.is(Flags.ExtensionMethod) ||
503+
(sym.maybeOwner.is(Flags.Implicit) && sym.maybeOwner.isClass))
504+
then
505+
indexedContext.lookupSym(sym) match
506+
case IndexedContext.Result.InScope => false
507+
case _ =>
508+
completionsWithSuffix(
509+
sym,
510+
sym.decodedName,
511+
CompletionValue.Workspace(_, _, _, sym)
512+
).map(visit).forall(_ == true)
513+
else false,
510514
)
511515
Some(search.search(query, buildTargetIdentifier, visitor).nn)
512516
else if completionMode.is(Mode.Member) then
@@ -528,16 +532,18 @@ class Completions(
528532
)
529533
end isImplicitClass
530534

531-
def isImplicitClassMethod = sym.is(Flags.Method) && !sym.isConstructor &&
532-
isImplicitClass(sym.maybeOwner)
535+
def isDefaultVariableSetter = sym.is(Flags.Accessor) && sym.is(Flags.Method)
536+
def isImplicitClassMember =
537+
isImplicitClass(sym.maybeOwner) && !sym.is(Flags.Synthetic) && sym.isPublic
538+
&& !sym.isConstructor && !isDefaultVariableSetter
533539

534540
if isExtensionMethod then
535541
completionsWithSuffix(
536542
sym,
537543
sym.decodedName,
538544
CompletionValue.Extension(_, _, _)
539545
).map(visit).forall(_ == true)
540-
else if isImplicitClassMethod then
546+
else if isImplicitClassMember then
541547
completionsWithSuffix(
542548
sym,
543549
sym.decodedName,

0 commit comments

Comments
 (0)