@@ -186,7 +186,7 @@ private fun elementCompletions(file: CompiledFile, cursor: Int, surroundingEleme
186
186
// .?
187
187
is KtQualifiedExpression -> {
188
188
LOG .info(" Completing member expression '{}'" , surroundingElement.text)
189
- completeMembers(file, cursor, surroundingElement.receiverExpression)
189
+ completeMembers(file, cursor, surroundingElement.receiverExpression, surroundingElement is KtSafeQualifiedExpression )
190
190
}
191
191
is KtCallableReferenceExpression -> {
192
192
// something::?
@@ -214,13 +214,14 @@ private fun elementCompletions(file: CompiledFile, cursor: Int, surroundingEleme
214
214
}
215
215
}
216
216
217
- private fun completeMembers (file : CompiledFile , cursor : Int , receiverExpr : KtExpression ): Sequence <DeclarationDescriptor > {
217
+ private fun completeMembers (file : CompiledFile , cursor : Int , receiverExpr : KtExpression , unwrapNullable : Boolean = false ): Sequence <DeclarationDescriptor > {
218
218
// thingWithType.?
219
219
val lexicalScope = file.scopeAtPoint(cursor)
220
220
var descriptors = emptySequence<DeclarationDescriptor >()
221
221
if (lexicalScope != null ) {
222
- val receiverType = file.typeOfExpression(receiverExpr, lexicalScope)
223
- if (receiverType != null ) {
222
+ val expressionType = file.typeOfExpression(receiverExpr, lexicalScope)
223
+ if (expressionType != null ) {
224
+ val receiverType = if (unwrapNullable) TypeUtils .makeNotNullable(expressionType) else expressionType
224
225
LOG .debug(" Completing members of instance '{}'" , receiverType)
225
226
val members = receiverType.memberScope.getContributedDescriptors().asSequence()
226
227
val extensions = extensionFunctions(lexicalScope).filter { isExtensionFor(receiverType, it) }
0 commit comments