Skip to content

Commit f157463

Browse files
author
Matthew McGarvey
committed
if receiver is a companion object, check the referenceTarget for more descriptors such as in the case of enums
1 parent ca38c12 commit f157463

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/main/kotlin/org/javacs/kt/completion/Completions.kt

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,13 +174,17 @@ private fun doCompletions(file: CompiledFile, cursor: Int, surroundingElement: K
174174
private fun completeMembers(file: CompiledFile, cursor: Int, receiverExpr: KtExpression): Sequence<DeclarationDescriptor> {
175175
// thingWithType.?
176176
val lexicalScope = file.scopeAtPoint(cursor)
177+
var descriptors = emptySequence<DeclarationDescriptor>()
177178
if (lexicalScope != null) {
178179
val receiverType = file.typeOfExpression(receiverExpr, lexicalScope)
179180
if (receiverType != null) {
180181
LOG.debug("Completing members of instance '{}'", receiverType)
181182
val members = receiverType.memberScope.getContributedDescriptors().asSequence()
182183
val extensions = extensionFunctions(lexicalScope).filter { isExtensionFor(receiverType, it) }
183-
return members + extensions
184+
descriptors = members + extensions
185+
if (!DescriptorUtils.isCompanionObject(TypeUtils.getClassDescriptor(receiverType))) {
186+
return descriptors
187+
}
184188
}
185189
}
186190
// JavaClass.?
@@ -189,7 +193,7 @@ private fun completeMembers(file: CompiledFile, cursor: Int, receiverExpr: KtExp
189193
LOG.debug("Completing static members of '{}'", referenceTarget.fqNameSafe)
190194
val statics = referenceTarget.staticScope.getContributedDescriptors().asSequence()
191195
val classes = referenceTarget.unsubstitutedInnerClassesScope.getContributedDescriptors().asSequence()
192-
return statics + classes
196+
return descriptors + statics + classes
193197
}
194198

195199
LOG.debug("Can't find member scope for {}", receiverExpr.text)

0 commit comments

Comments
 (0)