diff --git a/idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java b/idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java index 072be3d077a..5f3b7e0339b 100644 --- a/idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java +++ b/idea/src/org/jetbrains/jet/codegen/FunctionCodegen.java @@ -129,7 +129,7 @@ public class FunctionCodegen { mv.visitMaxs(0, 0); mv.visitEnd(); - Set overriddenFunctions = functionDescriptor.getOverriddenFunctions(); + Set overriddenFunctions = functionDescriptor.getOverriddenDescriptors(); if(overriddenFunctions.size() > 0) { for (FunctionDescriptor overriddenFunction : overriddenFunctions) { // TODO should we check params here as well? diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java index 01244223f3e..b0bd7da0971 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -23,6 +23,10 @@ public interface BindingContext { WritableSlice REFERENCE_TARGET = new BasicWritableSlice("REFERENCE_TARGET", RewritePolicy.DO_NOTHING); WritableSlice> AMBIGUOUS_REFERENCE_TARGET = new BasicWritableSlice>("AMBIGUOUS_REFERENCE_TARGET", RewritePolicy.DO_NOTHING); + WritableSlice LOOP_RANGE_ITERATOR = Slices.createSimpleSlice("LOOP_RANGE_ITERATOR"); + WritableSlice LOOP_RANGE_HAS_NEXT = Slices.createSimpleSlice("LOOP_RANGE_HAS_NEXT"); + WritableSlice LOOP_RANGE_NEXT = Slices.createSimpleSlice("LOOP_RANGE_NEXT"); + WritableSlice AUTOCAST = Slices.createSimpleSlice("AUTOCAST"); WritableSlice RESOLUTION_SCOPE = Slices.createSimpleSlice("RESOLUTION_SCOPE"); diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index f53eabef481..a87f72308f4 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1057,19 +1057,19 @@ public class JetTypeInferrer { JetType targetType = context.typeResolver.resolveType(context.scope, right); 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); if (success) { temporaryTraceWithExpectedType.addAllMyDataTo(context.trace); } else { - TemporaryBindingTrace temporaryTraceWithoutExpectedType = new TemporaryBindingTrace(context.trace.getBindingContext()); + TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace); checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType); temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace); } } else { - TemporaryBindingTrace temporaryTraceWithoutExpectedType = new TemporaryBindingTrace(context.trace.getBindingContext()); + TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace); checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType); temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace); } @@ -1078,7 +1078,7 @@ public class JetTypeInferrer { result = operationType == JetTokens.AS_SAFE ? TypeUtils.makeNullable(targetType) : targetType; } 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); } @@ -1095,7 +1095,7 @@ public class JetTypeInferrer { private boolean checkBinaryWithTypeRHS(JetBinaryExpressionWithTypeRHS expression, TypeInferenceContext context, @NotNull JetType targetType, @NotNull JetType expectedType, TemporaryBindingTrace 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; JetSimpleNameExpression operationSign = expression.getOperationSign(); @@ -1812,9 +1812,9 @@ public class JetTypeInferrer { @Nullable private JetType checkIterableConvention(@NotNull JetType type, @NotNull JetExpression loopRange, TypeInferenceContext context) { ASTNode reportErrorsOn = loopRange.getNode(); - OverloadResolutionResult iteratorResolutionResult = context.services.resolveNoParametersFunction(type, context.scope, "iterator"); + OverloadResolutionResult iteratorResolutionResult = context.services.callResolver.resolveExactSignature(context.scope, type, "iterator", Collections.emptyList()); if (iteratorResolutionResult.isSuccess()) { - FunctionDescriptor iteratorFunction = iteratorResolutionResult.getFunctionDescriptor(); + FunctionDescriptor iteratorFunction = iteratorResolutionResult.getDescriptor(); context.trace.record(LOOP_RANGE_ITERATOR, loopRange, iteratorFunction); @@ -1840,7 +1840,7 @@ public class JetTypeInferrer { } else if (nextResolutionResult.isNothing()) { context.trace.getErrorHandler().genericError(reportErrorsOn, "Loop range must have an 'iterator().next()' method"); } else { - FunctionDescriptor nextFunction = nextResolutionResult.getFunctionDescriptor(); + FunctionDescriptor nextFunction = nextResolutionResult.getDescriptor(); context.trace.record(LOOP_RANGE_NEXT, loopRange, nextFunction); return nextFunction.getReturnType(); } @@ -1857,19 +1857,19 @@ public class JetTypeInferrer { @Nullable private FunctionDescriptor checkHasNextFunctionSupport(@NotNull JetExpression loopRange, @NotNull JetType iteratorType, TypeInferenceContext context) { - OverloadResolutionResult hasNextResolutionResult = context.services.resolveNoParametersFunction(iteratorType, context.scope, "hasNext"); + OverloadResolutionResult hasNextResolutionResult = context.services.callResolver.resolveExactSignature(context.scope, iteratorType, "hasNext", Collections.emptyList()); if (hasNextResolutionResult.isAmbiguity()) { context.trace.getErrorHandler().genericError(loopRange.getNode(), "Method 'iterator().hasNext()' is ambiguous for this expression"); } else if (hasNextResolutionResult.isNothing()) { return null; } else { assert hasNextResolutionResult.isSuccess(); - JetType hasNextReturnType = hasNextResolutionResult.getFunctionDescriptor().getReturnType(); + JetType hasNextReturnType = hasNextResolutionResult.getDescriptor().getReturnType(); if (!isBoolean(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 diff --git a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java index cba16e62868..e398c7d605a 100644 --- a/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java +++ b/idea/src/org/jetbrains/jet/plugin/structureView/JetStructureViewElement.java @@ -3,7 +3,6 @@ package org.jetbrains.jet.plugin.structureView; import com.intellij.ide.structureView.StructureViewTreeElement; import com.intellij.ide.util.treeView.smartTree.TreeElement; import com.intellij.navigation.ItemPresentation; -import com.intellij.openapi.editor.colors.TextAttributesKey; import com.intellij.openapi.util.Iconable; import com.intellij.openapi.util.text.StringUtil; 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) : null; } - - @Override - public TextAttributesKey getTextAttributesKey() { - return null; //To change body of implemented methods use File | Settings | File Templates. - } }; }