[FIR] FirScriptConfiguratorExtensionImpl: provide source for script parameters
We need this source to be able to find the parent declaration ^KT-62693 Fixed
This commit is contained in:
committed by
Space Team
parent
17ab005668
commit
0b45c6ce23
+3
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -21,7 +21,6 @@ import org.jetbrains.kotlin.analysis.low.level.api.fir.sessions.llFirSession
|
|||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.getContainingFile
|
||||||
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.originalDeclaration
|
import org.jetbrains.kotlin.analysis.low.level.api.fir.util.originalDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
import org.jetbrains.kotlin.analysis.project.structure.KtModule
|
||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
|
||||||
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
|
import org.jetbrains.kotlin.analysis.utils.printer.parentOfType
|
||||||
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
import org.jetbrains.kotlin.fir.FirElementWithResolveState
|
||||||
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
|
import org.jetbrains.kotlin.fir.analysis.checkers.getContainingClassSymbol
|
||||||
@@ -32,6 +31,7 @@ import org.jetbrains.kotlin.fir.resolve.providers.firProvider
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirErrorPropertySymbol
|
||||||
import org.jetbrains.kotlin.psi
|
import org.jetbrains.kotlin.psi
|
||||||
import org.jetbrains.kotlin.psi.*
|
import org.jetbrains.kotlin.psi.*
|
||||||
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
|
|
||||||
internal class KtFirSymbolContainingDeclarationProvider(
|
internal class KtFirSymbolContainingDeclarationProvider(
|
||||||
override val analysisSession: KtFirAnalysisSession,
|
override val analysisSession: KtFirAnalysisSession,
|
||||||
@@ -104,6 +104,7 @@ internal class KtFirSymbolContainingDeclarationProvider(
|
|||||||
KtFakeSourceElementKind.ImplicitConstructor -> return source.psi as KtDeclaration
|
KtFakeSourceElementKind.ImplicitConstructor -> return source.psi as KtDeclaration
|
||||||
KtFakeSourceElementKind.PropertyFromParameter -> return source.psi?.parentOfType<KtPrimaryConstructor>()!!
|
KtFakeSourceElementKind.PropertyFromParameter -> return source.psi?.parentOfType<KtPrimaryConstructor>()!!
|
||||||
KtFakeSourceElementKind.EnumInitializer -> return source.psi as KtEnumEntry
|
KtFakeSourceElementKind.EnumInitializer -> return source.psi as KtEnumEntry
|
||||||
|
KtFakeSourceElementKind.ScriptParameter -> return source.psi as KtScript
|
||||||
KtRealSourceElementKind -> source.psi!!
|
KtRealSourceElementKind -> source.psi!!
|
||||||
else ->
|
else ->
|
||||||
errorWithAttachment("errorWithAttachment FirSourceElement: kind=${source.kind} element=${source.psi!!::class.simpleName}") {
|
errorWithAttachment("errorWithAttachment FirSourceElement: kind=${source.kind} element=${source.psi!!::class.simpleName}") {
|
||||||
|
|||||||
+10
-3
@@ -1,16 +1,19 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
package org.jetbrains.kotlin.analysis.api.fir.symbols
|
||||||
|
|
||||||
import com.intellij.psi.PsiElement
|
import com.intellij.psi.PsiElement
|
||||||
|
import org.jetbrains.kotlin.KtFakeSourceElementKind
|
||||||
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||||
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
import org.jetbrains.kotlin.analysis.api.annotations.KtAnnotationsList
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
|
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
import org.jetbrains.kotlin.analysis.api.fir.annotations.KtFirAnnotationListForDeclaration
|
||||||
import org.jetbrains.kotlin.analysis.api.fir.getAllowedPsi
|
import org.jetbrains.kotlin.analysis.api.fir.getAllowedPsi
|
||||||
|
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.KtFirScriptParameterSymbolPointer
|
||||||
|
import org.jetbrains.kotlin.analysis.api.fir.symbols.pointers.requireOwnerPointer
|
||||||
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
import org.jetbrains.kotlin.analysis.api.lifetime.withValidityAssertion
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol
|
import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol
|
||||||
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
import org.jetbrains.kotlin.analysis.api.symbols.markers.KtSymbolKind
|
||||||
@@ -26,7 +29,7 @@ import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirVariableSymbol
|
||||||
import org.jetbrains.kotlin.name.Name
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
internal abstract class KtFirLocalOrErrorVariableSymbol<E: FirVariable, S: FirVariableSymbol<E>>(
|
internal abstract class KtFirLocalOrErrorVariableSymbol<E : FirVariable, S : FirVariableSymbol<E>>(
|
||||||
override val firSymbol: S,
|
override val firSymbol: S,
|
||||||
override val analysisSession: KtFirAnalysisSession,
|
override val analysisSession: KtFirAnalysisSession,
|
||||||
) : KtLocalVariableSymbol(), KtFirSymbol<S> {
|
) : KtLocalVariableSymbol(), KtFirSymbol<S> {
|
||||||
@@ -45,12 +48,16 @@ internal abstract class KtFirLocalOrErrorVariableSymbol<E: FirVariable, S: FirVa
|
|||||||
context(KtAnalysisSession)
|
context(KtAnalysisSession)
|
||||||
override fun createPointer(): KtSymbolPointer<KtLocalVariableSymbol> = withValidityAssertion {
|
override fun createPointer(): KtSymbolPointer<KtLocalVariableSymbol> = withValidityAssertion {
|
||||||
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtLocalVariableSymbol>(this)?.let { return it }
|
KtPsiBasedSymbolPointer.createForSymbolFromSource<KtLocalVariableSymbol>(this)?.let { return it }
|
||||||
|
|
||||||
|
if (firSymbol.fir.source?.kind == KtFakeSourceElementKind.ScriptParameter) {
|
||||||
|
return KtFirScriptParameterSymbolPointer(name, requireOwnerPointer())
|
||||||
|
}
|
||||||
|
|
||||||
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(name.asString())
|
throw CanNotCreateSymbolPointerForLocalLibraryDeclarationException(name.asString())
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun equals(other: Any?): Boolean = symbolEquals(other)
|
override fun equals(other: Any?): Boolean = symbolEquals(other)
|
||||||
override fun hashCode(): Int = symbolHashCode()
|
override fun hashCode(): Int = symbolHashCode()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
internal class KtFirLocalVariableSymbol(firSymbol: FirPropertySymbol, analysisSession: KtFirAnalysisSession) :
|
internal class KtFirLocalVariableSymbol(firSymbol: FirPropertySymbol, analysisSession: KtFirAnalysisSession) :
|
||||||
|
|||||||
+37
@@ -0,0 +1,37 @@
|
|||||||
|
/*
|
||||||
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
|
*/
|
||||||
|
|
||||||
|
package org.jetbrains.kotlin.analysis.api.fir.symbols.pointers
|
||||||
|
|
||||||
|
import org.jetbrains.kotlin.analysis.api.KtAnalysisSession
|
||||||
|
import org.jetbrains.kotlin.analysis.api.fir.KtFirAnalysisSession
|
||||||
|
import org.jetbrains.kotlin.analysis.api.fir.utils.firSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtLocalVariableSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtScriptSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.KtSymbol
|
||||||
|
import org.jetbrains.kotlin.analysis.api.symbols.pointers.KtSymbolPointer
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirProperty
|
||||||
|
import org.jetbrains.kotlin.fir.declarations.FirScript
|
||||||
|
import org.jetbrains.kotlin.name.Name
|
||||||
|
|
||||||
|
internal class KtFirScriptParameterSymbolPointer(
|
||||||
|
private val parameterName: Name,
|
||||||
|
private val scriptPointer: KtSymbolPointer<KtScriptSymbol>,
|
||||||
|
) : KtSymbolPointer<KtLocalVariableSymbol>() {
|
||||||
|
@Deprecated("Consider using org.jetbrains.kotlin.analysis.api.KtAnalysisSession.restoreSymbol")
|
||||||
|
override fun restoreSymbol(analysisSession: KtAnalysisSession): KtLocalVariableSymbol? {
|
||||||
|
require(analysisSession is KtFirAnalysisSession)
|
||||||
|
val script = with(analysisSession) {
|
||||||
|
scriptPointer.restoreSymbol()?.firSymbol?.fir as? FirScript
|
||||||
|
} ?: return null
|
||||||
|
|
||||||
|
val parameter = script.parameters.find { it.name == parameterName } as? FirProperty ?: return null
|
||||||
|
return analysisSession.firSymbolBuilder.variableLikeBuilder.buildLocalVariableSymbol(parameter.symbol)
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun pointsToTheSameSymbolAs(other: KtSymbolPointer<KtSymbol>): Boolean = this === other ||
|
||||||
|
other is KtFirScriptParameterSymbolPointer &&
|
||||||
|
other.scriptPointer.pointsToTheSameSymbolAs(scriptPointer)
|
||||||
|
}
|
||||||
+6
@@ -46,6 +46,12 @@ public class FirIdeDependentAnalysisScriptSourceModuleReferenceResolveTestGenera
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("ScriptArgument.kts")
|
||||||
|
public void testScriptArgument() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/referenceResolve/ScriptArgument.kts");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("ScriptResult.kts")
|
@TestMetadata("ScriptResult.kts")
|
||||||
public void testScriptResult() throws Exception {
|
public void testScriptResult() throws Exception {
|
||||||
|
|||||||
+6
@@ -46,6 +46,12 @@ public class FirIdeNormalAnalysisScriptSourceModuleReferenceResolveTestGenerated
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/referenceResolve"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("ScriptArgument.kts")
|
||||||
|
public void testScriptArgument() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/referenceResolve/ScriptArgument.kts");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("ScriptResult.kts")
|
@TestMetadata("ScriptResult.kts")
|
||||||
public void testScriptResult() throws Exception {
|
public void testScriptResult() throws Exception {
|
||||||
|
|||||||
+6
@@ -46,6 +46,12 @@ public class FirIdeNormalAnalysisScriptSourceModuleSymbolByReferenceTestGenerate
|
|||||||
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByReference"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/analysis-api/testData/symbols/symbolByReference"), Pattern.compile("^(.+)\\.kts$"), null, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
@TestMetadata("scriptArgument.kts")
|
||||||
|
public void testScriptArgument() throws Exception {
|
||||||
|
runTest("analysis/analysis-api/testData/symbols/symbolByReference/scriptArgument.kts");
|
||||||
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@TestMetadata("scriptResult.kts")
|
@TestMetadata("scriptResult.kts")
|
||||||
public void testScriptResult() throws Exception {
|
public void testScriptResult() throws Exception {
|
||||||
|
|||||||
@@ -0,0 +1,3 @@
|
|||||||
|
fun foo() {
|
||||||
|
arg<caret>s
|
||||||
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
Resolved to:
|
||||||
|
0: (in <local>: <script-ScriptArgument.kts>) val args: kotlin.Array<kotlin.String>
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// DO_NOT_CHECK_NON_PSI_SYMBOL_RESTORE
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
ar<caret>gs
|
||||||
|
}
|
||||||
+1
@@ -0,0 +1 @@
|
|||||||
|
val args: kotlin.Array<kotlin.String>
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
KtLocalVariableSymbol:
|
||||||
|
annotationsList: []
|
||||||
|
callableIdIfNonLocal: null
|
||||||
|
contextReceivers: []
|
||||||
|
isExtension: false
|
||||||
|
isVal: true
|
||||||
|
name: args
|
||||||
|
origin: PLUGIN
|
||||||
|
receiverParameter: null
|
||||||
|
returnType: KtUsualClassType:
|
||||||
|
annotationsList: []
|
||||||
|
ownTypeArguments: [
|
||||||
|
KtUsualClassType:
|
||||||
|
annotationsList: []
|
||||||
|
ownTypeArguments: []
|
||||||
|
type: kotlin/String
|
||||||
|
]
|
||||||
|
type: kotlin/Array<kotlin/String>
|
||||||
|
symbolKind: LOCAL
|
||||||
|
typeParameters: []
|
||||||
|
getContainingModule: KtScriptModule "Script scriptArgument.kts"
|
||||||
|
deprecationStatus: null
|
||||||
@@ -6,77 +6,77 @@ FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
|||||||
|
|
||||||
|
|
||||||
IMPORTS:
|
IMPORTS:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
COMPILER_REQUIRED_ANNOTATIONS:
|
COMPILER_REQUIRED_ANNOTATIONS:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
COMPANION_GENERATION:
|
COMPANION_GENERATION:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
SUPER_TYPES:
|
SUPER_TYPES:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
TYPES:
|
TYPES:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
STATUS:
|
STATUS:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
EXPECT_ACTUAL_MATCHING:
|
EXPECT_ACTUAL_MATCHING:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
CONTRACTS:
|
CONTRACTS:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
IMPLICIT_TYPES_BODY_RESOLVE:
|
IMPLICIT_TYPES_BODY_RESOLVE:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
ANNOTATION_ARGUMENTS:
|
ANNOTATION_ARGUMENTS:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|
||||||
BODY_RESOLVE:
|
BODY_RESOLVE:
|
||||||
FILE: [ResolvedTo(RAW_FIR)] scriptArgument.kts
|
FILE: [ResolvedTo(IMPORTS)] scriptArgument.kts
|
||||||
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
context(<script>@kotlin.script.templates.standard.ScriptTemplateWithArgs)
|
||||||
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(RAW_FIR)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(RAW_FIR)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
@@ -87,3 +87,4 @@ FILE: [ResolvedTo(BODY_RESOLVE)] scriptArgument.kts
|
|||||||
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
context(<script>@R|kotlin/script/templates/standard/ScriptTemplateWithArgs|)
|
||||||
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-scriptArgument.kts>
|
SCRIPT: [ResolvedTo(BODY_RESOLVE)] <script-scriptArgument.kts>
|
||||||
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
|
[ResolvedTo(BODY_RESOLVE)] lval args: R|kotlin/Array<kotlin/String>|
|
||||||
|
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2021 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -285,6 +285,9 @@ sealed class KtFakeSourceElementKind(final override val shouldSkipErrorTypeRepor
|
|||||||
|
|
||||||
// Scripts get implicit imports from their configurations
|
// Scripts get implicit imports from their configurations
|
||||||
object ImplicitImport : KtFakeSourceElementKind()
|
object ImplicitImport : KtFakeSourceElementKind()
|
||||||
|
|
||||||
|
// For provided parameters inside a script
|
||||||
|
object ScriptParameter : KtFakeSourceElementKind()
|
||||||
}
|
}
|
||||||
|
|
||||||
sealed class AbstractKtSourceElement {
|
sealed class AbstractKtSourceElement {
|
||||||
|
|||||||
+3
-2
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
* Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
|
||||||
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
* Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -27,7 +27,6 @@ import org.jetbrains.kotlin.fir.symbols.SymbolInternals
|
|||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirPropertySymbol
|
||||||
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
|
||||||
import org.jetbrains.kotlin.fir.types.builder.buildUserTypeRef
|
import org.jetbrains.kotlin.fir.types.builder.buildUserTypeRef
|
||||||
import org.jetbrains.kotlin.fir.types.coneTypeOrNull
|
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource
|
import org.jetbrains.kotlin.fir.types.impl.FirImplicitTypeRefImplWithoutSource
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirQualifierPartImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirQualifierPartImpl
|
||||||
import org.jetbrains.kotlin.fir.types.impl.FirTypeArgumentListImpl
|
import org.jetbrains.kotlin.fir.types.impl.FirTypeArgumentListImpl
|
||||||
@@ -97,6 +96,7 @@ class FirScriptConfiguratorExtensionImpl(
|
|||||||
parameters.add(
|
parameters.add(
|
||||||
buildProperty {
|
buildProperty {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
|
source = this@configure.source?.fakeElement(KtFakeSourceElementKind.ScriptParameter)
|
||||||
origin = FirDeclarationOrigin.ScriptCustomization.Default
|
origin = FirDeclarationOrigin.ScriptCustomization.Default
|
||||||
// TODO: copy type parameters?
|
// TODO: copy type parameters?
|
||||||
returnTypeRef = baseCtorParameter.returnTypeRef
|
returnTypeRef = baseCtorParameter.returnTypeRef
|
||||||
@@ -125,6 +125,7 @@ class FirScriptConfiguratorExtensionImpl(
|
|||||||
parameters.add(
|
parameters.add(
|
||||||
buildProperty {
|
buildProperty {
|
||||||
moduleData = session.moduleData
|
moduleData = session.moduleData
|
||||||
|
source = this@configure.source?.fakeElement(KtFakeSourceElementKind.ScriptParameter)
|
||||||
origin = FirDeclarationOrigin.ScriptCustomization.Default
|
origin = FirDeclarationOrigin.ScriptCustomization.Default
|
||||||
returnTypeRef = typeRef
|
returnTypeRef = typeRef
|
||||||
name = Name.identifier(propertyName)
|
name = Name.identifier(propertyName)
|
||||||
|
|||||||
Reference in New Issue
Block a user