diff --git a/idea/src/org/jetbrains/jet/lang/ErrorHandler.java b/idea/src/org/jetbrains/jet/lang/ErrorHandler.java index b14ce13cc5f..744eb9a2679 100644 --- a/idea/src/org/jetbrains/jet/lang/ErrorHandler.java +++ b/idea/src/org/jetbrains/jet/lang/ErrorHandler.java @@ -37,6 +37,16 @@ public class ErrorHandler { throw new IllegalStateException("Redeclaration: " + existingDescriptor.getName()); } }; + public static String atLocation(PsiElement element) { + Document document = PsiDocumentManager.getInstance(element.getProject()).getDocument(element.getContainingFile()); + int offset = element.getTextRange().getStartOffset(); + int lineNumber = document.getLineNumber(offset); + int lineStartOffset = document.getLineStartOffset(lineNumber); + int column = offset - lineStartOffset; + + return "' at line " + (lineNumber+1) + ":" + column; + } + public void unresolvedReference(@NotNull JetReferenceExpression referenceExpression) { } @@ -52,14 +62,5 @@ public class ErrorHandler { public void genericWarning(@NotNull ASTNode node, @NotNull String message) { } - - public static String atLocation(PsiElement element) { - Document document = PsiDocumentManager.getInstance(element.getProject()).getDocument(element.getContainingFile()); - int offset = element.getTextRange().getStartOffset(); - int lineNumber = document.getLineNumber(offset); - int lineStartOffset = document.getLineStartOffset(lineNumber); - int column = offset - lineStartOffset; - return "' at line " + (lineNumber+1) + ":" + column; - } } diff --git a/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java b/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java index 81ab818390d..6c9b846f39d 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/AnalyzingUtils.java @@ -1,10 +1,8 @@ package org.jetbrains.jet.lang.resolve; -import com.intellij.openapi.editor.Document; import com.intellij.openapi.progress.ProcessCanceledException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Key; -import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiElementVisitor; import com.intellij.psi.PsiErrorElement; diff --git a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java index b0bd7da0971..4d5c60773c5 100644 --- a/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java +++ b/idea/src/org/jetbrains/jet/lang/resolve/BindingContext.java @@ -24,7 +24,7 @@ public interface BindingContext { 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_HAS_NEXT = Slices.createSimpleSlice("LOOP_RANGE_HAS_NEXT"); WritableSlice LOOP_RANGE_NEXT = Slices.createSimpleSlice("LOOP_RANGE_NEXT"); WritableSlice AUTOCAST = Slices.createSimpleSlice("AUTOCAST"); diff --git a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java index a87f72308f4..5071239bb4e 100644 --- a/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java +++ b/idea/src/org/jetbrains/jet/lang/types/JetTypeInferrer.java @@ -1060,18 +1060,18 @@ public class JetTypeInferrer { TemporaryBindingTrace temporaryTraceWithExpectedType = TemporaryBindingTrace.create(context.trace); boolean success = checkBinaryWithTypeRHS(expression, context, targetType, targetType, temporaryTraceWithExpectedType); if (success) { - temporaryTraceWithExpectedType.addAllMyDataTo(context.trace); + temporaryTraceWithExpectedType.commit(); } else { TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace); checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType); - temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace); + temporaryTraceWithoutExpectedType.commit(); } } else { TemporaryBindingTrace temporaryTraceWithoutExpectedType = TemporaryBindingTrace.create(context.trace); checkBinaryWithTypeRHS(expression, context, targetType, NO_EXPECTED_TYPE, temporaryTraceWithoutExpectedType); - temporaryTraceWithoutExpectedType.addAllMyDataTo(context.trace); + temporaryTraceWithoutExpectedType.commit(); } IElementType operationType = expression.getOperationSign().getReferencedNameElementType(); diff --git a/idea/src/org/jetbrains/jet/plugin/JetHighlighter.java b/idea/src/org/jetbrains/jet/plugin/JetHighlighter.java index 5e971f21cab..243f8a72e93 100644 --- a/idea/src/org/jetbrains/jet/plugin/JetHighlighter.java +++ b/idea/src/org/jetbrains/jet/plugin/JetHighlighter.java @@ -106,6 +106,15 @@ public class JetHighlighter extends SyntaxHighlighterBase { JET_DEBUG_INFO = TextAttributesKey.createTextAttributesKey("JET.DEBUG.INFO", textAttributes); } + public static final TextAttributesKey JET_RESOLVED_TO_ERROR; + + static { + TextAttributes textAttributes = new TextAttributes(); + textAttributes.setEffectType(EffectType.ROUNDED_BOX); + textAttributes.setEffectColor(Color.RED); + JET_RESOLVED_TO_ERROR = TextAttributesKey.createTextAttributesKey("JET.RESOLVED.TO.ERROR", textAttributes); + } + @NotNull public Lexer getHighlightingLexer() { return new JetLexer(); diff --git a/idea/testData/checker/Constants.jet b/idea/testData/checker/Constants.jet index d1b647b8fa3..2ff80a0c1bb 100644 --- a/idea/testData/checker/Constants.jet +++ b/idea/testData/checker/Constants.jet @@ -4,5 +4,5 @@ fun test() { 1 : Double 1 as Byte 1 as Int - 1 as Double + 1 as Double } \ No newline at end of file diff --git a/idea/testData/resolve/ErrorSupertype.jet b/idea/testData/resolve/ErrorSupertype.jet new file mode 100644 index 00000000000..c1395fb8d1a --- /dev/null +++ b/idea/testData/resolve/ErrorSupertype.jet @@ -0,0 +1,3 @@ +class C(x : `std::Int`Int) : NotFound { + val xx : `std::Int`Int +} \ No newline at end of file diff --git a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java index 78500d879ff..9febffc5b50 100644 --- a/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java +++ b/idea/tests/org/jetbrains/jet/resolve/ExpectedResolveData.java @@ -264,7 +264,10 @@ public class ExpectedResolveData { statement = (JetExpression) parent; } JetDeclaration declaration = PsiTreeUtil.getParentOfType(referenceExpression, JetDeclaration.class); - return referenceExpression.getText() + + + + + return referenceExpression.getText() + " at " + ErrorHandler.atLocation(referenceExpression) + " in " + statement.getText() + (declaration == null ? "" : " in " + declaration.getText()); }