[Low Level FIR] fix exception when creating symbol by invalid code

This commit is contained in:
Ilya Kirillov
2022-10-02 13:07:20 +02:00
committed by teamcity
parent 24bf273b93
commit 49f2f85927
29 changed files with 553 additions and 39 deletions
@@ -159,7 +159,7 @@ object ImplementationConfigurator : AbstractFirTreeImplementationConfigurator()
impl(errorLoop) {
default("block", "FirEmptyExpressionBlock()")
default("condition", "FirErrorExpressionImpl(source, mutableListOf(), ConeStubDiagnostic(diagnostic), null)")
default("condition", "FirErrorExpressionImpl(source, mutableListOf(), ConeStubDiagnostic(diagnostic), null, null)")
useTypes(emptyExpressionBlock, coneStubDiagnosticType)
}
@@ -32,6 +32,7 @@ import org.jetbrains.kotlin.fir.tree.generator.FieldSets.valueParameters
import org.jetbrains.kotlin.fir.tree.generator.FieldSets.visibility
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFieldConfigurator
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder
import org.jetbrains.kotlin.fir.tree.generator.context.AbstractFirTreeBuilder.Companion.baseFirElement
import org.jetbrains.kotlin.fir.tree.generator.context.type
import org.jetbrains.kotlin.fir.tree.generator.model.*
import org.jetbrains.kotlin.serialization.deserialization.descriptors.DeserializedContainerSource
@@ -105,6 +106,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
errorExpression.configure {
+field("expression", expression, nullable = true)
+field("nonExpressionElement", baseFirElement, nullable = true)
}
errorFunction.configure {
@@ -19,6 +19,7 @@ fun detectBaseTransformerTypes(builder: AbstractFirTreeBuilder) {
is FieldList -> field.baseType as AbstractElement
else -> throw IllegalArgumentException()
}
if (fieldElement == AbstractFirTreeBuilder.baseFirElement) continue
usedAsFieldType[fieldElement] = true
}
}