KT-12077 Code completion inserts FQN for annotations with use-site target inside primary constructor
KT-13009 Kotlin: annotation auto-import is broken in multiple ways #KT-12077 Fixed #KT-13009 Fixed
This commit is contained in:
@@ -236,9 +236,9 @@ class ResolveElementCache(
|
||||
element,
|
||||
KtNamedFunction::class.java,
|
||||
KtAnonymousInitializer::class.java,
|
||||
KtPrimaryConstructor::class.java,
|
||||
KtSecondaryConstructor::class.java,
|
||||
KtProperty::class.java,
|
||||
KtParameter::class.java,
|
||||
KtSuperTypeList::class.java,
|
||||
KtInitializerList::class.java,
|
||||
KtImportList::class.java,
|
||||
@@ -265,15 +265,6 @@ class ResolveElementCache(
|
||||
|
||||
is KtPackageDirective -> return element
|
||||
|
||||
is KtParameter -> {
|
||||
val klass = elementOfAdditionalResolve.getParentOfType<KtClass>(strict = true)
|
||||
if (klass != null && elementOfAdditionalResolve.getParent() == klass.getPrimaryConstructorParameterList()) {
|
||||
return klass
|
||||
}
|
||||
|
||||
return elementOfAdditionalResolve
|
||||
}
|
||||
|
||||
is KtDeclaration -> {
|
||||
if (element is KtParameter && !KtPsiUtil.isLocal(element)) {
|
||||
return null
|
||||
@@ -316,6 +307,8 @@ class ResolveElementCache(
|
||||
|
||||
is KtAnonymousInitializer -> initializerAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter(), bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
is KtPrimaryConstructor -> constructorAdditionalResolve(resolveSession, resolveElement.parent as KtClass, file, bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
is KtSecondaryConstructor -> secondaryConstructorAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter(), bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
is KtProperty -> propertyAdditionalResolve(resolveSession, resolveElement, file, createStatementFilter(), bodyResolveMode.bindingTraceFilter)
|
||||
@@ -342,8 +335,6 @@ class ResolveElementCache(
|
||||
|
||||
is KtAnnotationEntry -> annotationAdditionalResolve(resolveSession, resolveElement)
|
||||
|
||||
is KtClass -> constructorAdditionalResolve(resolveSession, resolveElement, file, bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
is KtTypeAlias -> typealiasAdditionalResolve(resolveSession, resolveElement, bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
is KtTypeParameter -> typeParameterAdditionalResolve(resolveSession, resolveElement)
|
||||
@@ -548,8 +539,13 @@ class ResolveElementCache(
|
||||
?: error("Can't get primary constructor for descriptor '$classDescriptor' " +
|
||||
"in from class '${klass.getElementTextWithContext()}'")
|
||||
|
||||
val bodyResolver = createBodyResolver(resolveSession, trace, file, StatementFilter.NONE)
|
||||
bodyResolver.resolveConstructorParameterDefaultValuesAndAnnotations(DataFlowInfo.EMPTY, trace, klass, constructorDescriptor, scope)
|
||||
val primaryConstructor = klass.getPrimaryConstructor()
|
||||
if (primaryConstructor != null) {
|
||||
val bodyResolver = createBodyResolver(resolveSession, trace, file, StatementFilter.NONE)
|
||||
bodyResolver.resolveConstructorParameterDefaultValues(DataFlowInfo.EMPTY, trace, primaryConstructor, constructorDescriptor, scope)
|
||||
|
||||
forceResolveAnnotationsInside(primaryConstructor)
|
||||
}
|
||||
|
||||
return trace
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user