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
|
KtExpression receiverExpression = KtPsiFactoryKt
|
||||||
.KtPsiFactory(state.getProject()).createExpression("callableReferenceFakeReceiver");
|
.KtPsiFactory(state.getProject()).createExpression("callableReferenceFakeReceiver");
|
||||||
codegen.tempVariables.put(receiverExpression, receiverParameterStackValue(signature));
|
codegen.tempVariables.put(receiverExpression, receiverParameterStackValue(signature));
|
||||||
return new ExpressionReceiver(receiverExpression, receiver.getType());
|
return new ExpressionReceiver.Companion.ExpressionReceiverImpl(receiverExpression, receiver.getType());
|
||||||
}
|
}
|
||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
|
|||||||
+10
-5
@@ -20,17 +20,22 @@ import org.jetbrains.kotlin.psi.KtExpression
|
|||||||
import org.jetbrains.kotlin.resolve.BindingContext
|
import org.jetbrains.kotlin.resolve.BindingContext
|
||||||
import org.jetbrains.kotlin.types.KotlinType
|
import org.jetbrains.kotlin.types.KotlinType
|
||||||
|
|
||||||
class ExpressionReceiver(val expression: KtExpression, type: KotlinType) : AbstractReceiverValue(type), ReceiverValue {
|
interface ExpressionReceiver : ReceiverValue {
|
||||||
|
val expression: KtExpression
|
||||||
override fun toString() = "$type {$expression: ${expression.text}}"
|
|
||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
|
class ExpressionReceiverImpl(
|
||||||
|
override val expression: KtExpression, type: KotlinType
|
||||||
|
): AbstractReceiverValue(type), ExpressionReceiver {
|
||||||
|
override fun toString() = "$type {$expression: ${expression.text}}"
|
||||||
|
}
|
||||||
|
|
||||||
fun create(
|
fun create(
|
||||||
expression: KtExpression,
|
expression: KtExpression,
|
||||||
type: KotlinType,
|
type: KotlinType,
|
||||||
bindingContext: BindingContext): ExpressionReceiver {
|
bindingContext: BindingContext
|
||||||
return ExpressionReceiver(expression, type)
|
): ExpressionReceiver {
|
||||||
|
return ExpressionReceiverImpl(expression, type)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -558,7 +558,7 @@ public class KotlinTypeCheckerTest extends KotlinLiteFixture {
|
|||||||
KotlinType thisType = makeType(contextType);
|
KotlinType thisType = makeType(contextType);
|
||||||
ReceiverParameterDescriptorImpl receiverParameterDescriptor = new ReceiverParameterDescriptorImpl(
|
ReceiverParameterDescriptorImpl receiverParameterDescriptor = new ReceiverParameterDescriptorImpl(
|
||||||
scopeWithImports.getOwnerDescriptor(),
|
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,
|
LexicalScope scope = new LexicalScopeImpl(scopeWithImports, scopeWithImports.getOwnerDescriptor(), false,
|
||||||
|
|||||||
Reference in New Issue
Block a user