diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.kt new file mode 100644 index 00000000000..aff353d846d --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.kt @@ -0,0 +1 @@ +val p: String by \ No newline at end of file diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.txt new file mode 100644 index 00000000000..3c7916cfe5c --- /dev/null +++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.txt @@ -0,0 +1,9 @@ +KT element: KtProperty +FIR element: FirPropertyImpl +FIR source kind: KtRealSourceElementKind + +FIR element rendered: +public final val p: R|kotlin/String|by ERROR_EXPR(Should have delegate) + public get(): R|kotlin/String| { + ^ D|/p|.#(Null(null), ::R|/p|) + } diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java index e80f08ca688..40e12d048fc 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/OutOfContentRootGetOrBuildFirTestGenerated.java @@ -579,6 +579,12 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.kt"); + } + @Test @TestMetadata("javaClassLiteral.kt") public void testJavaClassLiteral() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java index bb6d4edae38..e442c80790d 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/SourceGetOrBuildFirTestGenerated.java @@ -579,6 +579,12 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi KtTestUtil.assertAllTestsPresentByMetadataWithExcluded(this.getClass(), new File("analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode"), Pattern.compile("^(.+)\\.kt$"), null, true); } + @Test + @TestMetadata("delegatedProperty.kt") + public void testDelegatedProperty() throws Exception { + runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/invalidCode/delegatedProperty.kt"); + } + @Test @TestMetadata("javaClassLiteral.kt") public void testJavaClassLiteral() throws Exception { 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 2f663b5a5eb..cfc1a6375cf 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 @@ -1814,7 +1814,9 @@ open class RawFirBuilder( buildOrLazyExpression(expression.toFirSourceElement()) { expression.toFirExpression("Should have delegate") } - } ?: buildErrorExpression { ConeSimpleDiagnostic("Should have delegate", DiagnosticKind.ExpressionExpected) } + } ?: buildErrorExpression { + diagnostic = ConeSimpleDiagnostic("Should have delegate", DiagnosticKind.ExpressionExpected) + } val delegateBuilder = FirWrappedDelegateExpressionBuilder().apply { val delegateExpression = extractDelegateExpression()