diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/diagnosticProvider/Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/diagnosticProvider/Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java index e1a3804767b..3e51ef75829 100644 --- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/diagnosticProvider/Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java +++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/diagnosticProvider/Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java @@ -52,6 +52,12 @@ public class Fe10IdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated ex runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/declarationErrors.kt"); } + @Test + @TestMetadata("incompleteDelegation.kt") + public void testIncompleteDelegation() throws Exception { + runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt"); + } + @Test @TestMetadata("incompleteFor.kt") public void testIncompleteFor() throws Exception { diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/diagnosticProvider/FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/diagnosticProvider/FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java index c86df063d98..c4c8b9d82b3 100644 --- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/diagnosticProvider/FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java +++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/diagnosticProvider/FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java @@ -52,6 +52,12 @@ public class FirIdeNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated ext runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/declarationErrors.kt"); } + @Test + @TestMetadata("incompleteDelegation.kt") + public void testIncompleteDelegation() throws Exception { + runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt"); + } + @Test @TestMetadata("incompleteFor.kt") public void testIncompleteFor() throws Exception { diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/diagnosticProvider/FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/diagnosticProvider/FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java index 4269aa24d16..43e0591a5d4 100644 --- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/diagnosticProvider/FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java +++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/diagnosticProvider/FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenerated.java @@ -52,6 +52,12 @@ public class FirStandaloneNormalAnalysisSourceModuleCollectDiagnosticsTestGenera runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/declarationErrors.kt"); } + @Test + @TestMetadata("incompleteDelegation.kt") + public void testIncompleteDelegation() throws Exception { + runTest("analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt"); + } + @Test @TestMetadata("incompleteFor.kt") public void testIncompleteFor() throws Exception { diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.descriptors.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.descriptors.txt new file mode 100644 index 00000000000..ea382f16c57 --- /dev/null +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.descriptors.txt @@ -0,0 +1,7 @@ +Diagnostics from elements: + for PSI element of type KtParameter at (3,21-28) + UNUSED_PARAMETER text ranges: [(53,54)] + PSI: KtParameter at (3,21-28) + for PSI element of type KtParameter at (3,30-45) + UNUSED_PARAMETER text ranges: [(62,63)] + PSI: KtParameter at (3,30-45) diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt new file mode 100644 index 00000000000..58a086b28d6 --- /dev/null +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.kt @@ -0,0 +1,4 @@ +import kotlin.reflect.KProperty + +fun String.getValue(x: Any?, y: KProperty<*>) = "" +val x: String by \ No newline at end of file diff --git a/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.txt b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.txt new file mode 100644 index 00000000000..9f370a89565 --- /dev/null +++ b/analysis/analysis-api/testData/components/diagnosticsProvider/diagnostics/incompleteDelegation.txt @@ -0,0 +1 @@ +Diagnostics from elements: diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyBodiesCalculatorTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyBodiesCalculatorTestGenerated.java index 302132acd46..f0e044e7659 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyBodiesCalculatorTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirOutOfContentRootLazyBodiesCalculatorTestGenerated.java @@ -201,6 +201,12 @@ public class FirOutOfContentRootLazyBodiesCalculatorTestGenerated extends Abstra runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/genericProperty.kt"); } + @Test + @TestMetadata("incompletePropertyWithDelegate.kt") + public void testIncompletePropertyWithDelegate() throws Exception { + runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt"); + } + @Test @TestMetadata("initBlockWithDeclarations.kt") public void testInitBlockWithDeclarations() throws Exception { diff --git a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyBodiesCalculatorTestGenerated.java b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyBodiesCalculatorTestGenerated.java index 12b19ab40ad..8fc5e35eb44 100644 --- a/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyBodiesCalculatorTestGenerated.java +++ b/analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/FirSourceLazyBodiesCalculatorTestGenerated.java @@ -201,6 +201,12 @@ public class FirSourceLazyBodiesCalculatorTestGenerated extends AbstractFirSourc runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/genericProperty.kt"); } + @Test + @TestMetadata("incompletePropertyWithDelegate.kt") + public void testIncompletePropertyWithDelegate() throws Exception { + runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt"); + } + @Test @TestMetadata("initBlockWithDeclarations.kt") public void testInitBlockWithDeclarations() throws Exception { diff --git a/compiler/fir/raw-fir/light-tree2fir/tests-gen/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java b/compiler/fir/raw-fir/light-tree2fir/tests-gen/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java index 39f01c3296a..8727fa37dcf 100644 --- a/compiler/fir/raw-fir/light-tree2fir/tests-gen/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java +++ b/compiler/fir/raw-fir/light-tree2fir/tests-gen/org/jetbrains/kotlin/fir/lightTree/LightTree2FirConverterTestCaseGenerated.java @@ -181,6 +181,11 @@ public class LightTree2FirConverterTestCaseGenerated extends AbstractLightTree2F runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/genericProperty.kt"); } + @TestMetadata("incompletePropertyWithDelegate.kt") + public void testIncompletePropertyWithDelegate() throws Exception { + runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt"); + } + @TestMetadata("initBlockWithDeclarations.kt") public void testInitBlockWithDeclarations() throws Exception { runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/initBlockWithDeclarations.kt"); diff --git a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt index 8d82281ed4d..8cdf01e867e 100644 --- a/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt +++ b/compiler/fir/raw-fir/psi2fir/src/org/jetbrains/kotlin/fir/builder/PsiRawFirBuilder.kt @@ -1976,6 +1976,7 @@ open class PsiRawFirBuilder( val delegateBuilder = FirWrappedDelegateExpressionBuilder().apply { val delegateFirExpression = extractDelegateExpression() source = delegateFirExpression.source?.fakeElement(KtFakeSourceElementKind.WrappedDelegate) + ?: this@toFirProperty.delegate?.toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate) expression = delegateFirExpression } @@ -2042,6 +2043,7 @@ open class PsiRawFirBuilder( val delegateBuilder = FirWrappedDelegateExpressionBuilder().apply { val delegateExpression = extractDelegateExpression() source = delegateExpression.source?.fakeElement(KtFakeSourceElementKind.WrappedDelegate) + ?: this@toFirProperty.delegate?.toFirSourceElement(KtFakeSourceElementKind.WrappedDelegate) expression = delegateExpression } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt new file mode 100644 index 00000000000..c9fb0edc011 --- /dev/null +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt @@ -0,0 +1,4 @@ +import kotlin.reflect.KProperty + +fun String.getValue(x: Any?, y: KProperty<*>) = "" +val x: String by diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.lazyBodies.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.lazyBodies.txt new file mode 100644 index 00000000000..4ffc7dabe05 --- /dev/null +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.lazyBodies.txt @@ -0,0 +1,4 @@ +FILE: incompletePropertyWithDelegate.kt + public? final? fun String.getValue(x: Any?, y: KProperty<*>): { LAZY_BLOCK } + public? final? val x: Stringby LAZY_EXPRESSION + public? get(): { LAZY_BLOCK } diff --git a/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.txt b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.txt new file mode 100644 index 00000000000..83185298ef5 --- /dev/null +++ b/compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.txt @@ -0,0 +1,8 @@ +FILE: incompletePropertyWithDelegate.kt + public? final? fun String.getValue(x: Any?, y: KProperty<*>): { + ^getValue String() + } + public? final? val x: Stringby ERROR_EXPR(Should have delegate) + public? get(): { + ^ D|/x|.getValue#(Null(null), ::R|/x|) + } diff --git a/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderLazyBodiesTestCaseGenerated.java b/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderLazyBodiesTestCaseGenerated.java index 2fe3841fb87..09d85f4561f 100644 --- a/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderLazyBodiesTestCaseGenerated.java +++ b/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderLazyBodiesTestCaseGenerated.java @@ -181,6 +181,11 @@ public class RawFirBuilderLazyBodiesTestCaseGenerated extends AbstractRawFirBuil runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/genericProperty.kt"); } + @TestMetadata("incompletePropertyWithDelegate.kt") + public void testIncompletePropertyWithDelegate() throws Exception { + runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt"); + } + @TestMetadata("initBlockWithDeclarations.kt") public void testInitBlockWithDeclarations() throws Exception { runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/initBlockWithDeclarations.kt"); diff --git a/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java b/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java index 6c270dacfed..db01dabc151 100644 --- a/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java +++ b/compiler/fir/raw-fir/psi2fir/tests-gen/org/jetbrains/kotlin/fir/builder/RawFirBuilderTestCaseGenerated.java @@ -181,6 +181,11 @@ public class RawFirBuilderTestCaseGenerated extends AbstractRawFirBuilderTestCas runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/genericProperty.kt"); } + @TestMetadata("incompletePropertyWithDelegate.kt") + public void testIncompletePropertyWithDelegate() throws Exception { + runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/incompletePropertyWithDelegate.kt"); + } + @TestMetadata("initBlockWithDeclarations.kt") public void testInitBlockWithDeclarations() throws Exception { runTest("compiler/fir/raw-fir/psi2fir/testData/rawBuilder/declarations/initBlockWithDeclarations.kt");