ResolveElementCache: script can now be analyzable parent
So #KT-20096 Fixed
This commit is contained in:
@@ -713,7 +713,7 @@ fun main(args: Array<String>) {
|
||||
}
|
||||
|
||||
testClass<AbstractIntentionTest> {
|
||||
model("intentions", pattern = "^([\\w\\-_]+)\\.kt$")
|
||||
model("intentions", pattern = "^([\\w\\-_]+)\\.(kt|kts)$")
|
||||
}
|
||||
|
||||
testClass<AbstractIntentionTest2> {
|
||||
|
||||
@@ -238,7 +238,8 @@ class ResolveElementCache(
|
||||
KtTypeConstraint::class.java,
|
||||
KtPackageDirective::class.java,
|
||||
KtCodeFragment::class.java,
|
||||
KtTypeAlias::class.java) as KtElement?
|
||||
KtTypeAlias::class.java
|
||||
) as KtElement?
|
||||
|
||||
when (elementOfAdditionalResolve) {
|
||||
null -> {
|
||||
@@ -251,7 +252,8 @@ class ResolveElementCache(
|
||||
return element
|
||||
}
|
||||
|
||||
return null
|
||||
// Case of pure script element, like val (x, y) = ... on top of the script
|
||||
return element.getParentOfType<KtScript>(strict = false)
|
||||
}
|
||||
|
||||
is KtPackageDirective -> return element
|
||||
@@ -334,6 +336,8 @@ class ResolveElementCache(
|
||||
|
||||
is KtCodeFragment -> codeFragmentAdditionalResolve(resolveElement, bodyResolveMode)
|
||||
|
||||
is KtScript -> scriptAdditionalResolve(resolveSession, resolveElement, bodyResolveMode.bindingTraceFilter)
|
||||
|
||||
else -> {
|
||||
if (resolveElement.getParentOfType<KtPackageDirective>(true) != null) {
|
||||
packageRefAdditionalResolve(resolveSession, resolveElement, bodyResolveMode.bindingTraceFilter)
|
||||
@@ -487,6 +491,15 @@ class ResolveElementCache(
|
||||
return trace
|
||||
}
|
||||
|
||||
private fun scriptAdditionalResolve(resolveSession: ResolveSession, script: KtScript,
|
||||
bindingTraceFilter: BindingTraceFilter): BindingTrace {
|
||||
val trace = createDelegatingTrace(script, bindingTraceFilter)
|
||||
val scriptDescriptor = resolveSession.resolveToDescriptor(script) as ScriptDescriptor
|
||||
ForceResolveUtil.forceResolveAllContents(scriptDescriptor)
|
||||
forceResolveAnnotationsInside(script)
|
||||
return trace
|
||||
}
|
||||
|
||||
private fun functionAdditionalResolve(resolveSession: ResolveSession, namedFunction: KtNamedFunction, file: KtFile,
|
||||
statementFilter: StatementFilter,
|
||||
bindingTraceFilter: BindingTraceFilter): BindingTrace {
|
||||
|
||||
Vendored
+10
@@ -0,0 +1,10 @@
|
||||
// IS_APPLICABLE: false
|
||||
// WITH_RUNTIME
|
||||
// SKIP_ERRORS_BEFORE
|
||||
// SKIP_ERRORS_AFTER
|
||||
|
||||
val (x, y) = run <caret>{
|
||||
|
||||
}
|
||||
|
||||
fun run(f: () -> Unit) = f()
|
||||
+10
@@ -0,0 +1,10 @@
|
||||
// IS_APPLICABLE: false
|
||||
// WITH_RUNTIME
|
||||
// SKIP_ERRORS_BEFORE
|
||||
// SKIP_ERRORS_AFTER
|
||||
|
||||
run <caret>{
|
||||
|
||||
}
|
||||
|
||||
fun run(f: () -> Unit) = f()
|
||||
@@ -186,7 +186,7 @@ abstract class AbstractIntentionTest : KotlinLightCodeInsightFixtureTestCase() {
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val EXTENSIONS = arrayOf(".kt", ".java", ".groovy")
|
||||
private val EXTENSIONS = arrayOf(".kt", ".kts", ".java", ".groovy")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user