diff --git a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionReferenceGenerationStrategy.java b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionReferenceGenerationStrategy.java index b89d4845125..615978606b4 100644 --- a/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionReferenceGenerationStrategy.java +++ b/compiler/backend/src/org/jetbrains/kotlin/codegen/FunctionReferenceGenerationStrategy.java @@ -167,7 +167,7 @@ public class FunctionReferenceGenerationStrategy extends FunctionGenerationStrat KtExpression receiverExpression = KtPsiFactoryKt .KtPsiFactory(state.getProject()).createExpression("callableReferenceFakeReceiver"); codegen.tempVariables.put(receiverExpression, receiverParameterStackValue(signature)); - return new ExpressionReceiver(receiverExpression, receiver.getType()); + return new ExpressionReceiver.Companion.ExpressionReceiverImpl(receiverExpression, receiver.getType()); } @NotNull diff --git a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExpressionReceiver.kt b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExpressionReceiver.kt index faf54a70814..a310ce13b67 100644 --- a/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExpressionReceiver.kt +++ b/compiler/frontend/src/org/jetbrains/kotlin/resolve/scopes/receivers/ExpressionReceiver.kt @@ -20,17 +20,22 @@ import org.jetbrains.kotlin.psi.KtExpression import org.jetbrains.kotlin.resolve.BindingContext import org.jetbrains.kotlin.types.KotlinType -class ExpressionReceiver(val expression: KtExpression, type: KotlinType) : AbstractReceiverValue(type), ReceiverValue { - - override fun toString() = "$type {$expression: ${expression.text}}" +interface ExpressionReceiver : ReceiverValue { + val expression: KtExpression companion object { + class ExpressionReceiverImpl( + override val expression: KtExpression, type: KotlinType + ): AbstractReceiverValue(type), ExpressionReceiver { + override fun toString() = "$type {$expression: ${expression.text}}" + } fun create( expression: KtExpression, type: KotlinType, - bindingContext: BindingContext): ExpressionReceiver { - return ExpressionReceiver(expression, type) + bindingContext: BindingContext + ): ExpressionReceiver { + return ExpressionReceiverImpl(expression, type) } } } diff --git a/compiler/tests/org/jetbrains/kotlin/types/KotlinTypeCheckerTest.java b/compiler/tests/org/jetbrains/kotlin/types/KotlinTypeCheckerTest.java index 4748d6a9637..e8585f96b75 100644 --- a/compiler/tests/org/jetbrains/kotlin/types/KotlinTypeCheckerTest.java +++ b/compiler/tests/org/jetbrains/kotlin/types/KotlinTypeCheckerTest.java @@ -558,7 +558,7 @@ public class KotlinTypeCheckerTest extends KotlinLiteFixture { KotlinType thisType = makeType(contextType); ReceiverParameterDescriptorImpl receiverParameterDescriptor = new ReceiverParameterDescriptorImpl( scopeWithImports.getOwnerDescriptor(), - new ExpressionReceiver(KtPsiFactoryKt.KtPsiFactory(getProject()).createExpression(expression), thisType) + new ExpressionReceiver.Companion.ExpressionReceiverImpl(KtPsiFactoryKt.KtPsiFactory(getProject()).createExpression(expression), thisType) ); LexicalScope scope = new LexicalScopeImpl(scopeWithImports, scopeWithImports.getOwnerDescriptor(), false,