diff --git a/compiler/frontend/src/org/jetbrains/jet/checkers/CheckerTestUtil.java b/compiler/frontend/src/org/jetbrains/jet/checkers/CheckerTestUtil.java index c364fa0b31f..79db9004292 100644 --- a/compiler/frontend/src/org/jetbrains/jet/checkers/CheckerTestUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/checkers/CheckerTestUtil.java @@ -347,16 +347,16 @@ public class CheckerTestUtil { public static class AbstractDiagnosticForTests implements Diagnostic { private final PsiElement element; - private final DiagnosticFactory factory; + private final DiagnosticFactory factory; - public AbstractDiagnosticForTests(@NotNull PsiElement element, @NotNull DiagnosticFactory factory) { + public AbstractDiagnosticForTests(@NotNull PsiElement element, @NotNull DiagnosticFactory factory) { this.element = element; this.factory = factory; } @NotNull @Override - public DiagnosticFactory getFactory() { + public DiagnosticFactory getFactory() { return factory; } @@ -390,7 +390,7 @@ public class CheckerTestUtil { } } - public static class SyntaxErrorDiagnosticFactory extends DiagnosticFactory { + public static class SyntaxErrorDiagnosticFactory extends DiagnosticFactory { public static final SyntaxErrorDiagnosticFactory INSTANCE = new SyntaxErrorDiagnosticFactory(); private SyntaxErrorDiagnosticFactory() { @@ -410,7 +410,7 @@ public class CheckerTestUtil { } } - public static class DebugInfoDiagnosticFactory extends DiagnosticFactory { + public static class DebugInfoDiagnosticFactory extends DiagnosticFactory { public static final DebugInfoDiagnosticFactory AUTOCAST = new DebugInfoDiagnosticFactory("AUTOCAST"); public static final DebugInfoDiagnosticFactory ELEMENT_WITH_ERROR_TYPE = new DebugInfoDiagnosticFactory("ELEMENT_WITH_ERROR_TYPE"); public static final DebugInfoDiagnosticFactory UNRESOLVED_WITH_TARGET = new DebugInfoDiagnosticFactory("UNRESOLVED_WITH_TARGET"); diff --git a/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java b/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java index a8d8130474a..33f23929efe 100644 --- a/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java +++ b/compiler/frontend/src/org/jetbrains/jet/checkers/DebugInfoUtil.java @@ -58,9 +58,9 @@ public class DebugInfoUtil { @NotNull final BindingContext bindingContext, @NotNull final DebugInfoReporter debugInfoReporter ) { - final Map markedWithErrorElements = Maps.newHashMap(); + final Map> markedWithErrorElements = Maps.newHashMap(); for (Diagnostic diagnostic : bindingContext.getDiagnostics()) { - DiagnosticFactory factory = diagnostic.getFactory(); + DiagnosticFactory factory = diagnostic.getFactory(); if (Errors.UNRESOLVED_REFERENCE_DIAGNOSTICS.contains(diagnostic.getFactory())) { markedWithErrorElements.put((JetReferenceExpression) diagnostic.getPsiElement(), factory); } @@ -136,7 +136,7 @@ public class DebugInfoUtil { markedWithError = true; } JetType expressionType = bindingContext.get(EXPRESSION_TYPE, expression); - DiagnosticFactory factory = markedWithErrorElements.get(expression); + DiagnosticFactory factory = markedWithErrorElements.get(expression); if (declarationDescriptor != null && (ErrorUtils.isError(declarationDescriptor) || ErrorUtils.containsErrorType(expressionType))) { if (factory != Errors.EXPRESSION_EXPECTED_PACKAGE_FOUND) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java index da081a8eea6..ee2d8520e63 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/cfg/JetFlowInformationProvider.java @@ -274,7 +274,7 @@ public class JetFlowInformationProvider { final Set declaredVariables = pseudocodeVariablesData.getDeclaredVariables(pseudocode, true); final LexicalScopeVariableInfo lexicalScopeVariableInfo = pseudocodeVariablesData.getLexicalScopeVariableInfo(); - final Map reportedDiagnosticMap = Maps.newHashMap(); + final Map> reportedDiagnosticMap = Maps.newHashMap(); PseudocodeTraverserPackage.traverse( pseudocode, FORWARD, initializers, @@ -548,7 +548,7 @@ public class JetFlowInformationProvider { final PseudocodeVariablesData pseudocodeVariablesData = getPseudocodeVariablesData(); Map>> variableStatusData = pseudocodeVariablesData.getVariableUseStatusData(); - final Map reportedDiagnosticMap = Maps.newHashMap(); + final Map> reportedDiagnosticMap = Maps.newHashMap(); InstructionDataAnalyzeStrategy> variableStatusAnalyzeStrategy = new InstructionDataAnalyzeStrategy>() { @Override @@ -638,7 +638,7 @@ public class JetFlowInformationProvider { // "Unused literals" in block public void markUnusedLiteralsInBlock() { - final Map reportedDiagnosticMap = Maps.newHashMap(); + final Map> reportedDiagnosticMap = Maps.newHashMap(); PseudocodeTraverserPackage.traverse( pseudocode, FORWARD, new FunctionVoid1() { @Override @@ -828,13 +828,13 @@ public class JetFlowInformationProvider { trace.report(diagnostic); return; } - Map previouslyReported = ctxt.reportedDiagnosticMap; + Map> previouslyReported = ctxt.reportedDiagnosticMap; previouslyReported.put(instruction, diagnostic.getFactory()); boolean alreadyReported = false; boolean sameErrorForAllCopies = true; for (Instruction copy : instruction.getCopies()) { - DiagnosticFactory previouslyReportedErrorFactory = previouslyReported.get(copy); + DiagnosticFactory previouslyReportedErrorFactory = previouslyReported.get(copy); if (previouslyReportedErrorFactory != null) { alreadyReported = true; } @@ -857,7 +857,7 @@ public class JetFlowInformationProvider { } } - private static boolean mustBeReportedOnAllCopies(@NotNull DiagnosticFactory diagnosticFactory) { + private static boolean mustBeReportedOnAllCopies(@NotNull DiagnosticFactory diagnosticFactory) { return diagnosticFactory == UNUSED_VARIABLE || diagnosticFactory == UNUSED_PARAMETER || diagnosticFactory == UNUSED_CHANGED_VALUE; @@ -865,13 +865,13 @@ public class JetFlowInformationProvider { private class VariableContext { - final Map reportedDiagnosticMap; + final Map> reportedDiagnosticMap; final Instruction instruction; final VariableDescriptor variableDescriptor; private VariableContext( @NotNull Instruction instruction, - @NotNull Map map + @NotNull Map> map ) { this.instruction = instruction; reportedDiagnosticMap = map; @@ -885,7 +885,7 @@ public class JetFlowInformationProvider { private VariableInitContext( @NotNull Instruction instruction, - @NotNull Map map, + @NotNull Map> map, @NotNull Map in, @NotNull Map out, @NotNull LexicalScopeVariableInfo lexicalScopeVariableInfo @@ -914,7 +914,7 @@ public class JetFlowInformationProvider { private VariableUseContext( @NotNull Instruction instruction, - @NotNull Map map, + @NotNull Map> map, @NotNull Map in, @NotNull Map out ) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java index 698c71c13ee..598049b6c5a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/AbstractDiagnostic.java @@ -18,20 +18,18 @@ package org.jetbrains.jet.lang.diagnostics; import com.intellij.openapi.util.TextRange; import com.intellij.psi.PsiElement; -import com.intellij.psi.PsiErrorElement; import com.intellij.psi.PsiFile; import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.JetNodeTypes; import java.util.List; public abstract class AbstractDiagnostic implements ParametrizedDiagnostic { private final E psiElement; - private final DiagnosticFactoryWithPsiElement factory; + private final DiagnosticFactoryWithPsiElement factory; private final Severity severity; public AbstractDiagnostic(@NotNull E psiElement, - @NotNull DiagnosticFactoryWithPsiElement factory, + @NotNull DiagnosticFactoryWithPsiElement factory, @NotNull Severity severity) { this.psiElement = psiElement; this.factory = factory; @@ -40,7 +38,7 @@ public abstract class AbstractDiagnostic implements Parame @NotNull @Override - public DiagnosticFactoryWithPsiElement getFactory() { + public DiagnosticFactoryWithPsiElement getFactory() { return factory; } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Diagnostic.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Diagnostic.java index 289ab29be31..36e67fc6db4 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Diagnostic.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Diagnostic.java @@ -26,7 +26,7 @@ import java.util.List; public interface Diagnostic { @NotNull - DiagnosticFactory getFactory(); + DiagnosticFactory getFactory(); @NotNull Severity getSeverity(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java index 07e41d0b8d9..df69c1ac27c 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory.java @@ -18,7 +18,10 @@ package org.jetbrains.jet.lang.diagnostics; import org.jetbrains.annotations.NotNull; -public abstract class DiagnosticFactory { +import java.util.Arrays; +import java.util.Collection; + +public abstract class DiagnosticFactory { private String name = null; private final Severity severity; @@ -41,6 +44,30 @@ public abstract class DiagnosticFactory { return severity; } + @NotNull + public D cast(@NotNull Diagnostic diagnostic) { + if (diagnostic.getFactory() != this) { + throw new IllegalArgumentException("Factory mismatch: expected " + this + " but was " + diagnostic.getFactory()); + } + + //noinspection unchecked + return (D) diagnostic; + } + + @NotNull + public static D cast(@NotNull Diagnostic diagnostic, @NotNull DiagnosticFactory... factories) { + return cast(diagnostic, Arrays.asList(factories)); + } + + @NotNull + public static D cast(@NotNull Diagnostic diagnostic, @NotNull Collection> factories) { + for (DiagnosticFactory factory : factories) { + if (diagnostic.getFactory() == factory) return factory.cast(diagnostic); + } + + throw new IllegalArgumentException("Factory mismatch: expected one of " + factories + " but was " + diagnostic.getFactory()); + } + @Override public String toString() { return getName(); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory0.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory0.java index dcddb16857e..d1c6e8dffbc 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory0.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory0.java @@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.diagnostics; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -public class DiagnosticFactory0 extends DiagnosticFactoryWithPsiElement { +public class DiagnosticFactory0 extends DiagnosticFactoryWithPsiElement> { protected DiagnosticFactory0(Severity severity, PositioningStrategy positioningStrategy) { super(severity, positioningStrategy); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java index f1dbd821742..7ba9e19a818 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory1.java @@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.diagnostics; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -public class DiagnosticFactory1 extends DiagnosticFactoryWithPsiElement { +public class DiagnosticFactory1 extends DiagnosticFactoryWithPsiElement> { @NotNull public ParametrizedDiagnostic on(@NotNull E element, @NotNull A argument) { return new DiagnosticWithParameters1(element, argument, this, getSeverity()); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java index bb0496ec2c8..064d9d8fca8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory2.java @@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.diagnostics; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -public class DiagnosticFactory2 extends DiagnosticFactoryWithPsiElement { +public class DiagnosticFactory2 extends DiagnosticFactoryWithPsiElement> { @NotNull public ParametrizedDiagnostic on(@NotNull E element, @NotNull A a, @NotNull B b) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java index a53027f54a1..d6ec01d7507 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactory3.java @@ -19,7 +19,7 @@ package org.jetbrains.jet.lang.diagnostics; import com.intellij.psi.PsiElement; import org.jetbrains.annotations.NotNull; -public class DiagnosticFactory3 extends DiagnosticFactoryWithPsiElement { +public class DiagnosticFactory3 extends DiagnosticFactoryWithPsiElement> { protected DiagnosticFactory3(Severity severity, PositioningStrategy positioningStrategy) { super(severity, positioningStrategy); diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactoryWithPsiElement.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactoryWithPsiElement.java index e35731c9c1b..5a01175740d 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactoryWithPsiElement.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/DiagnosticFactoryWithPsiElement.java @@ -21,7 +21,7 @@ import com.intellij.psi.PsiElement; import java.util.List; -public abstract class DiagnosticFactoryWithPsiElement extends DiagnosticFactory { +public abstract class DiagnosticFactoryWithPsiElement extends DiagnosticFactory { protected final PositioningStrategy positioningStrategy; public DiagnosticFactoryWithPsiElement(Severity severity, PositioningStrategy positioningStrategy) { diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java index a54b07d2b52..7b3d1008aa8 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/Errors.java @@ -589,11 +589,11 @@ public interface Errors { DiagnosticFactory0 DECLARATION_CANT_BE_INLINED = DiagnosticFactory0.create(ERROR); // Error sets - ImmutableSet UNRESOLVED_REFERENCE_DIAGNOSTICS = ImmutableSet.of( + ImmutableSet> UNRESOLVED_REFERENCE_DIAGNOSTICS = ImmutableSet.of( UNRESOLVED_REFERENCE, NAMED_PARAMETER_NOT_FOUND, UNRESOLVED_REFERENCE_WRONG_RECEIVER); - ImmutableSet UNUSED_ELEMENT_DIAGNOSTICS = ImmutableSet.of( + ImmutableSet> UNUSED_ELEMENT_DIAGNOSTICS = ImmutableSet.of( UNUSED_VARIABLE, UNUSED_PARAMETER, ASSIGNED_BUT_NEVER_ACCESSED_VARIABLE); - ImmutableSet TYPE_INFERENCE_ERRORS = ImmutableSet.of( + ImmutableSet> TYPE_INFERENCE_ERRORS = ImmutableSet.of( TYPE_INFERENCE_NO_INFORMATION_FOR_PARAMETER, TYPE_INFERENCE_CONFLICTING_SUBSTITUTIONS, TYPE_INFERENCE_TYPE_CONSTRUCTOR_MISMATCH, TYPE_INFERENCE_UPPER_BOUND_VIOLATED, TYPE_INFERENCE_EXPECTED_TYPE_MISMATCH); @@ -612,7 +612,7 @@ public interface Errors { try { Object value = field.get(null); if (value instanceof DiagnosticFactory) { - DiagnosticFactory factory = (DiagnosticFactory)value; + DiagnosticFactory factory = (DiagnosticFactory)value; factory.setName(field.getName()); } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java index 027c19ed869..5a81a687f86 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DefaultErrorMessages.java @@ -493,8 +493,8 @@ public class DefaultErrorMessages { try { Object fieldValue = field.get(null); if (fieldValue instanceof DiagnosticFactory) { - if (MAP.get((DiagnosticFactory) fieldValue) == null) { - throw new IllegalStateException("No default diagnostic renderer is provided for " + ((DiagnosticFactory)fieldValue).getName()); + if (MAP.get((DiagnosticFactory) fieldValue) == null) { + throw new IllegalStateException("No default diagnostic renderer is provided for " + ((DiagnosticFactory)fieldValue).getName()); } } } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DiagnosticFactoryToRendererMap.java b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DiagnosticFactoryToRendererMap.java index 35bb44dcd3f..96bdeb669cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DiagnosticFactoryToRendererMap.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/diagnostics/rendering/DiagnosticFactoryToRendererMap.java @@ -26,8 +26,8 @@ import java.util.HashMap; import java.util.Map; public final class DiagnosticFactoryToRendererMap { - private final Map> map = - new HashMap>(); + private final Map, DiagnosticRenderer> map = + new HashMap, DiagnosticRenderer>(); private boolean immutable = false; private void checkMutability() { @@ -64,7 +64,7 @@ public final class DiagnosticFactoryToRendererMap { } @Nullable - public DiagnosticRenderer get(@NotNull DiagnosticFactory factory) { + public DiagnosticRenderer get(@NotNull DiagnosticFactory factory) { return map.get(factory); } diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java index 8cfaf7ca55f..275751bbf0a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/DiagnosticsWithSuppression.java @@ -111,7 +111,7 @@ public class DiagnosticsWithSuppression implements Diagnostics { private static boolean isSuppressedForDebugger(@NotNull Diagnostic diagnostic, @NotNull PsiElement element) { PsiFile containingFile = element.getContainingFile(); if (containingFile instanceof JetFile && CodeFragmentUtilPackage.skipVisibilityCheck((JetFile) containingFile)) { - DiagnosticFactory diagnosticFactory = diagnostic.getFactory(); + DiagnosticFactory diagnosticFactory = diagnostic.getFactory(); return diagnosticFactory == Errors.INVISIBLE_MEMBER || diagnosticFactory == Errors.INVISIBLE_REFERENCE || diagnosticFactory == Errors.INVISIBLE_SETTER; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java index 285fb4b5f83..ade5431b98a 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/resolve/constants/CompileTimeConstantChecker.java @@ -36,8 +36,8 @@ import java.util.Set; import static org.jetbrains.jet.lang.diagnostics.Errors.*; public class CompileTimeConstantChecker { - private static final Set errorsThatDependOnExpectedType = - Sets.newHashSet(CONSTANT_EXPECTED_TYPE_MISMATCH, NULL_FOR_NONNULL_TYPE); + private static final Set> errorsThatDependOnExpectedType = + Sets.>newHashSet(CONSTANT_EXPECTED_TYPE_MISMATCH, NULL_FOR_NONNULL_TYPE); private final KotlinBuiltIns builtIns; private final BindingTrace trace; diff --git a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java index 5a8715597e4..852453f93cb 100644 --- a/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java +++ b/compiler/frontend/src/org/jetbrains/jet/lang/types/expressions/ExpressionTypingUtils.java @@ -451,7 +451,7 @@ public class ExpressionTypingUtils { @Override public void report(@NotNull Diagnostic diagnostic) { - DiagnosticFactory factory = diagnostic.getFactory(); + DiagnosticFactory factory = diagnostic.getFactory(); if ((factory == TYPE_MISMATCH || factory == CONSTANT_EXPECTED_TYPE_MISMATCH || factory == NULL_FOR_NONNULL_TYPE) && diagnostic.getPsiElement() == expressionToWatch) { mismatchFound[0] = true; diff --git a/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java index 117676f9ea5..aa15466ae41 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/AbstractJetDiagnosticsTest.java @@ -31,6 +31,7 @@ import org.jetbrains.jet.lang.descriptors.DependencyKind; import org.jetbrains.jet.lang.descriptors.ModuleDescriptorImpl; import org.jetbrains.jet.lang.diagnostics.*; import org.jetbrains.jet.lang.psi.JetElement; +import org.jetbrains.jet.lang.psi.JetExpression; import org.jetbrains.jet.lang.psi.JetFile; import org.jetbrains.jet.lang.resolve.AnalyzingUtils; import org.jetbrains.jet.lang.resolve.BindingContext; @@ -146,23 +147,26 @@ public abstract class AbstractJetDiagnosticsTest extends BaseDiagnosticsTest { @SuppressWarnings({"unchecked", "ConstantConditions"}) private static void checkResolvedCallsInDiagnostics(BindingContext bindingContext) { - Set diagnosticsStoringResolvedCalls1 = Sets.newHashSet( + Set>>> diagnosticsStoringResolvedCalls1 = Sets.newHashSet( OVERLOAD_RESOLUTION_AMBIGUITY, NONE_APPLICABLE, CANNOT_COMPLETE_RESOLVE, UNRESOLVED_REFERENCE_WRONG_RECEIVER, ASSIGN_OPERATOR_AMBIGUITY, ITERATOR_AMBIGUITY); - Set diagnosticsStoringResolvedCalls2 = Sets.newHashSet( + Set>, Collection>>> + diagnosticsStoringResolvedCalls2 = Sets.newHashSet( COMPONENT_FUNCTION_AMBIGUITY, DELEGATE_SPECIAL_FUNCTION_AMBIGUITY, DELEGATE_SPECIAL_FUNCTION_NONE_APPLICABLE); Diagnostics diagnostics = bindingContext.getDiagnostics(); for (Diagnostic diagnostic : diagnostics) { - DiagnosticFactory factory = diagnostic.getFactory(); + DiagnosticFactory factory = diagnostic.getFactory(); + //noinspection SuspiciousMethodCalls if (diagnosticsStoringResolvedCalls1.contains(factory)) { assertResolvedCallsAreCompleted( - diagnostic, ((DiagnosticWithParameters1>>) diagnostic).getA()); + diagnostic, DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls1).getA()); } + //noinspection SuspiciousMethodCalls if (diagnosticsStoringResolvedCalls2.contains(factory)) { assertResolvedCallsAreCompleted( diagnostic, - ((DiagnosticWithParameters2>>)diagnostic).getB()); + DiagnosticFactory.cast(diagnostic, diagnosticsStoringResolvedCalls2).getB()); } } } diff --git a/compiler/tests/org/jetbrains/jet/checkers/BaseDiagnosticsTest.java b/compiler/tests/org/jetbrains/jet/checkers/BaseDiagnosticsTest.java index c23d380a4cf..00092caf066 100644 --- a/compiler/tests/org/jetbrains/jet/checkers/BaseDiagnosticsTest.java +++ b/compiler/tests/org/jetbrains/jet/checkers/BaseDiagnosticsTest.java @@ -55,7 +55,7 @@ public abstract class BaseDiagnosticsTest extends JetLiteFixture { public static final String DIAGNOSTICS_DIRECTIVE = "DIAGNOSTICS"; public static final Pattern DIAGNOSTICS_PATTERN = Pattern.compile("([\\+\\-!])(\\w+)\\s*"); - public static final ImmutableSet DIAGNOSTICS_TO_INCLUDE_ANYWAY = + public static final ImmutableSet> DIAGNOSTICS_TO_INCLUDE_ANYWAY = ImmutableSet.of( Errors.UNRESOLVED_REFERENCE, Errors.UNRESOLVED_REFERENCE_WRONG_RECEIVER, diff --git a/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt b/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt index fc7b57c15b3..5ff1a7bcf07 100644 --- a/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt +++ b/idea/src/org/jetbrains/jet/plugin/highlighter/KotlinSuppressableWarningProblemGroup.kt @@ -28,7 +28,7 @@ import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory import com.intellij.psi.util.PsiTreeUtil class KotlinSuppressableWarningProblemGroup( - private val diagnosticFactory: DiagnosticFactory + private val diagnosticFactory: DiagnosticFactory<*> ) : SuppressableProblemGroup { { @@ -46,7 +46,7 @@ class KotlinSuppressableWarningProblemGroup( } -fun createSuppressWarningActions(element: PsiElement, diagnosticFactory: DiagnosticFactory): List { +fun createSuppressWarningActions(element: PsiElement, diagnosticFactory: DiagnosticFactory<*>): List { if (diagnosticFactory.getSeverity() != Severity.WARNING) return Collections.emptyList() diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/AddStarProjectionsFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/AddStarProjectionsFix.java index f271ef8bf12..4585242a8ed 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/AddStarProjectionsFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/AddStarProjectionsFix.java @@ -72,10 +72,8 @@ public abstract class AddStarProjectionsFix extends JetIntentionAction diagnosticWithParameters = - (DiagnosticWithParameters2) diagnostic; + Errors.NO_TYPE_ARGUMENTS_ON_RHS.cast(diagnostic); JetTypeElement typeElement = diagnosticWithParameters.getPsiElement().getTypeElement(); while (typeElement instanceof JetNullableType) { typeElement = ((JetNullableType) typeElement).getInnerType(); @@ -91,9 +89,7 @@ public abstract class AddStarProjectionsFix extends JetIntentionAction diagnosticWithParameters = (DiagnosticWithParameters1) diagnostic; + DiagnosticWithParameters1 diagnosticWithParameters = Errors.WRONG_NUMBER_OF_TYPE_ARGUMENTS.cast(diagnostic); Integer size = diagnosticWithParameters.getA(); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CastExpressionFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/CastExpressionFix.java index ed76f015423..4390f5eff4f 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CastExpressionFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/CastExpressionFix.java @@ -86,10 +86,8 @@ public class CastExpressionFix extends JetIntentionAction { @Nullable @Override public IntentionAction createAction(Diagnostic diagnostic) { - assert diagnostic.getFactory() == Errors.AUTOCAST_IMPOSSIBLE; - @SuppressWarnings("unchecked") DiagnosticWithParameters2 diagnosticWithParameters = - (DiagnosticWithParameters2) diagnostic; + Errors.AUTOCAST_IMPOSSIBLE.cast(diagnostic); return new CastExpressionFix(diagnosticWithParameters.getPsiElement(), diagnosticWithParameters.getA()); } }; diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java index 0c943ad4a73..37a1288dc19 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionReturnTypeFix.java @@ -29,14 +29,12 @@ import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.SimpleFunctionDescriptor; import org.jetbrains.jet.lang.diagnostics.Diagnostic; -import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters3; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; import org.jetbrains.jet.lang.resolve.DescriptorResolver; import org.jetbrains.jet.lang.resolve.calls.model.ResolvedCall; import org.jetbrains.jet.lang.resolve.name.FqName; -import org.jetbrains.jet.lang.resolve.name.Name; import org.jetbrains.jet.lang.types.ErrorUtils; import org.jetbrains.jet.lang.types.JetType; import org.jetbrains.jet.lang.types.checker.JetTypeChecker; @@ -49,6 +47,8 @@ import org.jetbrains.jet.renderer.DescriptorRenderer; import java.util.LinkedList; import java.util.List; +import static org.jetbrains.jet.lang.diagnostics.Errors.COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH; + public class ChangeFunctionReturnTypeFix extends JetIntentionAction { private final JetType type; private final String renderedType; @@ -127,8 +127,7 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction @NotNull public static JetMultiDeclarationEntry getMultiDeclarationEntryThatTypeMismatchComponentFunction(Diagnostic diagnostic) { - @SuppressWarnings("unchecked") - String componentName = ((DiagnosticWithParameters3) diagnostic).getA().asString(); + String componentName = COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH.cast(diagnostic).getA().asString(); int componentIndex = Integer.valueOf(componentName.substring(DescriptorResolver.COMPONENT_FUNCTION_NAME_PREFIX.length())); JetMultiDeclaration multiDeclaration = QuickFixUtil.getParentElementOfType(diagnostic, JetMultiDeclaration.class); assert multiDeclaration != null : "COMPONENT_FUNCTION_RETURN_TYPE_MISMATCH reported on expression that is not within any multi declaration"; diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionSignatureFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionSignatureFix.java index 5f0e610ed8f..f5094022b7d 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionSignatureFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeFunctionSignatureFix.java @@ -20,7 +20,6 @@ import com.intellij.openapi.editor.Editor; import com.intellij.openapi.project.Project; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiFile; -import com.intellij.psi.PsiNameIdentifierOwner; import com.intellij.psi.util.PsiTreeUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -29,8 +28,9 @@ import org.jetbrains.jet.lang.descriptors.DeclarationDescriptor; import org.jetbrains.jet.lang.descriptors.FunctionDescriptor; import org.jetbrains.jet.lang.descriptors.ValueParameterDescriptor; import org.jetbrains.jet.lang.diagnostics.Diagnostic; -import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters1; +import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory; import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters2; +import org.jetbrains.jet.lang.diagnostics.Errors; import org.jetbrains.jet.lang.psi.*; import org.jetbrains.jet.lang.resolve.BindingContext; import org.jetbrains.jet.lang.resolve.BindingContextUtils; @@ -46,6 +46,8 @@ import org.jetbrains.jet.plugin.refactoring.changeSignature.JetParameterInfo; import java.util.List; import static org.jetbrains.jet.lang.descriptors.CallableMemberDescriptor.Kind.SYNTHESIZED; +import static org.jetbrains.jet.lang.diagnostics.Errors.EXPECTED_PARAMETERS_NUMBER_MISMATCH; +import static org.jetbrains.jet.lang.diagnostics.Errors.UNUSED_PARAMETER; public abstract class ChangeFunctionSignatureFix extends JetIntentionAction { protected final PsiElement context; @@ -143,8 +145,8 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction) diagnostic).getA(); + //noinspection unchecked + CallableDescriptor descriptor = DiagnosticFactory.cast(diagnostic, Errors.TOO_MANY_ARGUMENTS, Errors.NO_VALUE_FOR_PARAMETER).getA(); if (callElement != null) { return createFix(callElement, callElement, descriptor); @@ -159,9 +161,8 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction> diagnosticWithParameters = - (DiagnosticWithParameters2>) diagnostic; + EXPECTED_PARAMETERS_NUMBER_MISMATCH.cast(diagnostic); JetFunctionLiteral functionLiteral = diagnosticWithParameters.getPsiElement(); BindingContext bindingContext = ResolvePackage.getBindingContext(functionLiteral.getContainingJetFile()); @@ -183,7 +184,7 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction) diagnostic).getA(); + Object descriptor = UNUSED_PARAMETER.cast(diagnostic).getA(); if (descriptor instanceof ValueParameterDescriptor) { return createFix(null, diagnostic.getPsiElement(), (CallableDescriptor) descriptor); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeTypeFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeTypeFix.java index b18dcd24a05..18a42347ec4 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeTypeFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ChangeTypeFix.java @@ -64,9 +64,7 @@ public class ChangeTypeFix extends JetIntentionAction { @Nullable @Override public IntentionAction createAction(Diagnostic diagnostic) { - assert diagnostic.getFactory() == Errors.EXPECTED_PARAMETER_TYPE_MISMATCH; - @SuppressWarnings("unchecked") - DiagnosticWithParameters1 diagnosticWithParameters = (DiagnosticWithParameters1) diagnostic; + DiagnosticWithParameters1 diagnosticWithParameters = Errors.EXPECTED_PARAMETER_TYPE_MISMATCH.cast(diagnostic); JetTypeReference typeReference = diagnosticWithParameters.getPsiElement().getTypeReference(); assert typeReference != null : "EXPECTED_PARAMETER_TYPE_MISMATCH reported on parameter without explicitly declared type"; return new ChangeTypeFix(typeReference, diagnosticWithParameters.getA()); @@ -80,9 +78,7 @@ public class ChangeTypeFix extends JetIntentionAction { @Nullable @Override public IntentionAction createAction(Diagnostic diagnostic) { - assert diagnostic.getFactory() == Errors.EXPECTED_RETURN_TYPE_MISMATCH; - @SuppressWarnings("unchecked") - DiagnosticWithParameters1 diagnosticWithParameters = (DiagnosticWithParameters1) diagnostic; + DiagnosticWithParameters1 diagnosticWithParameters = Errors.EXPECTED_RETURN_TYPE_MISMATCH.cast(diagnostic); return new ChangeTypeFix(diagnosticWithParameters.getPsiElement(), diagnosticWithParameters.getA()); } }; diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt index 2e5b2005700..3f75db7c75c 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/CreateFunctionFromUsageFix.kt @@ -71,6 +71,8 @@ import java.util.ArrayList import java.util.Properties import org.jetbrains.jet.plugin.caches.resolve.getAnalysisResults import org.jetbrains.jet.plugin.caches.resolve.getBindingContext +import org.jetbrains.jet.lang.diagnostics.DiagnosticFactory +import org.jetbrains.jet.lang.diagnostics private val TYPE_PARAMETER_LIST_VARIABLE_NAME = "typeParameterList" private val TEMPLATE_FROM_USAGE_FUNCTION_BODY = "New Kotlin Function Body.kt" @@ -917,9 +919,7 @@ public class CreateFunctionFromUsageFix internal ( public fun createCreateHasNextFunctionFromUsageFactory(): JetSingleIntentionActionFactory { return object : JetSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic?): IntentionAction? { - assert(diagnostic!!.getFactory() == Errors.HAS_NEXT_MISSING || diagnostic.getFactory() == Errors.HAS_NEXT_FUNCTION_NONE_APPLICABLE) - [suppress("UNCHECKED_CAST")] - val diagnosticWithParameters = diagnostic as DiagnosticWithParameters1 + val diagnosticWithParameters = DiagnosticFactory.cast(diagnostic!!, Errors.HAS_NEXT_MISSING, Errors.HAS_NEXT_FUNCTION_NONE_APPLICABLE) val ownerType = TypeOrExpressionThereof(diagnosticWithParameters.getA(), Variance.IN_VARIANCE) val forExpr = QuickFixUtil.getParentElementOfType(diagnostic, javaClass()) ?: return null @@ -932,9 +932,7 @@ public class CreateFunctionFromUsageFix internal ( public fun createCreateNextFunctionFromUsageFactory(): JetSingleIntentionActionFactory { return object : JetSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic?): IntentionAction? { - assert(diagnostic!!.getFactory() == Errors.NEXT_MISSING || diagnostic.getFactory() == Errors.NEXT_NONE_APPLICABLE) - [suppress("UNCHECKED_CAST")] - val diagnosticWithParameters = diagnostic as DiagnosticWithParameters1 + val diagnosticWithParameters = DiagnosticFactory.cast(diagnostic!!, Errors.NEXT_MISSING, Errors.NEXT_NONE_APPLICABLE) val ownerType = TypeOrExpressionThereof(diagnosticWithParameters.getA(), Variance.IN_VARIANCE) val forExpr = QuickFixUtil.getParentElementOfType(diagnostic, javaClass()) ?: return null @@ -971,9 +969,7 @@ public class CreateFunctionFromUsageFix internal ( public fun createCreateComponentFunctionFromUsageFactory(): JetSingleIntentionActionFactory { return object : JetSingleIntentionActionFactory() { override fun createAction(diagnostic: Diagnostic?): IntentionAction? { - assert(diagnostic!!.getFactory() == Errors.COMPONENT_FUNCTION_MISSING) - [suppress("UNCHECKED_CAST")] - val diagnosticWithParameters = (diagnostic as DiagnosticWithParameters2) + val diagnosticWithParameters = Errors.COMPONENT_FUNCTION_MISSING.cast(diagnostic!!) val name = diagnosticWithParameters.getA() val componentNumberMatcher = COMPONENT_FUNCTION_PATTERN.matcher(name.getIdentifier()) if (!componentNumberMatcher.matches()) return null diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt b/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt index 97ee7cf9dc0..748c4a1bb76 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/KotlinSuppressIntentionAction.kt @@ -30,7 +30,7 @@ import org.jetbrains.jet.plugin.util.JetPsiPrecedences public class KotlinSuppressIntentionAction( private val suppressAt: JetExpression, - private val diagnosticFactory: DiagnosticFactory, + private val diagnosticFactory: DiagnosticFactory<*>, private val kind: AnnotationHostKind ) : SuppressIntentionAction() { diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/MapPlatformClassToKotlinFix.java b/idea/src/org/jetbrains/jet/plugin/quickfix/MapPlatformClassToKotlinFix.java index 89af6865108..303b6f404c7 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/MapPlatformClassToKotlinFix.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/MapPlatformClassToKotlinFix.java @@ -198,10 +198,8 @@ public class MapPlatformClassToKotlinFix extends JetIntentionAction> parametrizedDiagnostic = - (DiagnosticWithParameters1>) diagnostic; + Errors.PLATFORM_CLASS_MAPPED_TO_KOTLIN.cast(diagnostic); return new MapPlatformClassToKotlinFix(typeExpr, platformClass, parametrizedDiagnostic.getA()); } diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java index ee9a34753a0..cc9a9ff1f49 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixFactoryForTypeMismatchError.java @@ -39,10 +39,7 @@ public class QuickFixFactoryForTypeMismatchError implements JetIntentionActionsF public List createActions(Diagnostic diagnostic) { List actions = new LinkedList(); - assert diagnostic.getFactory() == Errors.TYPE_MISMATCH; - @SuppressWarnings("unchecked") - DiagnosticWithParameters2 diagnosticWithParameters = - (DiagnosticWithParameters2) diagnostic; + DiagnosticWithParameters2 diagnosticWithParameters = Errors.TYPE_MISMATCH.cast(diagnostic); JetExpression expression = diagnosticWithParameters.getPsiElement(); JetType expectedType = diagnosticWithParameters.getA(); JetType expressionType = diagnosticWithParameters.getB(); diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java index a43daabb66e..cbb252a55d5 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/QuickFixes.java @@ -30,14 +30,14 @@ import static org.jetbrains.jet.lexer.JetTokens.*; public class QuickFixes { - private static final Multimap factories = HashMultimap.create(); - private static final Multimap actions = HashMultimap.create(); + private static final Multimap, JetIntentionActionsFactory> factories = HashMultimap.create(); + private static final Multimap, IntentionAction> actions = HashMultimap.create(); - public static Collection getActionsFactories(DiagnosticFactory diagnosticFactory) { + public static Collection getActionsFactories(DiagnosticFactory diagnosticFactory) { return factories.get(diagnosticFactory); } - public static Collection getActions(DiagnosticFactory diagnosticFactory) { + public static Collection getActions(DiagnosticFactory diagnosticFactory) { return actions.get(diagnosticFactory); } diff --git a/idea/src/org/jetbrains/jet/plugin/refactoring/inline/KotlinInlineValHandler.java b/idea/src/org/jetbrains/jet/plugin/refactoring/inline/KotlinInlineValHandler.java index e3046d15db8..52170cd9f7a 100644 --- a/idea/src/org/jetbrains/jet/plugin/refactoring/inline/KotlinInlineValHandler.java +++ b/idea/src/org/jetbrains/jet/plugin/refactoring/inline/KotlinInlineValHandler.java @@ -302,7 +302,7 @@ public class KotlinInlineValHandler extends InlineActionHandler { JetFunctionLiteral functionLiteral = functionLiteralExpression.getFunctionLiteral(); BindingContext context = resolveSessionForBodies.resolveToElement(functionLiteralExpression); for (Diagnostic diagnostic : context.getDiagnostics()) { - DiagnosticFactory factory = diagnostic.getFactory(); + DiagnosticFactory factory = diagnostic.getFactory(); PsiElement element = diagnostic.getPsiElement(); boolean hasCantInferParameter = factory == Errors.CANNOT_INFER_PARAMETER_TYPE && element.getParent().getParent() == functionLiteral; boolean hasUnresolvedItOrThis = factory == Errors.UNRESOLVED_REFERENCE && element.getText().equals("it") && diff --git a/idea/tests/org/jetbrains/jet/plugin/highlighter/AbstractDiagnosticMessageTest.java b/idea/tests/org/jetbrains/jet/plugin/highlighter/AbstractDiagnosticMessageTest.java index 43b7b8bc84a..b5fde8cc5f0 100644 --- a/idea/tests/org/jetbrains/jet/plugin/highlighter/AbstractDiagnosticMessageTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/highlighter/AbstractDiagnosticMessageTest.java @@ -78,7 +78,7 @@ public abstract class AbstractDiagnosticMessageTest extends JetLiteFixture { String fileData = JetTestUtils.doLoadFile(file); Map directives = JetTestUtils.parseDirectives(fileData); int diagnosticNumber = getDiagnosticNumber(directives); - final Set diagnosticFactories = getDiagnosticFactories(directives); + final Set> diagnosticFactories = getDiagnosticFactories(directives); MessageType messageType = getMessageTypeDirective(directives); JetFile psiFile = createPsiFile(null, fileName, loadFile(fileName)); @@ -128,10 +128,10 @@ public abstract class AbstractDiagnosticMessageTest extends JetLiteFixture { } @NotNull - private static Set getDiagnosticFactories(Map directives) { + private static Set> getDiagnosticFactories(Map directives) { String diagnosticsData = directives.get(DIAGNOSTICS_DIRECTIVE); assert diagnosticsData != null : DIAGNOSTICS_DIRECTIVE + " should be present."; - Set diagnosticFactories = Sets.newHashSet(); + Set> diagnosticFactories = Sets.newHashSet(); String[] diagnostics = diagnosticsData.split(" "); for (String diagnosticName : diagnostics) { String errorMessage = "Can't load diagnostic factory for " + diagnosticName; @@ -139,7 +139,7 @@ public abstract class AbstractDiagnosticMessageTest extends JetLiteFixture { Field field = Errors.class.getField(diagnosticName); Object value = field.get(null); if (value instanceof DiagnosticFactory) { - diagnosticFactories.add((DiagnosticFactory)value); + diagnosticFactories.add((DiagnosticFactory)value); } else { throw new AssertionError(errorMessage);