[FIR] Fix destructuring declaration creation via light tree
This commit is contained in:
+1
@@ -123,6 +123,7 @@ fun generateDestructuringBlock(
|
||||
}
|
||||
this.isVar = isVar
|
||||
symbol = FirPropertySymbol(entry.name) // TODO?
|
||||
source = entry.source
|
||||
isLocal = true
|
||||
status = FirDeclarationStatusImpl(Visibilities.Local, Modality.FINAL)
|
||||
annotations += entry.annotations
|
||||
|
||||
+2
-1
@@ -1020,6 +1020,7 @@ class DeclarationsConverter(
|
||||
private fun convertDestructingDeclaration(destructingDeclaration: LighterASTNode): DestructuringDeclaration {
|
||||
var isVar = false
|
||||
val entries = mutableListOf<FirVariable<*>>()
|
||||
val source = destructingDeclaration.toFirSourceElement()
|
||||
var firExpression: FirExpression =
|
||||
buildErrorExpression(null, ConeSimpleDiagnostic("Destructuring declaration without initializer", DiagnosticKind.Syntax))
|
||||
destructingDeclaration.forEachChildren {
|
||||
@@ -1031,7 +1032,7 @@ class DeclarationsConverter(
|
||||
}
|
||||
}
|
||||
|
||||
return DestructuringDeclaration(isVar, entries, firExpression)
|
||||
return DestructuringDeclaration(isVar, entries, firExpression, source)
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
+4
-2
@@ -6,6 +6,7 @@
|
||||
package org.jetbrains.kotlin.fir.lightTree.fir
|
||||
|
||||
import org.jetbrains.kotlin.fir.FirSession
|
||||
import org.jetbrains.kotlin.fir.FirSourceElement
|
||||
import org.jetbrains.kotlin.fir.builder.generateTemporaryVariable
|
||||
import org.jetbrains.kotlin.fir.declarations.FirVariable
|
||||
import org.jetbrains.kotlin.fir.expressions.FirExpression
|
||||
@@ -14,10 +15,11 @@ import org.jetbrains.kotlin.fir.lightTree.converter.generateDestructuringBlock
|
||||
data class DestructuringDeclaration(
|
||||
val isVar: Boolean,
|
||||
val entries: List<FirVariable<*>>,
|
||||
val initializer: FirExpression
|
||||
val initializer: FirExpression,
|
||||
val source: FirSourceElement
|
||||
) {
|
||||
fun toFirDestructingDeclaration(session: FirSession): FirExpression {
|
||||
val baseVariable = generateTemporaryVariable(session, initializer.source, "destruct", initializer)
|
||||
val baseVariable = generateTemporaryVariable(session, source, "destruct", initializer)
|
||||
return generateDestructuringBlock(session, this, baseVariable, tmpVariable = true)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user