K2 Scripting: mark parameters and DD containers with dedicated origins

needed for properly processing script CFG
This commit is contained in:
Ilya Chernikov
2023-11-22 16:39:03 +01:00
committed by Space Team
parent 8c30f3b2bc
commit b0f44e8f69
5 changed files with 12 additions and 5 deletions
@@ -87,12 +87,13 @@ internal fun generateTemporaryVariable(
name: Name,
initializer: FirExpression,
typeRef: FirTypeRef? = null,
origin: FirDeclarationOrigin = FirDeclarationOrigin.Source,
extractAnnotationsTo: (KtAnnotated.(FirAnnotationContainerBuilder) -> Unit),
): FirVariable =
buildProperty {
this.source = source
this.moduleData = moduleData
origin = FirDeclarationOrigin.Source
this.origin = origin
returnTypeRef = typeRef ?: FirImplicitTypeRefImplWithoutSource
this.name = name
this.initializer = initializer
@@ -108,6 +109,7 @@ internal fun generateTemporaryVariable(
source: KtSourceElement?,
specialName: String,
initializer: FirExpression,
origin: FirDeclarationOrigin = FirDeclarationOrigin.Source,
extractAnnotationsTo: (KtAnnotated.(FirAnnotationContainerBuilder) -> Unit),
): FirVariable =
generateTemporaryVariable(
@@ -115,7 +117,8 @@ internal fun generateTemporaryVariable(
source,
Name.special("<$specialName>"),
initializer,
null,
typeRef = null,
origin,
extractAnnotationsTo,
)
@@ -1294,6 +1294,7 @@ open class PsiRawFirBuilder(
declaration.toFirSourceElement(),
"destruct",
declaration.initializer.toFirExpression { ConeSyntaxDiagnostic("Initializer required for destructuring declaration") },
origin = FirDeclarationOrigin.Synthetic.ScriptTopLevelDestructuringDeclarationContainer,
extractAnnotationsTo = { extractAnnotationsTo(it) }
).apply {
isDestructuringDeclarationContainerVariable = true