little fixes
This commit is contained in:
@@ -13,6 +13,7 @@ public class BindingContextUtils {
|
|||||||
private BindingContextUtils() {
|
private BindingContextUtils() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
public static PsiElement resolveToDeclarationPsiElement(BindingContext bindingContext, JetReferenceExpression referenceExpression) {
|
public static PsiElement resolveToDeclarationPsiElement(BindingContext bindingContext, JetReferenceExpression referenceExpression) {
|
||||||
DeclarationDescriptor declarationDescriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression);
|
DeclarationDescriptor declarationDescriptor = bindingContext.get(BindingContext.REFERENCE_TARGET, referenceExpression);
|
||||||
if (declarationDescriptor == null) {
|
if (declarationDescriptor == null) {
|
||||||
|
|||||||
-14
@@ -101,20 +101,6 @@ public class DataFlowValueFactory {
|
|||||||
return Pair.create(null, false);
|
return Pair.create(null, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
|
||||||
public static VariableDescriptor getVariableDescriptorFromSimpleName(@NotNull BindingContext bindingContext, @NotNull JetExpression expression) {
|
|
||||||
JetExpression receiver = JetPsiUtil.deparenthesize(expression);
|
|
||||||
VariableDescriptor variableDescriptor = null;
|
|
||||||
if (receiver instanceof JetSimpleNameExpression) {
|
|
||||||
JetSimpleNameExpression nameExpression = (JetSimpleNameExpression) receiver;
|
|
||||||
DeclarationDescriptor declarationDescriptor = bindingContext.get(REFERENCE_TARGET, nameExpression);
|
|
||||||
if (declarationDescriptor instanceof VariableDescriptor) {
|
|
||||||
variableDescriptor = (VariableDescriptor) declarationDescriptor;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return variableDescriptor;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static boolean isStableVariable(@NotNull VariableDescriptor variableDescriptor) {
|
public static boolean isStableVariable(@NotNull VariableDescriptor variableDescriptor) {
|
||||||
if (variableDescriptor.isVar()) return false;
|
if (variableDescriptor.isVar()) return false;
|
||||||
if (variableDescriptor instanceof PropertyDescriptor) {
|
if (variableDescriptor instanceof PropertyDescriptor) {
|
||||||
|
|||||||
+2
-1
@@ -11,6 +11,7 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor;
|
|||||||
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
import org.jetbrains.jet.lang.descriptors.VariableDescriptor;
|
||||||
import org.jetbrains.jet.lang.psi.JetExpression;
|
import org.jetbrains.jet.lang.psi.JetExpression;
|
||||||
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||||
|
import org.jetbrains.jet.lang.resolve.BindingContextUtils;
|
||||||
import org.jetbrains.jet.lang.resolve.TraceBasedRedeclarationHandler;
|
import org.jetbrains.jet.lang.resolve.TraceBasedRedeclarationHandler;
|
||||||
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValueFactory;
|
import org.jetbrains.jet.lang.resolve.calls.autocasts.DataFlowValueFactory;
|
||||||
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
|
import org.jetbrains.jet.lang.resolve.scopes.WritableScopeImpl;
|
||||||
@@ -102,7 +103,7 @@ public class ExpressionTypingUtils {
|
|||||||
public static void checkWrappingInRef(JetExpression expression, ExpressionTypingContext context) {
|
public static void checkWrappingInRef(JetExpression expression, ExpressionTypingContext context) {
|
||||||
if (!(expression instanceof JetSimpleNameExpression)) return;
|
if (!(expression instanceof JetSimpleNameExpression)) return;
|
||||||
JetSimpleNameExpression simpleName = (JetSimpleNameExpression) expression;
|
JetSimpleNameExpression simpleName = (JetSimpleNameExpression) expression;
|
||||||
VariableDescriptor variable = DataFlowValueFactory.getVariableDescriptorFromSimpleName(context.trace.getBindingContext(), simpleName);
|
VariableDescriptor variable = BindingContextUtils.extractVariableDescriptorIfAny(context.trace.getBindingContext(), simpleName, true);
|
||||||
if (variable != null) {
|
if (variable != null) {
|
||||||
DeclarationDescriptor containingDeclaration = variable.getContainingDeclaration();
|
DeclarationDescriptor containingDeclaration = variable.getContainingDeclaration();
|
||||||
if (context.scope.getContainingDeclaration() != containingDeclaration && containingDeclaration instanceof CallableDescriptor) {
|
if (context.scope.getContainingDeclaration() != containingDeclaration && containingDeclaration instanceof CallableDescriptor) {
|
||||||
|
|||||||
+1
-2
@@ -146,8 +146,7 @@ public class ExpressionTypingVisitorForStatements extends BasicExpressionTypingV
|
|||||||
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left;
|
JetArrayAccessExpression arrayAccessExpression = (JetArrayAccessExpression) left;
|
||||||
return resolveArrayAccessToLValue(arrayAccessExpression, right, expression.getOperationReference(), context);
|
return resolveArrayAccessToLValue(arrayAccessExpression, right, expression.getOperationReference(), context);
|
||||||
}
|
}
|
||||||
JetType leftType = left == null ? ErrorUtils.createErrorType("No expression")
|
JetType leftType = facade.getType(expression.getLeft(), context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE).replaceScope(scope));
|
||||||
: facade.getType(left, context.replaceExpectedType(TypeUtils.NO_EXPECTED_TYPE).replaceScope(scope));
|
|
||||||
if (right != null) {
|
if (right != null) {
|
||||||
JetType rightType = facade.getType(right, context.replaceExpectedType(leftType).replaceScope(scope));
|
JetType rightType = facade.getType(right, context.replaceExpectedType(leftType).replaceScope(scope));
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user