[FIR] move lazy expression assertions to more common class
^KT-56543
This commit is contained in:
committed by
Space Team
parent
efdae98ba8
commit
22b5d940f1
+18
@@ -9,6 +9,9 @@ import org.jetbrains.kotlin.fir.FirCallResolver
|
|||||||
import org.jetbrains.kotlin.fir.FirSession
|
import org.jetbrains.kotlin.fir.FirSession
|
||||||
import org.jetbrains.kotlin.fir.PrivateForInline
|
import org.jetbrains.kotlin.fir.PrivateForInline
|
||||||
import org.jetbrains.kotlin.fir.declarations.*
|
import org.jetbrains.kotlin.fir.declarations.*
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirLazyBlock
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirLazyExpression
|
||||||
|
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
||||||
import org.jetbrains.kotlin.fir.resolve.*
|
import org.jetbrains.kotlin.fir.resolve.*
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionStageRunner
|
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionStageRunner
|
||||||
@@ -50,6 +53,21 @@ abstract class FirAbstractBodyResolveTransformer(phase: FirResolvePhase) : FirAb
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
override fun transformLazyExpression(lazyExpression: FirLazyExpression, data: ResolutionMode): FirStatement {
|
||||||
|
suppressOrThrowError("FirLazyExpression should be calculated before accessing")
|
||||||
|
return lazyExpression
|
||||||
|
}
|
||||||
|
|
||||||
|
override fun transformLazyBlock(lazyBlock: FirLazyBlock, data: ResolutionMode): FirStatement {
|
||||||
|
suppressOrThrowError("FirLazyBlock should be calculated before accessing")
|
||||||
|
return lazyBlock
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun suppressOrThrowError(message: String) {
|
||||||
|
if (System.getProperty("kotlin.suppress.lazy.expression.access").toBoolean()) return
|
||||||
|
error(message)
|
||||||
|
}
|
||||||
|
|
||||||
protected inline val localScopes: List<FirLocalScope> get() = components.localScopes
|
protected inline val localScopes: List<FirLocalScope> get() = components.localScopes
|
||||||
|
|
||||||
protected inline val noExpectedType: FirTypeRef get() = components.noExpectedType
|
protected inline val noExpectedType: FirTypeRef get() = components.noExpectedType
|
||||||
|
|||||||
-11
@@ -7,9 +7,6 @@ package org.jetbrains.kotlin.fir.resolve.transformers.body.resolve
|
|||||||
|
|
||||||
import org.jetbrains.kotlin.fir.FirElement
|
import org.jetbrains.kotlin.fir.FirElement
|
||||||
import org.jetbrains.kotlin.fir.PrivateForInline
|
import org.jetbrains.kotlin.fir.PrivateForInline
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirLazyBlock
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirLazyExpression
|
|
||||||
import org.jetbrains.kotlin.fir.expressions.FirStatement
|
|
||||||
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
import org.jetbrains.kotlin.fir.resolve.ResolutionMode
|
||||||
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
import org.jetbrains.kotlin.fir.resolve.calls.ResolutionContext
|
||||||
|
|
||||||
@@ -38,12 +35,4 @@ abstract class FirPartialBodyResolveTransformer(
|
|||||||
override fun <E : FirElement> transformElement(element: E, data: ResolutionMode): E {
|
override fun <E : FirElement> transformElement(element: E, data: ResolutionMode): E {
|
||||||
return element.transform(transformer, data)
|
return element.transform(transformer, data)
|
||||||
}
|
}
|
||||||
|
|
||||||
override fun transformLazyExpression(lazyExpression: FirLazyExpression, data: ResolutionMode): FirStatement {
|
|
||||||
error("FirLazyExpression should be calculated before accessing")
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun transformLazyBlock(lazyBlock: FirLazyBlock, data: ResolutionMode): FirStatement {
|
|
||||||
error("FirLazyBlock should be calculated before accessing")
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
+1
@@ -17,6 +17,7 @@ abstract class AbstractLazyBodyIsNotTouchedTest : AbstractFirBaseDiagnosticsTest
|
|||||||
override fun runAnalysis(testDataFile: File, testFiles: List<TestFile>, firFilesPerSession: Map<FirSession, List<FirFile>>) {
|
override fun runAnalysis(testDataFile: File, testFiles: List<TestFile>, firFilesPerSession: Map<FirSession, List<FirFile>>) {
|
||||||
val phases = FirResolvePhase.values()
|
val phases = FirResolvePhase.values()
|
||||||
.dropWhile { it <= FirResolvePhase.RAW_FIR }
|
.dropWhile { it <= FirResolvePhase.RAW_FIR }
|
||||||
|
.filterNot { it == FirResolvePhase.COMPILER_REQUIRED_ANNOTATIONS }
|
||||||
.takeWhile { it < FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS }
|
.takeWhile { it < FirResolvePhase.ARGUMENTS_OF_ANNOTATIONS }
|
||||||
|
|
||||||
for ((session, firFiles) in firFilesPerSession) {
|
for ((session, firFiles) in firFilesPerSession) {
|
||||||
|
|||||||
Reference in New Issue
Block a user