From 6b7bf6381487f1b8254deb4414306f9fb7d77576 Mon Sep 17 00:00:00 2001 From: Stanislav Erokhin Date: Sun, 15 Nov 2015 22:51:02 +0300 Subject: [PATCH] Minor. Split ExpressionReceiver to interface & implementation --- .../FunctionReferenceGenerationStrategy.java | 2 +- .../scopes/receivers/ExpressionReceiver.kt | 15 ++++++++++----- .../kotlin/types/KotlinTypeCheckerTest.java | 2 +- 3 files changed, 12 insertions(+), 7 deletions(-) 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,