Minor. Split ExpressionReceiver to interface & implementation
This commit is contained in:
+1
-1
@@ -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
|
||||
|
||||
+10
-5
@@ -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)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user