diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt index 905b526c711..2cda44a2deb 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/RawFirBuilder.kt @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.fir.builder import com.intellij.psi.PsiElement import com.intellij.psi.tree.IElementType -import com.intellij.psi.util.PsiTreeUtil import com.intellij.util.AstLoadingFilter import org.jetbrains.kotlin.* import org.jetbrains.kotlin.builtins.StandardNames @@ -1527,8 +1526,11 @@ open class RawFirBuilder( } private fun KtContractEffectList.extractRawEffects(destination: MutableList) { - getExpressions() - .mapTo(destination) { it.accept(this@Visitor, Unit) as FirExpression } + getContractEffects().mapTo(destination) { effect -> + buildOrLazyExpression(effect.toFirSourceElement()) { + effect.getExpression().accept(this@Visitor, Unit) as FirExpression + } + } } override fun visitLambdaExpression(expression: KtLambdaExpression, data: Unit): FirElement { diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/functionWithBothOldAndNewSyntaxContractDescription.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/functionWithBothOldAndNewSyntaxContractDescription.lazyBodies.txt index 0ff623f325d..8c2dc62b5c7 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/functionWithBothOldAndNewSyntaxContractDescription.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/functionWithBothOldAndNewSyntaxContractDescription.lazyBodies.txt @@ -1,6 +1,6 @@ FILE: functionWithBothOldAndNewSyntaxContractDescription.kt public? final? fun test1(s: String?): R|kotlin/Unit| [Contract description] < - returnsNotNull#() + LAZY_EXPRESSION > { LAZY_BLOCK } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/propertyAccessorsContractDescription.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/propertyAccessorsContractDescription.lazyBodies.txt index 5882f5f9b08..377f6ddf8f9 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/propertyAccessorsContractDescription.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/propertyAccessorsContractDescription.lazyBodies.txt @@ -7,7 +7,7 @@ FILE: propertyAccessorsContractDescription.kt public? final? var myInt: Int = LAZY_EXPRESSION public? get(): Int [Contract description] < - returnsNotNull#() + LAZY_EXPRESSION > { LAZY_BLOCK } public? set(value: Int): R|kotlin/Unit| { LAZY_BLOCK } @@ -21,12 +21,12 @@ FILE: propertyAccessorsContractDescription.kt public? final? var anotherInt: Int = LAZY_EXPRESSION public? get(): Int [Contract description] < - returnsNotNull#() + LAZY_EXPRESSION > { LAZY_BLOCK } public? set(value: Int): R|kotlin/Unit| [Contract description] < - returns#() + LAZY_EXPRESSION > { LAZY_BLOCK } @@ -39,12 +39,12 @@ FILE: propertyAccessorsContractDescription.kt public? final? var someInt: Int = LAZY_EXPRESSION public? get(): Int [Contract description] < - returnsNotNull#() + LAZY_EXPRESSION > { LAZY_BLOCK } public? set(value: Int): R|kotlin/Unit| [Contract description] < - returns#().implies#(!=(value#, Null(null))) + LAZY_EXPRESSION > { LAZY_BLOCK } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/simpleFunctionsContractDescription.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/simpleFunctionsContractDescription.lazyBodies.txt index 032c427fc03..f79c83bb5a9 100644 --- a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/simpleFunctionsContractDescription.lazyBodies.txt +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/contracts/newSyntax/simpleFunctionsContractDescription.lazyBodies.txt @@ -1,12 +1,12 @@ FILE: simpleFunctionsContractDescription.kt public? final? fun test1(s: MyClass?): R|kotlin/Unit| [Contract description] < - returns#().implies#(!=(s#, Null(null))), - returns#().implies#((s# is MySubClass)) + LAZY_EXPRESSION, + LAZY_EXPRESSION > { LAZY_BLOCK } public? final? fun test2(): R|kotlin/Unit| [Contract description] < - returnsNotNull#() + LAZY_EXPRESSION > { LAZY_BLOCK } diff --git a/compiler/psi/src/org/jetbrains/kotlin/psi/KtContractEffectList.kt b/compiler/psi/src/org/jetbrains/kotlin/psi/KtContractEffectList.kt index 6b982010f80..99105bdbc98 100644 --- a/compiler/psi/src/org/jetbrains/kotlin/psi/KtContractEffectList.kt +++ b/compiler/psi/src/org/jetbrains/kotlin/psi/KtContractEffectList.kt @@ -14,8 +14,5 @@ class KtContractEffectList : KtElementImplStub) : super(stub, KtStubElementTypes.CONTRACT_EFFECT_LIST) } -fun KtContractEffectList.getExpressions(): List = +fun KtContractEffectList.getContractEffects(): List = getStubOrPsiChildrenAsList(KtStubElementTypes.CONTRACT_EFFECT) - .map { - it.getExpression() - }