Errors fixed after merge
This commit is contained in:
@@ -129,7 +129,7 @@ public class FunctionCodegen {
|
|||||||
mv.visitMaxs(0, 0);
|
mv.visitMaxs(0, 0);
|
||||||
mv.visitEnd();
|
mv.visitEnd();
|
||||||
|
|
||||||
Set<? extends FunctionDescriptor> overriddenFunctions = functionDescriptor.getOverriddenFunctions();
|
Set<? extends FunctionDescriptor> overriddenFunctions = functionDescriptor.getOverriddenDescriptors();
|
||||||
if(overriddenFunctions.size() > 0) {
|
if(overriddenFunctions.size() > 0) {
|
||||||
for (FunctionDescriptor overriddenFunction : overriddenFunctions) {
|
for (FunctionDescriptor overriddenFunction : overriddenFunctions) {
|
||||||
// TODO should we check params here as well?
|
// TODO should we check params here as well?
|
||||||
|
|||||||
@@ -23,6 +23,10 @@ public interface BindingContext {
|
|||||||
WritableSlice<JetReferenceExpression, DeclarationDescriptor> REFERENCE_TARGET = new BasicWritableSlice<JetReferenceExpression, DeclarationDescriptor>("REFERENCE_TARGET", RewritePolicy.DO_NOTHING);
|
WritableSlice<JetReferenceExpression, DeclarationDescriptor> REFERENCE_TARGET = new BasicWritableSlice<JetReferenceExpression, DeclarationDescriptor>("REFERENCE_TARGET", RewritePolicy.DO_NOTHING);
|
||||||
WritableSlice<JetReferenceExpression, Collection<? extends DeclarationDescriptor>> AMBIGUOUS_REFERENCE_TARGET = new BasicWritableSlice<JetReferenceExpression, Collection<? extends DeclarationDescriptor>>("AMBIGUOUS_REFERENCE_TARGET", RewritePolicy.DO_NOTHING);
|
WritableSlice<JetReferenceExpression, Collection<? extends DeclarationDescriptor>> AMBIGUOUS_REFERENCE_TARGET = new BasicWritableSlice<JetReferenceExpression, Collection<? extends DeclarationDescriptor>>("AMBIGUOUS_REFERENCE_TARGET", RewritePolicy.DO_NOTHING);
|
||||||
|
|
||||||
|
WritableSlice<JetExpression, FunctionDescriptor> LOOP_RANGE_ITERATOR = Slices.createSimpleSlice("LOOP_RANGE_ITERATOR");
|
||||||
|
WritableSlice<JetExpression, DeclarationDescriptor> LOOP_RANGE_HAS_NEXT = Slices.createSimpleSlice("LOOP_RANGE_HAS_NEXT");
|
||||||
|
WritableSlice<JetExpression, FunctionDescriptor> LOOP_RANGE_NEXT = Slices.createSimpleSlice("LOOP_RANGE_NEXT");
|
||||||
|
|
||||||
WritableSlice<JetExpression, JetType> AUTOCAST = Slices.createSimpleSlice("AUTOCAST");
|
WritableSlice<JetExpression, JetType> AUTOCAST = Slices.createSimpleSlice("AUTOCAST");
|
||||||
WritableSlice<JetExpression, JetScope> RESOLUTION_SCOPE = Slices.createSimpleSlice("RESOLUTION_SCOPE");
|
WritableSlice<JetExpression, JetScope> RESOLUTION_SCOPE = Slices.createSimpleSlice("RESOLUTION_SCOPE");
|
||||||
|
|
||||||
|
|||||||
@@ -1057,19 +1057,19 @@ public class JetTypeInferrer {
|
|||||||
JetType targetType = context.typeResolver.resolveType(context.scope, right);
|
JetType targetType = context.typeResolver.resolveType(context.scope, right);
|
||||||
|
|
||||||
if (isTypeFlexible(expression.getLeft())) {
|
if (isTypeFlexible(expression.getLeft())) {
|
||||||
TemporaryBindingTrace temporaryTraceWithExpectedType = new TemporaryBindingTrace(context.trace.getBindingContext());
|
TemporaryBindingTrace temporaryTraceWithExpectedType = TemporaryBindingTrace.create(context.trace);
|
||||||
boolean success = checkBinaryWithTypeRHS(expression, context, targetType, targetType, temporaryTraceWithExpectedType);
|
boolean success = checkBinaryWithTypeRHS(expression, context, targetType, targetType, temporaryTraceWithExpectedType);
|
||||||
if (success) {
|
if (success) {
|
||||||
temporaryTraceWithExpectedType.addAllMyDataTo(context.trace);
|
temporaryTraceWithExpectedType.addAllMyDataTo(context.trace);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TemporaryBindingTrace temporaryTraceWithoutExpectedType = new TemporaryBindingTrace(context.trace.getBindingContext());
|
TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace);
|
||||||
checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType);
|
checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType);
|
||||||
temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace);
|
temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
TemporaryBindingTrace temporaryTraceWithoutExpectedType = new TemporaryBindingTrace(context.trace.getBindingContext());
|
TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace);
|
||||||
checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType);
|
checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType);
|
||||||
temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace);
|
temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace);
|
||||||
}
|
}
|
||||||
@@ -1078,7 +1078,7 @@ public class JetTypeInferrer {
|
|||||||
result = operationType == JetTokens.AS_SAFE ? TypeUtils.makeNullable(targetType) : targetType;
|
result = operationType == JetTokens.AS_SAFE ? TypeUtils.makeNullable(targetType) : targetType;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
getType(context.scope, expression.getLeft(), false, context.replaceExpectedType(NO_EXPECTED_TYPE));
|
getType(expression.getLeft(), context.replaceExpectedType(NO_EXPECTED_TYPE));
|
||||||
}
|
}
|
||||||
return context.services.checkType(result, expression, context);
|
return context.services.checkType(result, expression, context);
|
||||||
}
|
}
|
||||||
@@ -1095,7 +1095,7 @@ public class JetTypeInferrer {
|
|||||||
private boolean checkBinaryWithTypeRHS(JetBinaryExpressionWithTypeRHS expression, TypeInferenceContext context, @NotNull JetType targetType, @NotNull JetType expectedType, TemporaryBindingTrace temporaryTrace) {
|
private boolean checkBinaryWithTypeRHS(JetBinaryExpressionWithTypeRHS expression, TypeInferenceContext context, @NotNull JetType targetType, @NotNull JetType expectedType, TemporaryBindingTrace temporaryTrace) {
|
||||||
TypeInferenceContext newContext = context.replaceExpectedTypeAndTrace(expectedType, temporaryTrace);
|
TypeInferenceContext newContext = context.replaceExpectedTypeAndTrace(expectedType, temporaryTrace);
|
||||||
|
|
||||||
JetType actualType = getType(context.scope, expression.getLeft(), false, newContext);
|
JetType actualType = getType(expression.getLeft(), newContext);
|
||||||
if (actualType == null) return false;
|
if (actualType == null) return false;
|
||||||
|
|
||||||
JetSimpleNameExpression operationSign = expression.getOperationSign();
|
JetSimpleNameExpression operationSign = expression.getOperationSign();
|
||||||
@@ -1812,9 +1812,9 @@ public class JetTypeInferrer {
|
|||||||
@Nullable
|
@Nullable
|
||||||
private JetType checkIterableConvention(@NotNull JetType type, @NotNull JetExpression loopRange, TypeInferenceContext context) {
|
private JetType checkIterableConvention(@NotNull JetType type, @NotNull JetExpression loopRange, TypeInferenceContext context) {
|
||||||
ASTNode reportErrorsOn = loopRange.getNode();
|
ASTNode reportErrorsOn = loopRange.getNode();
|
||||||
OverloadResolutionResult iteratorResolutionResult = context.services.resolveNoParametersFunction(type, context.scope, "iterator");
|
OverloadResolutionResult<FunctionDescriptor> iteratorResolutionResult = context.services.callResolver.resolveExactSignature(context.scope, type, "iterator", Collections.<JetType>emptyList());
|
||||||
if (iteratorResolutionResult.isSuccess()) {
|
if (iteratorResolutionResult.isSuccess()) {
|
||||||
FunctionDescriptor iteratorFunction = iteratorResolutionResult.getFunctionDescriptor();
|
FunctionDescriptor iteratorFunction = iteratorResolutionResult.getDescriptor();
|
||||||
|
|
||||||
context.trace.record(LOOP_RANGE_ITERATOR, loopRange, iteratorFunction);
|
context.trace.record(LOOP_RANGE_ITERATOR, loopRange, iteratorFunction);
|
||||||
|
|
||||||
@@ -1840,7 +1840,7 @@ public class JetTypeInferrer {
|
|||||||
} else if (nextResolutionResult.isNothing()) {
|
} else if (nextResolutionResult.isNothing()) {
|
||||||
context.trace.getErrorHandler().genericError(reportErrorsOn, "Loop range must have an 'iterator().next()' method");
|
context.trace.getErrorHandler().genericError(reportErrorsOn, "Loop range must have an 'iterator().next()' method");
|
||||||
} else {
|
} else {
|
||||||
FunctionDescriptor nextFunction = nextResolutionResult.getFunctionDescriptor();
|
FunctionDescriptor nextFunction = nextResolutionResult.getDescriptor();
|
||||||
context.trace.record(LOOP_RANGE_NEXT, loopRange, nextFunction);
|
context.trace.record(LOOP_RANGE_NEXT, loopRange, nextFunction);
|
||||||
return nextFunction.getReturnType();
|
return nextFunction.getReturnType();
|
||||||
}
|
}
|
||||||
@@ -1857,19 +1857,19 @@ public class JetTypeInferrer {
|
|||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private FunctionDescriptor checkHasNextFunctionSupport(@NotNull JetExpression loopRange, @NotNull JetType iteratorType, TypeInferenceContext context) {
|
private FunctionDescriptor checkHasNextFunctionSupport(@NotNull JetExpression loopRange, @NotNull JetType iteratorType, TypeInferenceContext context) {
|
||||||
OverloadResolutionResult hasNextResolutionResult = context.services.resolveNoParametersFunction(iteratorType, context.scope, "hasNext");
|
OverloadResolutionResult<FunctionDescriptor> hasNextResolutionResult = context.services.callResolver.resolveExactSignature(context.scope, iteratorType, "hasNext", Collections.<JetType>emptyList());
|
||||||
if (hasNextResolutionResult.isAmbiguity()) {
|
if (hasNextResolutionResult.isAmbiguity()) {
|
||||||
context.trace.getErrorHandler().genericError(loopRange.getNode(), "Method 'iterator().hasNext()' is ambiguous for this expression");
|
context.trace.getErrorHandler().genericError(loopRange.getNode(), "Method 'iterator().hasNext()' is ambiguous for this expression");
|
||||||
} else if (hasNextResolutionResult.isNothing()) {
|
} else if (hasNextResolutionResult.isNothing()) {
|
||||||
return null;
|
return null;
|
||||||
} else {
|
} else {
|
||||||
assert hasNextResolutionResult.isSuccess();
|
assert hasNextResolutionResult.isSuccess();
|
||||||
JetType hasNextReturnType = hasNextResolutionResult.getFunctionDescriptor().getReturnType();
|
JetType hasNextReturnType = hasNextResolutionResult.getDescriptor().getReturnType();
|
||||||
if (!isBoolean(hasNextReturnType)) {
|
if (!isBoolean(hasNextReturnType)) {
|
||||||
context.trace.getErrorHandler().genericError(loopRange.getNode(), "The 'iterator().hasNext()' method of the loop range must return Boolean, but returns " + hasNextReturnType);
|
context.trace.getErrorHandler().genericError(loopRange.getNode(), "The 'iterator().hasNext()' method of the loop range must return Boolean, but returns " + hasNextReturnType);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return hasNextResolutionResult.getFunctionDescriptor();
|
return hasNextResolutionResult.getDescriptor();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package org.jetbrains.jet.plugin.structureView;
|
|||||||
import com.intellij.ide.structureView.StructureViewTreeElement;
|
import com.intellij.ide.structureView.StructureViewTreeElement;
|
||||||
import com.intellij.ide.util.treeView.smartTree.TreeElement;
|
import com.intellij.ide.util.treeView.smartTree.TreeElement;
|
||||||
import com.intellij.navigation.ItemPresentation;
|
import com.intellij.navigation.ItemPresentation;
|
||||||
import com.intellij.openapi.editor.colors.TextAttributesKey;
|
|
||||||
import com.intellij.openapi.util.Iconable;
|
import com.intellij.openapi.util.Iconable;
|
||||||
import com.intellij.openapi.util.text.StringUtil;
|
import com.intellij.openapi.util.text.StringUtil;
|
||||||
import com.intellij.psi.NavigatablePsiElement;
|
import com.intellij.psi.NavigatablePsiElement;
|
||||||
@@ -69,11 +68,6 @@ public class JetStructureViewElement implements StructureViewTreeElement {
|
|||||||
? PsiIconUtil.getProvidersIcon(myElement, open ? Iconable.ICON_FLAG_OPEN : Iconable.ICON_FLAG_CLOSED)
|
? PsiIconUtil.getProvidersIcon(myElement, open ? Iconable.ICON_FLAG_OPEN : Iconable.ICON_FLAG_CLOSED)
|
||||||
: null;
|
: null;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public TextAttributesKey getTextAttributesKey() {
|
|
||||||
return null; //To change body of implemented methods use File | Settings | File Templates.
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user