Skip to content

Commit a17fc51

Browse files
committed
Fix receiver inconsistency when builder inference restriction disabled
In 154e53c update of extensionReceiverArgument in resolvedCall was accidentally moved into language feature dependant block
1 parent f0fd2cf commit a17fc51

6 files changed

Lines changed: 52 additions & 13 deletions

File tree

analysis/low-level-api-fir/tests/org/jetbrains/kotlin/analysis/low/level/api/fir/diagnostic/compiler/based/DiagnosisCompilerTestFE10TestdataTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/fir/analysis-tests/tests-gen/org/jetbrains/kotlin/test/runners/FirOldFrontendDiagnosticsWithLightTreeTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

compiler/resolution/src/org/jetbrains/kotlin/resolve/calls/components/ResolutionParts.kt

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -664,23 +664,23 @@ internal object CheckReceivers : ResolutionPart() {
664664
)
665665

666666
1 -> {
667+
var extensionReceiverArgument = resolvedCall.extensionReceiverArgument
668+
if (extensionReceiverArgument == null) {
669+
extensionReceiverArgument = chooseExtensionReceiverCandidate() ?: return
670+
resolvedCall.extensionReceiverArgument = extensionReceiverArgument
671+
}
667672
val checkBuilderInferenceRestriction =
668673
!callComponents.languageVersionSettings
669674
.supportsFeature(LanguageFeature.NoBuilderInferenceWithoutAnnotationRestriction)
670-
if (checkBuilderInferenceRestriction) {
671-
var extensionReceiverArgument = resolvedCall.extensionReceiverArgument
672-
if (extensionReceiverArgument == null) {
673-
extensionReceiverArgument = chooseExtensionReceiverCandidate() ?: return
674-
resolvedCall.extensionReceiverArgument = extensionReceiverArgument
675-
}
676-
if (extensionReceiverArgument.receiver.receiverValue.type is StubTypeForBuilderInference) {
677-
addDiagnostic(
678-
StubBuilderInferenceReceiver(
679-
extensionReceiverArgument,
680-
candidateDescriptor.extensionReceiverParameter!!
681-
)
675+
if (checkBuilderInferenceRestriction &&
676+
extensionReceiverArgument.receiver.receiverValue.type is StubTypeForBuilderInference
677+
) {
678+
addDiagnostic(
679+
StubBuilderInferenceReceiver(
680+
extensionReceiverArgument,
681+
candidateDescriptor.extensionReceiverParameter!!
682682
)
683-
}
683+
)
684684
}
685685
checkReceiver(
686686
resolvedCall.extensionReceiverArgument,
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
// FIR_IDENTICAL
2+
// SKIP_TXT
3+
// WITH_STDLIB
4+
// LANGUAGE: +NoBuilderInferenceWithoutAnnotationRestriction
5+
6+
class A
7+
class B
8+
9+
var B.foo: Boolean
10+
get() = true
11+
set(value) {}
12+
13+
private fun A.bar(b: B) {
14+
b.foo = true
15+
}

compiler/tests-common-new/tests-gen/org/jetbrains/kotlin/test/runners/DiagnosticTestGenerated.java

Lines changed: 6 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)