Minor, use ExpressionTypingContext in CallExpressionResolver
Will be needed to use expression-typing-specific things
This commit is contained in:
+11
-11
@@ -43,6 +43,7 @@ import org.jetbrains.jet.lang.resolve.scopes.receivers.ExpressionReceiver;
|
|||||||
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
import org.jetbrains.jet.lang.resolve.scopes.receivers.ReceiverValue;
|
||||||
import org.jetbrains.jet.lang.types.*;
|
import org.jetbrains.jet.lang.types.*;
|
||||||
import org.jetbrains.jet.lang.types.expressions.DataFlowUtils;
|
import org.jetbrains.jet.lang.types.expressions.DataFlowUtils;
|
||||||
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingContext;
|
||||||
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
import org.jetbrains.jet.lang.types.expressions.ExpressionTypingServices;
|
||||||
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
import org.jetbrains.jet.lang.types.lang.KotlinBuiltIns;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
@@ -71,7 +72,7 @@ public class CallExpressionResolver {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private JetType lookupNamespaceOrClassObject(@NotNull JetSimpleNameExpression expression, @NotNull ResolutionContext context) {
|
private JetType lookupNamespaceOrClassObject(@NotNull JetSimpleNameExpression expression, @NotNull ExpressionTypingContext context) {
|
||||||
Name referencedName = expression.getReferencedNameAsName();
|
Name referencedName = expression.getReferencedNameAsName();
|
||||||
final ClassifierDescriptor classifier = context.scope.getClassifier(referencedName);
|
final ClassifierDescriptor classifier = context.scope.getClassifier(referencedName);
|
||||||
if (classifier != null) {
|
if (classifier != null) {
|
||||||
@@ -133,7 +134,7 @@ public class CallExpressionResolver {
|
|||||||
private static void checkClassObjectVisibility(
|
private static void checkClassObjectVisibility(
|
||||||
@NotNull ClassifierDescriptor classifier,
|
@NotNull ClassifierDescriptor classifier,
|
||||||
@NotNull JetSimpleNameExpression expression,
|
@NotNull JetSimpleNameExpression expression,
|
||||||
@NotNull ResolutionContext context
|
@NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
if (!(classifier instanceof ClassDescriptor)) return;
|
if (!(classifier instanceof ClassDescriptor)) return;
|
||||||
ClassDescriptor classObject = ((ClassDescriptor) classifier).getClassObjectDescriptor();
|
ClassDescriptor classObject = ((ClassDescriptor) classifier).getClassObjectDescriptor();
|
||||||
@@ -235,7 +236,7 @@ public class CallExpressionResolver {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private JetType getVariableType(@NotNull JetSimpleNameExpression nameExpression, @NotNull ReceiverValue receiver,
|
private JetType getVariableType(@NotNull JetSimpleNameExpression nameExpression, @NotNull ReceiverValue receiver,
|
||||||
@Nullable ASTNode callOperationNode, @NotNull ResolutionContext context, @NotNull boolean[] result
|
@Nullable ASTNode callOperationNode, @NotNull ExpressionTypingContext context, @NotNull boolean[] result
|
||||||
) {
|
) {
|
||||||
TemporaryTraceAndCache temporaryForVariable = TemporaryTraceAndCache.create(
|
TemporaryTraceAndCache temporaryForVariable = TemporaryTraceAndCache.create(
|
||||||
context, "trace to resolve as local variable or property", nameExpression);
|
context, "trace to resolve as local variable or property", nameExpression);
|
||||||
@@ -252,7 +253,7 @@ public class CallExpressionResolver {
|
|||||||
return resolutionResult.isSingleResult() ? resolutionResult.getResultingDescriptor().getReturnType() : null;
|
return resolutionResult.isSingleResult() ? resolutionResult.getResultingDescriptor().getReturnType() : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
ResolutionContext newContext = receiver.exists()
|
ExpressionTypingContext newContext = receiver.exists()
|
||||||
? context.replaceScope(receiver.getType().getMemberScope())
|
? context.replaceScope(receiver.getType().getMemberScope())
|
||||||
: context;
|
: context;
|
||||||
TemporaryTraceAndCache temporaryForNamespaceOrClassObject = TemporaryTraceAndCache.create(
|
TemporaryTraceAndCache temporaryForNamespaceOrClassObject = TemporaryTraceAndCache.create(
|
||||||
@@ -276,7 +277,7 @@ public class CallExpressionResolver {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetTypeInfo getSimpleNameExpressionTypeInfo(@NotNull JetSimpleNameExpression nameExpression, @NotNull ReceiverValue receiver,
|
public JetTypeInfo getSimpleNameExpressionTypeInfo(@NotNull JetSimpleNameExpression nameExpression, @NotNull ReceiverValue receiver,
|
||||||
@Nullable ASTNode callOperationNode, @NotNull ResolutionContext context
|
@Nullable ASTNode callOperationNode, @NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
boolean[] result = new boolean[1];
|
boolean[] result = new boolean[1];
|
||||||
|
|
||||||
@@ -313,10 +314,9 @@ public class CallExpressionResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public JetTypeInfo getCallExpressionTypeInfo(
|
public JetTypeInfo getCallExpressionTypeInfo(
|
||||||
@NotNull JetCallExpression callExpression, @NotNull ReceiverValue receiver,
|
@NotNull JetCallExpression callExpression, @NotNull ReceiverValue receiver,
|
||||||
@Nullable ASTNode callOperationNode, @NotNull ResolutionContext context
|
@Nullable ASTNode callOperationNode, @NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck(
|
JetTypeInfo typeInfo = getCallExpressionTypeInfoWithoutFinalTypeCheck(callExpression, receiver, callOperationNode, context);
|
||||||
callExpression, receiver, callOperationNode, context);
|
|
||||||
if (context.contextDependency == INDEPENDENT) {
|
if (context.contextDependency == INDEPENDENT) {
|
||||||
DataFlowUtils.checkType(typeInfo, callExpression, context);
|
DataFlowUtils.checkType(typeInfo, callExpression, context);
|
||||||
}
|
}
|
||||||
@@ -326,7 +326,7 @@ public class CallExpressionResolver {
|
|||||||
@NotNull
|
@NotNull
|
||||||
public JetTypeInfo getCallExpressionTypeInfoWithoutFinalTypeCheck(
|
public JetTypeInfo getCallExpressionTypeInfoWithoutFinalTypeCheck(
|
||||||
@NotNull JetCallExpression callExpression, @NotNull ReceiverValue receiver,
|
@NotNull JetCallExpression callExpression, @NotNull ReceiverValue receiver,
|
||||||
@Nullable ASTNode callOperationNode, @NotNull ResolutionContext context
|
@Nullable ASTNode callOperationNode, @NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
boolean[] result = new boolean[1];
|
boolean[] result = new boolean[1];
|
||||||
Call call = CallMaker.makeCall(receiver, callOperationNode, callExpression);
|
Call call = CallMaker.makeCall(receiver, callOperationNode, callExpression);
|
||||||
@@ -387,7 +387,7 @@ public class CallExpressionResolver {
|
|||||||
@NotNull ReceiverValue receiver,
|
@NotNull ReceiverValue receiver,
|
||||||
@Nullable ASTNode callOperationNode,
|
@Nullable ASTNode callOperationNode,
|
||||||
@NotNull JetExpression selectorExpression,
|
@NotNull JetExpression selectorExpression,
|
||||||
@NotNull ResolutionContext context
|
@NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
if (selectorExpression instanceof JetCallExpression) {
|
if (selectorExpression instanceof JetCallExpression) {
|
||||||
return getCallExpressionTypeInfoWithoutFinalTypeCheck((JetCallExpression) selectorExpression, receiver,
|
return getCallExpressionTypeInfoWithoutFinalTypeCheck((JetCallExpression) selectorExpression, receiver,
|
||||||
@@ -404,7 +404,7 @@ public class CallExpressionResolver {
|
|||||||
|
|
||||||
@NotNull
|
@NotNull
|
||||||
public JetTypeInfo getQualifiedExpressionTypeInfo(
|
public JetTypeInfo getQualifiedExpressionTypeInfo(
|
||||||
@NotNull JetQualifiedExpression expression, @NotNull ResolutionContext context
|
@NotNull JetQualifiedExpression expression, @NotNull ExpressionTypingContext context
|
||||||
) {
|
) {
|
||||||
// TODO : functions as values
|
// TODO : functions as values
|
||||||
JetExpression selectorExpression = expression.getSelectorExpression();
|
JetExpression selectorExpression = expression.getSelectorExpression();
|
||||||
|
|||||||
Reference in New Issue
Block a user