minor: rename FirScript.statements do declarations...
to simplify the following commit that actually convert the types and wrap statements into blocks.
This commit is contained in:
committed by
Space Team
parent
a29a7e6307
commit
c9aee5bf09
+1
-2
@@ -67,7 +67,6 @@ import org.jetbrains.kotlin.resolve.calls.tower.CandidateApplicability
|
|||||||
import org.jetbrains.kotlin.utils.addIfNotNull
|
import org.jetbrains.kotlin.utils.addIfNotNull
|
||||||
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
import org.jetbrains.kotlin.utils.addToStdlib.firstIsInstanceOrNull
|
||||||
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
import org.jetbrains.kotlin.utils.exceptions.errorWithAttachment
|
||||||
import java.util.Arrays
|
|
||||||
|
|
||||||
internal class KtFirReferenceShortener(
|
internal class KtFirReferenceShortener(
|
||||||
override val analysisSession: KtFirAnalysisSession,
|
override val analysisSession: KtFirAnalysisSession,
|
||||||
@@ -433,7 +432,7 @@ private class CollectingVisitor(private val collector: ElementsToShortenCollecto
|
|||||||
}
|
}
|
||||||
|
|
||||||
override fun visitScript(script: FirScript) {
|
override fun visitScript(script: FirScript) {
|
||||||
script.statements.forEach {
|
script.declarations.forEach {
|
||||||
it.accept(this)
|
it.accept(this)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -25,7 +25,7 @@ internal class KtFirResultPropertySymbolPointer(private val scriptPointer: KtSym
|
|||||||
scriptPointer.restoreSymbol()?.firSymbol?.fir as? FirScript
|
scriptPointer.restoreSymbol()?.firSymbol?.fir as? FirScript
|
||||||
} ?: return null
|
} ?: return null
|
||||||
|
|
||||||
val lastProperty = script.statements.lastOrNull() as? FirProperty ?: return null
|
val lastProperty = script.declarations.lastOrNull() as? FirProperty ?: return null
|
||||||
if (lastProperty.origin !is FirDeclarationOrigin.ScriptCustomization.ResultProperty) return null
|
if (lastProperty.origin !is FirDeclarationOrigin.ScriptCustomization.ResultProperty) return null
|
||||||
return analysisSession.firSymbolBuilder.variableLikeBuilder.buildPropertySymbol(lastProperty.symbol) as? KtKotlinPropertySymbol
|
return analysisSession.firSymbolBuilder.variableLikeBuilder.buildPropertySymbol(lastProperty.symbol) as? KtKotlinPropertySymbol
|
||||||
}
|
}
|
||||||
|
|||||||
+6
-6
@@ -364,9 +364,9 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
|||||||
* We assume that [newScript] has the same declarations as [originalScript]
|
* We assume that [newScript] has the same declarations as [originalScript]
|
||||||
*/
|
*/
|
||||||
private fun restoreOriginalDeclarationsInScript(originalScript: FirScript, newScript: FirScript) {
|
private fun restoreOriginalDeclarationsInScript(originalScript: FirScript, newScript: FirScript) {
|
||||||
val updatedStatements = ArrayList<FirStatement>(newScript.statements.size)
|
val updatedStatements = ArrayList<FirStatement>(newScript.declarations.size)
|
||||||
val originalDeclarations = originalScript.statements.iterator()
|
val originalDeclarations = originalScript.declarations.iterator()
|
||||||
for (recreatedStatement in newScript.statements) {
|
for (recreatedStatement in newScript.declarations) {
|
||||||
updatedStatements += if (recreatedStatement.isScriptStatement) {
|
updatedStatements += if (recreatedStatement.isScriptStatement) {
|
||||||
recreatedStatement
|
recreatedStatement
|
||||||
} else {
|
} else {
|
||||||
@@ -379,12 +379,12 @@ object LowLevelFirApiFacadeForResolveOnAir {
|
|||||||
scriptDeclarationInconsistencyError(originalScript, newScript)
|
scriptDeclarationInconsistencyError(originalScript, newScript)
|
||||||
}
|
}
|
||||||
|
|
||||||
newScript.replaceStatements(updatedStatements)
|
newScript.replaceDeclarations(updatedStatements)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun scriptDeclarationInconsistencyError(originalScript: FirScript, newScript: FirScript): Nothing {
|
private fun scriptDeclarationInconsistencyError(originalScript: FirScript, newScript: FirScript): Nothing {
|
||||||
val originalDeclarations = originalScript.statements.filterNot(FirStatement::isScriptStatement)
|
val originalDeclarations = originalScript.declarations.filterNot(FirStatement::isScriptStatement)
|
||||||
val newDeclarations = newScript.statements.filterNot(FirStatement::isScriptStatement)
|
val newDeclarations = newScript.declarations.filterNot(FirStatement::isScriptStatement)
|
||||||
errorWithAttachment("New script has ${if (newDeclarations.size > originalDeclarations.size) "more" else "less"} declarations") {
|
errorWithAttachment("New script has ${if (newDeclarations.size > originalDeclarations.size) "more" else "less"} declarations") {
|
||||||
withFirEntry("originalScript", originalScript)
|
withFirEntry("originalScript", originalScript)
|
||||||
withFirEntry("newScript", newScript)
|
withFirEntry("newScript", newScript)
|
||||||
|
|||||||
+1
-1
@@ -141,7 +141,7 @@ internal class RootScriptStructureElement(
|
|||||||
internal fun <T, R> visitScriptDependentElements(script: FirScript, visitor: FirVisitor<T, R>, data: R) {
|
internal fun <T, R> visitScriptDependentElements(script: FirScript, visitor: FirVisitor<T, R>, data: R) {
|
||||||
script.annotations.forEach { it.accept(visitor, data) }
|
script.annotations.forEach { it.accept(visitor, data) }
|
||||||
script.contextReceivers.forEach { it.accept(visitor, data) }
|
script.contextReceivers.forEach { it.accept(visitor, data) }
|
||||||
script.statements.forEach {
|
script.declarations.forEach {
|
||||||
if (it.isScriptStatement) {
|
if (it.isScriptStatement) {
|
||||||
it.accept(visitor, data)
|
it.accept(visitor, data)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -87,7 +87,7 @@ internal object FirLazyBodiesCalculator {
|
|||||||
|
|
||||||
fun createStatementsForScript(script: FirScript): List<FirStatement> {
|
fun createStatementsForScript(script: FirScript): List<FirStatement> {
|
||||||
val newScript = revive<FirScript>(FirDesignation(emptyList(), script))
|
val newScript = revive<FirScript>(FirDesignation(emptyList(), script))
|
||||||
return newScript.statements
|
return newScript.declarations
|
||||||
}
|
}
|
||||||
|
|
||||||
fun needCalculatingAnnotationCall(firAnnotationCall: FirAnnotationCall): Boolean =
|
fun needCalculatingAnnotationCall(firAnnotationCall: FirAnnotationCall): Boolean =
|
||||||
|
|||||||
+1
-1
@@ -37,7 +37,7 @@ internal object LLFirPhaseUpdater {
|
|||||||
is FirAnonymousInitializer -> target.body?.accept(PhaseUpdatingTransformer, newPhase)
|
is FirAnonymousInitializer -> target.body?.accept(PhaseUpdatingTransformer, newPhase)
|
||||||
is FirScript -> {
|
is FirScript -> {
|
||||||
target.parameters.forEach { it.accept(PhaseUpdatingTransformer, newPhase) }
|
target.parameters.forEach { it.accept(PhaseUpdatingTransformer, newPhase) }
|
||||||
for (statement in target.statements) {
|
for (statement in target.declarations) {
|
||||||
if (!statement.isScriptStatement) continue
|
if (!statement.isScriptStatement) continue
|
||||||
statement.accept(PhaseUpdatingTransformer, newPhase)
|
statement.accept(PhaseUpdatingTransformer, newPhase)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -85,7 +85,7 @@ internal abstract class LLFirAbstractBodyTargetResolver(
|
|||||||
protected fun resolveScript(script: FirScript) {
|
protected fun resolveScript(script: FirScript) {
|
||||||
transformer.declarationsTransformer?.withScript(script) {
|
transformer.declarationsTransformer?.withScript(script) {
|
||||||
script.parameters.forEach { it.transformSingle(transformer, ResolutionMode.ContextIndependent) }
|
script.parameters.forEach { it.transformSingle(transformer, ResolutionMode.ContextIndependent) }
|
||||||
script.transformStatements(
|
script.transformDeclarations(
|
||||||
transformer = object : FirTransformer<Any?>() {
|
transformer = object : FirTransformer<Any?>() {
|
||||||
override fun <E : FirElement> transformElement(element: E, data: Any?): E {
|
override fun <E : FirElement> transformElement(element: E, data: Any?): E {
|
||||||
if (element !is FirStatement || !element.isScriptStatement) return element
|
if (element !is FirStatement || !element.isScriptStatement) return element
|
||||||
|
|||||||
+3
-3
@@ -291,11 +291,11 @@ private class LLFirBodyTargetResolver(
|
|||||||
|
|
||||||
internal object BodyStateKeepers {
|
internal object BodyStateKeepers {
|
||||||
val SCRIPT: StateKeeper<FirScript, FirDesignationWithFile> = stateKeeper { script, designation ->
|
val SCRIPT: StateKeeper<FirScript, FirDesignationWithFile> = stateKeeper { script, designation ->
|
||||||
val oldStatements = script.statements
|
val oldStatements = script.declarations
|
||||||
if (oldStatements.none { it.isScriptStatement } || script.isCertainlyResolved) return@stateKeeper
|
if (oldStatements.none { it.isScriptStatement } || script.isCertainlyResolved) return@stateKeeper
|
||||||
|
|
||||||
add(RESULT_PROPERTY, designation)
|
add(RESULT_PROPERTY, designation)
|
||||||
add(FirScript::statements, FirScript::replaceStatements) {
|
add(FirScript::declarations, FirScript::replaceDeclarations) {
|
||||||
val recreatedStatements = FirLazyBodiesCalculator.createStatementsForScript(script)
|
val recreatedStatements = FirLazyBodiesCalculator.createStatementsForScript(script)
|
||||||
requireSameSize(oldStatements, recreatedStatements)
|
requireSameSize(oldStatements, recreatedStatements)
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ private fun StateKeeperScope<FirFunction, FirDesignationWithFile>.preserveContra
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun FirScript.findResultProperty(): FirProperty? = statements.findIsInstanceAnd<FirProperty> {
|
private fun FirScript.findResultProperty(): FirProperty? = declarations.findIsInstanceAnd<FirProperty> {
|
||||||
it.origin == FirDeclarationOrigin.ScriptCustomization.ResultProperty
|
it.origin == FirDeclarationOrigin.ScriptCustomization.ResultProperty
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+1
-1
@@ -321,7 +321,7 @@ private fun FirAnnotationContainer.hasAnnotationsToResolve(): Boolean {
|
|||||||
this.setter?.hasAnnotationsToResolve() == true ||
|
this.setter?.hasAnnotationsToResolve() == true ||
|
||||||
this.backingField?.hasAnnotationsToResolve() == true
|
this.backingField?.hasAnnotationsToResolve() == true
|
||||||
|
|
||||||
is FirScript -> statements.any { it.isScriptDependentDeclaration && it.hasAnnotationsToResolve() }
|
is FirScript -> declarations.any { it.isScriptDependentDeclaration && it.hasAnnotationsToResolve() }
|
||||||
else -> false
|
else -> false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -168,7 +168,7 @@ internal class LLFirImplicitBodyTargetResolver(
|
|||||||
}
|
}
|
||||||
|
|
||||||
is FirScript -> {
|
is FirScript -> {
|
||||||
if (target.statements.any { it.isScriptDependentDeclaration }) {
|
if (target.declarations.any { it.isScriptDependentDeclaration }) {
|
||||||
resolve(target, BodyStateKeepers.SCRIPT)
|
resolve(target, BodyStateKeepers.SCRIPT)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -97,7 +97,7 @@ internal object FirElementFinder {
|
|||||||
}
|
}
|
||||||
|
|
||||||
subDeclaration is FirScript -> {
|
subDeclaration is FirScript -> {
|
||||||
val scriptDeclarations = subDeclaration.statements.asSequence().filterIsInstance<FirDeclaration>()
|
val scriptDeclarations = subDeclaration.declarations.asSequence().filterIsInstance<FirDeclaration>()
|
||||||
if (find(scriptDeclarations.asIterable(), classIdPathIndex)) {
|
if (find(scriptDeclarations.asIterable(), classIdPathIndex)) {
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -60,7 +60,7 @@ internal fun KtDeclaration.findSourceNonLocalFirDeclaration(firFile: FirFile, pr
|
|||||||
return@findSourceNonLocalFirDeclarationByProvider firScript?.takeIf { it.psi == declaration }
|
return@findSourceNonLocalFirDeclarationByProvider firScript?.takeIf { it.psi == declaration }
|
||||||
}
|
}
|
||||||
|
|
||||||
firScript?.statements?.filterIsInstance<FirDeclaration>()
|
firScript?.declarations?.filterIsInstance<FirDeclaration>()
|
||||||
} else {
|
} else {
|
||||||
firFile.declarations
|
firFile.declarations
|
||||||
}
|
}
|
||||||
@@ -211,7 +211,7 @@ val FirDeclaration.isGeneratedDeclaration
|
|||||||
get() = realPsi == null
|
get() = realPsi == null
|
||||||
|
|
||||||
internal inline fun FirScript.forEachDeclaration(action: (FirDeclaration) -> Unit) {
|
internal inline fun FirScript.forEachDeclaration(action: (FirDeclaration) -> Unit) {
|
||||||
for (statement in statements) {
|
for (statement in declarations) {
|
||||||
if (statement.isScriptStatement) continue
|
if (statement.isScriptStatement) continue
|
||||||
action(statement as FirDeclaration)
|
action(statement as FirDeclaration)
|
||||||
}
|
}
|
||||||
@@ -242,7 +242,7 @@ internal val FirStatement.isScriptDependentDeclaration: Boolean
|
|||||||
get() = this is FirDeclaration && origin == FirDeclarationOrigin.ScriptCustomization.ResultProperty
|
get() = this is FirDeclaration && origin == FirDeclarationOrigin.ScriptCustomization.ResultProperty
|
||||||
|
|
||||||
internal inline fun FirScript.forEachDependentDeclaration(action: (FirDeclaration) -> Unit) {
|
internal inline fun FirScript.forEachDependentDeclaration(action: (FirDeclaration) -> Unit) {
|
||||||
for (statement in statements) {
|
for (statement in declarations) {
|
||||||
if (statement !is FirDeclaration || !statement.isScriptDependentDeclaration) continue
|
if (statement !is FirDeclaration || !statement.isScriptDependentDeclaration) continue
|
||||||
action(statement)
|
action(statement)
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -108,7 +108,7 @@ internal fun checkBodyIsResolved(function: FirFunction) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
internal fun checkStatementsAreResolved(script: FirScript) {
|
internal fun checkStatementsAreResolved(script: FirScript) {
|
||||||
for (statement in script.statements) {
|
for (statement in script.declarations) {
|
||||||
if (statement.isScriptStatement && statement is FirExpression) {
|
if (statement.isScriptStatement && statement is FirExpression) {
|
||||||
checkExpressionTypeIsResolved(statement.coneTypeOrNull, "script statement", script) {
|
checkExpressionTypeIsResolved(statement.coneTypeOrNull, "script statement", script) {
|
||||||
withFirEntry("expression", statement)
|
withFirEntry("expression", statement)
|
||||||
|
|||||||
+1
-1
@@ -91,7 +91,7 @@ abstract class AbstractFirLazyDeclarationResolveTestCase : AbstractLowLevelApiLa
|
|||||||
val (classSymbol, declarations) = when (symbol) {
|
val (classSymbol, declarations) = when (symbol) {
|
||||||
is FirClassSymbol -> symbol to symbol.declarationSymbols
|
is FirClassSymbol -> symbol to symbol.declarationSymbols
|
||||||
is FirScriptSymbol -> {
|
is FirScriptSymbol -> {
|
||||||
symbol to symbol.fir.let { it.parameters + it.statements }.mapNotNull { (it as? FirDeclaration)?.symbol }
|
symbol to symbol.fir.let { it.parameters + it.declarations }.mapNotNull { (it as? FirDeclaration)?.symbol }
|
||||||
}
|
}
|
||||||
|
|
||||||
else -> error("Unknown container: ${symbol::class.simpleName}")
|
else -> error("Unknown container: ${symbol::class.simpleName}")
|
||||||
|
|||||||
+1
-1
@@ -41,7 +41,7 @@ object FirTopLevelPropertiesChecker : FirFileChecker() {
|
|||||||
|
|
||||||
object FirScriptPropertiesChecker : FirScriptChecker() {
|
object FirScriptPropertiesChecker : FirScriptChecker() {
|
||||||
override fun check(declaration: FirScript, context: CheckerContext, reporter: DiagnosticReporter) {
|
override fun check(declaration: FirScript, context: CheckerContext, reporter: DiagnosticReporter) {
|
||||||
val topLevelProperties = declaration.statements.filterIsInstance<FirProperty>()
|
val topLevelProperties = declaration.declarations.filterIsInstance<FirProperty>()
|
||||||
checkFileLikeDeclaration(declaration, topLevelProperties, context, reporter)
|
checkFileLikeDeclaration(declaration, topLevelProperties, context, reporter)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -518,7 +518,7 @@ class Fir2IrConverter(
|
|||||||
addDeclarationToParentIfNeeded(irScript)
|
addDeclarationToParentIfNeeded(irScript)
|
||||||
declarationStorage.withScope(irScript.symbol) {
|
declarationStorage.withScope(irScript.symbol) {
|
||||||
irScript.parent = parent
|
irScript.parent = parent
|
||||||
for (scriptStatement in declaration.statements) {
|
for (scriptStatement in declaration.declarations) {
|
||||||
when (scriptStatement) {
|
when (scriptStatement) {
|
||||||
is FirRegularClass -> {
|
is FirRegularClass -> {
|
||||||
registerClassAndNestedClasses(scriptStatement, irScript)
|
registerClassAndNestedClasses(scriptStatement, irScript)
|
||||||
@@ -528,7 +528,7 @@ class Fir2IrConverter(
|
|||||||
else -> {}
|
else -> {}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (scriptStatement in declaration.statements) {
|
for (scriptStatement in declaration.declarations) {
|
||||||
if (scriptStatement is FirDeclaration) {
|
if (scriptStatement is FirDeclaration) {
|
||||||
processMemberDeclaration(scriptStatement, containingClass = null, irScript, delegateFieldToPropertyMap = null)
|
processMemberDeclaration(scriptStatement, containingClass = null, irScript, delegateFieldToPropertyMap = null)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -254,7 +254,7 @@ class Fir2IrVisitor(
|
|||||||
|
|
||||||
conversionScope.withParent(irScript) {
|
conversionScope.withParent(irScript) {
|
||||||
val destructComposites = mutableMapOf<FirVariableSymbol<*>, IrComposite>()
|
val destructComposites = mutableMapOf<FirVariableSymbol<*>, IrComposite>()
|
||||||
for (statement in script.statements) {
|
for (statement in script.declarations) {
|
||||||
val irStatement = if (statement is FirDeclaration) {
|
val irStatement = if (statement is FirDeclaration) {
|
||||||
when {
|
when {
|
||||||
statement is FirProperty && statement.name == SpecialNames.UNDERSCORE_FOR_UNUSED_VAR -> {
|
statement is FirProperty && statement.name == SpecialNames.UNDERSCORE_FOR_UNUSED_VAR -> {
|
||||||
|
|||||||
+2
-2
@@ -22,7 +22,7 @@ class FirScriptDeclarationsScope(
|
|||||||
|
|
||||||
private val callablesIndex: Map<Name, List<FirCallableSymbol<*>>> = run {
|
private val callablesIndex: Map<Name, List<FirCallableSymbol<*>>> = run {
|
||||||
val result = mutableMapOf<Name, MutableList<FirCallableSymbol<*>>>()
|
val result = mutableMapOf<Name, MutableList<FirCallableSymbol<*>>>()
|
||||||
loop@ for (statement in script.statements) {
|
loop@ for (statement in script.declarations) {
|
||||||
if (statement is FirCallableDeclaration) {
|
if (statement is FirCallableDeclaration) {
|
||||||
val name = when (statement) {
|
val name = when (statement) {
|
||||||
is FirVariable -> if (statement.isSynthetic) continue@loop else statement.name
|
is FirVariable -> if (statement.isSynthetic) continue@loop else statement.name
|
||||||
@@ -38,7 +38,7 @@ class FirScriptDeclarationsScope(
|
|||||||
|
|
||||||
private val classIndex: Map<Name, FirRegularClassSymbol> = run {
|
private val classIndex: Map<Name, FirRegularClassSymbol> = run {
|
||||||
val result = mutableMapOf<Name, FirRegularClassSymbol>()
|
val result = mutableMapOf<Name, FirRegularClassSymbol>()
|
||||||
for (declaration in script.statements) {
|
for (declaration in script.declarations) {
|
||||||
if (declaration is FirRegularClass) {
|
if (declaration is FirRegularClass) {
|
||||||
result[declaration.name] = declaration.symbol
|
result[declaration.name] = declaration.symbol
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -1286,7 +1286,7 @@ open class PsiRawFirBuilder(
|
|||||||
for (declaration in script.declarations) {
|
for (declaration in script.declarations) {
|
||||||
when (declaration) {
|
when (declaration) {
|
||||||
is KtScriptInitializer -> {
|
is KtScriptInitializer -> {
|
||||||
declaration.body?.let { statements.add(it.toFirStatement()) }
|
declaration.body?.let { declarations.add(it.toFirStatement()) }
|
||||||
}
|
}
|
||||||
is KtDestructuringDeclaration -> {
|
is KtDestructuringDeclaration -> {
|
||||||
val destructuringContainerVar = generateTemporaryVariable(
|
val destructuringContainerVar = generateTemporaryVariable(
|
||||||
@@ -1299,9 +1299,9 @@ open class PsiRawFirBuilder(
|
|||||||
).apply {
|
).apply {
|
||||||
isDestructuringDeclarationContainerVariable = true
|
isDestructuringDeclarationContainerVariable = true
|
||||||
}
|
}
|
||||||
statements.add(destructuringContainerVar)
|
declarations.add(destructuringContainerVar)
|
||||||
|
|
||||||
statements.addDestructuringVariables(
|
declarations.addDestructuringVariables(
|
||||||
moduleData,
|
moduleData,
|
||||||
declaration,
|
declaration,
|
||||||
destructuringContainerVar,
|
destructuringContainerVar,
|
||||||
@@ -1312,7 +1312,7 @@ open class PsiRawFirBuilder(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else -> {
|
else -> {
|
||||||
statements.add(declaration.toFirStatement())
|
declarations.add(declaration.toFirStatement())
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -403,7 +403,7 @@ abstract class AbstractFirSpecificAnnotationResolveTransformer(
|
|||||||
computationSession.recordThatAnnotationsAreResolved(script)
|
computationSession.recordThatAnnotationsAreResolved(script)
|
||||||
transformDeclaration(script, null).also {
|
transformDeclaration(script, null).also {
|
||||||
transformChildren(script) {
|
transformChildren(script) {
|
||||||
script.transformStatements(this, data)
|
script.transformDeclarations(this, data)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@ abstract class FirScript : FirDeclaration(), FirControlFlowGraphOwner {
|
|||||||
abstract override val attributes: FirDeclarationAttributes
|
abstract override val attributes: FirDeclarationAttributes
|
||||||
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
abstract override val controlFlowGraphReference: FirControlFlowGraphReference?
|
||||||
abstract val name: Name
|
abstract val name: Name
|
||||||
abstract val statements: List<FirStatement>
|
abstract val declarations: List<FirStatement>
|
||||||
abstract override val symbol: FirScriptSymbol
|
abstract override val symbol: FirScriptSymbol
|
||||||
abstract val parameters: List<FirVariable>
|
abstract val parameters: List<FirVariable>
|
||||||
abstract val contextReceivers: List<FirContextReceiver>
|
abstract val contextReceivers: List<FirContextReceiver>
|
||||||
@@ -47,9 +47,9 @@ abstract class FirScript : FirDeclaration(), FirControlFlowGraphOwner {
|
|||||||
|
|
||||||
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
abstract override fun replaceControlFlowGraphReference(newControlFlowGraphReference: FirControlFlowGraphReference?)
|
||||||
|
|
||||||
abstract fun replaceStatements(newStatements: List<FirStatement>)
|
abstract fun replaceDeclarations(newDeclarations: List<FirStatement>)
|
||||||
|
|
||||||
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirScript
|
abstract override fun <D> transformAnnotations(transformer: FirTransformer<D>, data: D): FirScript
|
||||||
|
|
||||||
abstract fun <D> transformStatements(transformer: FirTransformer<D>, data: D): FirScript
|
abstract fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirScript
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-3
@@ -32,7 +32,7 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
|
|||||||
lateinit var origin: FirDeclarationOrigin
|
lateinit var origin: FirDeclarationOrigin
|
||||||
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
var attributes: FirDeclarationAttributes = FirDeclarationAttributes()
|
||||||
lateinit var name: Name
|
lateinit var name: Name
|
||||||
val statements: MutableList<FirStatement> = mutableListOf()
|
val declarations: MutableList<FirStatement> = mutableListOf()
|
||||||
lateinit var symbol: FirScriptSymbol
|
lateinit var symbol: FirScriptSymbol
|
||||||
val parameters: MutableList<FirVariable> = mutableListOf()
|
val parameters: MutableList<FirVariable> = mutableListOf()
|
||||||
val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
val contextReceivers: MutableList<FirContextReceiver> = mutableListOf()
|
||||||
@@ -47,7 +47,7 @@ class FirScriptBuilder : FirAnnotationContainerBuilder {
|
|||||||
origin,
|
origin,
|
||||||
attributes,
|
attributes,
|
||||||
name,
|
name,
|
||||||
statements.toMutableOrEmpty(),
|
declarations.toMutableOrEmpty(),
|
||||||
symbol,
|
symbol,
|
||||||
parameters,
|
parameters,
|
||||||
contextReceivers.toMutableOrEmpty(),
|
contextReceivers.toMutableOrEmpty(),
|
||||||
@@ -78,7 +78,7 @@ inline fun buildScriptCopy(original: FirScript, init: FirScriptBuilder.() -> Uni
|
|||||||
copyBuilder.origin = original.origin
|
copyBuilder.origin = original.origin
|
||||||
copyBuilder.attributes = original.attributes.copy()
|
copyBuilder.attributes = original.attributes.copy()
|
||||||
copyBuilder.name = original.name
|
copyBuilder.name = original.name
|
||||||
copyBuilder.statements.addAll(original.statements)
|
copyBuilder.declarations.addAll(original.declarations)
|
||||||
copyBuilder.symbol = original.symbol
|
copyBuilder.symbol = original.symbol
|
||||||
copyBuilder.parameters.addAll(original.parameters)
|
copyBuilder.parameters.addAll(original.parameters)
|
||||||
copyBuilder.contextReceivers.addAll(original.contextReceivers)
|
copyBuilder.contextReceivers.addAll(original.contextReceivers)
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ internal class FirScriptImpl(
|
|||||||
override val origin: FirDeclarationOrigin,
|
override val origin: FirDeclarationOrigin,
|
||||||
override val attributes: FirDeclarationAttributes,
|
override val attributes: FirDeclarationAttributes,
|
||||||
override val name: Name,
|
override val name: Name,
|
||||||
override var statements: MutableOrEmptyList<FirStatement>,
|
override var declarations: MutableOrEmptyList<FirStatement>,
|
||||||
override val symbol: FirScriptSymbol,
|
override val symbol: FirScriptSymbol,
|
||||||
override val parameters: MutableList<FirVariable>,
|
override val parameters: MutableList<FirVariable>,
|
||||||
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
|
override var contextReceivers: MutableOrEmptyList<FirContextReceiver>,
|
||||||
@@ -49,7 +49,7 @@ internal class FirScriptImpl(
|
|||||||
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
override fun <R, D> acceptChildren(visitor: FirVisitor<R, D>, data: D) {
|
||||||
annotations.forEach { it.accept(visitor, data) }
|
annotations.forEach { it.accept(visitor, data) }
|
||||||
controlFlowGraphReference?.accept(visitor, data)
|
controlFlowGraphReference?.accept(visitor, data)
|
||||||
statements.forEach { it.accept(visitor, data) }
|
declarations.forEach { it.accept(visitor, data) }
|
||||||
parameters.forEach { it.accept(visitor, data) }
|
parameters.forEach { it.accept(visitor, data) }
|
||||||
contextReceivers.forEach { it.accept(visitor, data) }
|
contextReceivers.forEach { it.accept(visitor, data) }
|
||||||
}
|
}
|
||||||
@@ -57,7 +57,7 @@ internal class FirScriptImpl(
|
|||||||
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirScriptImpl {
|
override fun <D> transformChildren(transformer: FirTransformer<D>, data: D): FirScriptImpl {
|
||||||
transformAnnotations(transformer, data)
|
transformAnnotations(transformer, data)
|
||||||
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
|
controlFlowGraphReference = controlFlowGraphReference?.transform(transformer, data)
|
||||||
transformStatements(transformer, data)
|
transformDeclarations(transformer, data)
|
||||||
parameters.transformInplace(transformer, data)
|
parameters.transformInplace(transformer, data)
|
||||||
contextReceivers.transformInplace(transformer, data)
|
contextReceivers.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
@@ -68,8 +68,8 @@ internal class FirScriptImpl(
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun <D> transformStatements(transformer: FirTransformer<D>, data: D): FirScriptImpl {
|
override fun <D> transformDeclarations(transformer: FirTransformer<D>, data: D): FirScriptImpl {
|
||||||
statements.transformInplace(transformer, data)
|
declarations.transformInplace(transformer, data)
|
||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -81,7 +81,7 @@ internal class FirScriptImpl(
|
|||||||
controlFlowGraphReference = newControlFlowGraphReference
|
controlFlowGraphReference = newControlFlowGraphReference
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun replaceStatements(newStatements: List<FirStatement>) {
|
override fun replaceDeclarations(newDeclarations: List<FirStatement>) {
|
||||||
statements = newStatements.toMutableOrEmpty()
|
declarations = newDeclarations.toMutableOrEmpty()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,7 +223,7 @@ class FirRenderer(
|
|||||||
|
|
||||||
printer.newLine()
|
printer.newLine()
|
||||||
|
|
||||||
script.statements.forEach {
|
script.declarations.forEach {
|
||||||
it.accept(this)
|
it.accept(this)
|
||||||
printer.newLine()
|
printer.newLine()
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -494,7 +494,7 @@ object NodeConfigurator : AbstractFieldConfigurator<FirTreeBuilder>(FirTreeBuild
|
|||||||
|
|
||||||
script.configure {
|
script.configure {
|
||||||
+name
|
+name
|
||||||
+fieldList(statement, withReplace = true, useMutableOrEmpty = true).withTransform()
|
+FieldList("declarations", statement, withReplace = true, useMutableOrEmpty = true).withTransform()
|
||||||
+symbol("FirScriptSymbol")
|
+symbol("FirScriptSymbol")
|
||||||
+fieldList("parameters", variable, withReplace = false)
|
+fieldList("parameters", variable, withReplace = false)
|
||||||
+fieldList(contextReceiver, useMutableOrEmpty = true)
|
+fieldList(contextReceiver, useMutableOrEmpty = true)
|
||||||
|
|||||||
+3
-3
@@ -137,10 +137,10 @@ class FirScriptConfiguratorExtensionImpl(
|
|||||||
}
|
}
|
||||||
|
|
||||||
configuration[ScriptCompilationConfiguration.resultField]?.takeIf { it.isNotBlank() }?.let { resultFieldName ->
|
configuration[ScriptCompilationConfiguration.resultField]?.takeIf { it.isNotBlank() }?.let { resultFieldName ->
|
||||||
val lastExpression = statements.lastOrNull()
|
val lastExpression = declarations.lastOrNull()
|
||||||
if (lastExpression != null && lastExpression is FirExpression) {
|
if (lastExpression != null && lastExpression is FirExpression) {
|
||||||
statements.removeAt(statements.size - 1)
|
declarations.removeAt(declarations.size - 1)
|
||||||
statements.add(
|
declarations.add(
|
||||||
@OptIn(UnresolvedExpressionTypeAccess::class)
|
@OptIn(UnresolvedExpressionTypeAccess::class)
|
||||||
buildProperty {
|
buildProperty {
|
||||||
this.name = Name.identifier(resultFieldName)
|
this.name = Name.identifier(resultFieldName)
|
||||||
|
|||||||
Reference in New Issue
Block a user