diff --git a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 5c9ff56011a..3da254a4ca6 100644
--- a/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fe10/tests-gen/org/jetbrains/kotlin/analysis/api/fe10/test/cases/generated/cases/components/callResolver/Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -202,6 +202,12 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/annotationOnReceiver.kt");
}
+ @Test
+ @TestMetadata("arrayIncWithDotQualifier.kt")
+ public void testArrayIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("arrayOfInAnnotation.kt")
public void testArrayOfInAnnotation() throws Exception {
@@ -502,6 +508,12 @@ public class Fe10IdeNormalAnalysisSourceModuleResolveCallTestGenerated extends A
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/implicitJavaConstuctorCall.kt");
}
+ @Test
+ @TestMetadata("incWithDotQualifier.kt")
+ public void testIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("indexedGet.kt")
public void testIndexedGet() throws Exception {
diff --git a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 1364ee679bb..b2543f38d1a 100644
--- a/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-fir/tests-gen/org/jetbrains/kotlin/analysis/api/fir/test/cases/generated/cases/components/callResolver/FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -202,6 +202,12 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/annotationOnReceiver.kt");
}
+ @Test
+ @TestMetadata("arrayIncWithDotQualifier.kt")
+ public void testArrayIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("arrayOfInAnnotation.kt")
public void testArrayOfInAnnotation() throws Exception {
@@ -502,6 +508,12 @@ public class FirIdeNormalAnalysisSourceModuleResolveCallTestGenerated extends Ab
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/implicitJavaConstuctorCall.kt");
}
+ @Test
+ @TestMetadata("incWithDotQualifier.kt")
+ public void testIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("indexedGet.kt")
public void testIndexedGet() throws Exception {
diff --git a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
index 44c9af212f7..585e74956c9 100644
--- a/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
+++ b/analysis/analysis-api-standalone/tests-gen/org/jetbrains/kotlin/analysis/api/standalone/fir/test/cases/generated/cases/components/callResolver/FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated.java
@@ -202,6 +202,12 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/annotationOnReceiver.kt");
}
+ @Test
+ @TestMetadata("arrayIncWithDotQualifier.kt")
+ public void testArrayIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("arrayOfInAnnotation.kt")
public void testArrayOfInAnnotation() throws Exception {
@@ -502,6 +508,12 @@ public class FirStandaloneNormalAnalysisSourceModuleResolveCallTestGenerated ext
runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/implicitJavaConstuctorCall.kt");
}
+ @Test
+ @TestMetadata("incWithDotQualifier.kt")
+ public void testIncWithDotQualifier() throws Exception {
+ runTest("analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt");
+ }
+
@Test
@TestMetadata("indexedGet.kt")
public void testIndexedGet() throws Exception {
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt
new file mode 100644
index 00000000000..1453584ef01
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.kt
@@ -0,0 +1,10 @@
+// IGNORE_FE10
+class F {
+ val a = arrayOf(1, 2)
+ fun handleLeftBracketInFragment() {
+ foo().peek().a[0]++
+ }
+
+ fun foo() : F = F()
+ fun peek() : F = this
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.txt
new file mode 100644
index 00000000000..4636ebafcc5
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/arrayIncWithDotQualifier.txt
@@ -0,0 +1,17 @@
+KtSuccessCallInfo:
+ call = KtSimpleFunctionCall:
+ isImplicitInvoke = false
+ partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+ dispatchReceiver = KtExplicitReceiverValue:
+ expression = foo()
+ isSafeNavigation = false
+ type = F
+ extensionReceiver = null
+ signature = KtFunctionLikeSignature:
+ receiverType = null
+ returnType = F
+ symbol = /F.peek(: F): F
+ valueParameters = []
+ callableIdIfNonLocal = /F.peek
+ typeArgumentsMapping = {}
+ argumentMapping = {}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt b/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt
new file mode 100644
index 00000000000..8a189a3e082
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.kt
@@ -0,0 +1,10 @@
+// IGNORE_FE10
+class F {
+ var a = 1
+ fun handleLeftBracketInFragment() {
+ foo().peek().a++
+ }
+
+ fun foo() : F = F()
+ fun peek() : F = this
+}
\ No newline at end of file
diff --git a/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.txt b/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.txt
new file mode 100644
index 00000000000..4636ebafcc5
--- /dev/null
+++ b/analysis/analysis-api/testData/components/callResolver/resolveCall/incWithDotQualifier.txt
@@ -0,0 +1,17 @@
+KtSuccessCallInfo:
+ call = KtSimpleFunctionCall:
+ isImplicitInvoke = false
+ partiallyAppliedSymbol = KtPartiallyAppliedSymbol:
+ dispatchReceiver = KtExplicitReceiverValue:
+ expression = foo()
+ isSafeNavigation = false
+ type = F
+ extensionReceiver = null
+ signature = KtFunctionLikeSignature:
+ receiverType = null
+ returnType = F
+ symbol = /F.peek(: F): F
+ valueParameters = []
+ callableIdIfNonLocal = /F.peek
+ typeArgumentsMapping = {}
+ argumentMapping = {}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.kt b/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.kt
new file mode 100644
index 00000000000..43afeb9a29e
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.kt
@@ -0,0 +1,5 @@
+class FF {
+ fun handleLeftBracketInFragment() {
+ peek().braceBalance++
+ }
+}
\ No newline at end of file
diff --git a/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.txt b/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.txt
new file mode 100644
index 00000000000..2c3a0c85f8d
--- /dev/null
+++ b/analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.txt
@@ -0,0 +1,6 @@
+KT element: KtCallExpression
+FIR element: FirFunctionCallImpl
+FIR source kind: KtRealSourceElementKind
+
+FIR element rendered:
+#()
\ No newline at end of file
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 a7efa9c4948..e80f08ca688 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
@@ -619,6 +619,12 @@ public class OutOfContentRootGetOrBuildFirTestGenerated extends AbstractOutOfCon
runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/middlePartOfQualifiedCallWithNestedClasses.kt");
}
+ @Test
+ @TestMetadata("qualifiedPartOfQualifiedCallUnresolved.kt")
+ public void testQualifiedPartOfQualifiedCallUnresolved() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.kt");
+ }
+
@Test
@TestMetadata("qualifiedPartOfQualifiedCallWithNestedClasses.kt")
public void testQualifiedPartOfQualifiedCallWithNestedClasses() 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 5c47c14eddf..bb6d4edae38 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
@@ -619,6 +619,12 @@ public class SourceGetOrBuildFirTestGenerated extends AbstractSourceGetOrBuildFi
runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/middlePartOfQualifiedCallWithNestedClasses.kt");
}
+ @Test
+ @TestMetadata("qualifiedPartOfQualifiedCallUnresolved.kt")
+ public void testQualifiedPartOfQualifiedCallUnresolved() throws Exception {
+ runTest("analysis/low-level-api-fir/testdata/getOrBuildFir/qualifiedExpressions/qualifiedPartOfQualifiedCallUnresolved.kt");
+ }
+
@Test
@TestMetadata("qualifiedPartOfQualifiedCallWithNestedClasses.kt")
public void testQualifiedPartOfQualifiedCallWithNestedClasses() throws Exception {
diff --git a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
index d020505ae08..e21ff366f58 100644
--- a/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
+++ b/compiler/fir/raw-fir/raw-fir.common/src/org/jetbrains/kotlin/fir/builder/BaseFirBuilder.kt
@@ -703,7 +703,6 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte
prefix: Boolean,
convert: T.() -> FirExpression
): FirExpression {
- val argumentReceiver = receiverForOperation.receiverExpression // a
return buildBlockProbablyUnderSafeCall(
receiverForOperation,
convert,
@@ -720,7 +719,7 @@ abstract class BaseFirBuilder(val baseSession: FirSession, val context: Conte
val argumentReceiverVariable = generateTemporaryVariable(
baseModuleData,
- argumentReceiver?.toFirSourceElement(),
+ desugaredSource,
SpecialNames.RECEIVER,
initializer = receiverFir,
).also { statements += it }