cast() method in DiagnosticFactory
This commit is contained in:
+2
-2
@@ -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<SuppressIntentionAction> {
|
||||
fun createSuppressWarningActions(element: PsiElement, diagnosticFactory: DiagnosticFactory<*>): List<SuppressIntentionAction> {
|
||||
if (diagnosticFactory.getSeverity() != Severity.WARNING)
|
||||
return Collections.emptyList()
|
||||
|
||||
|
||||
@@ -72,10 +72,8 @@ public abstract class AddStarProjectionsFix extends JetIntentionAction<JetUserTy
|
||||
return new JetSingleIntentionActionFactory() {
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
assert diagnostic.getFactory() == Errors.NO_TYPE_ARGUMENTS_ON_RHS;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters2<JetTypeReference, Integer, String> diagnosticWithParameters =
|
||||
(DiagnosticWithParameters2<JetTypeReference, Integer, String>) 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<JetUserTy
|
||||
return new JetSingleIntentionActionFactory() {
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
assert diagnostic.getFactory() == Errors.WRONG_NUMBER_OF_TYPE_ARGUMENTS;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters1<JetElement, Integer> diagnosticWithParameters = (DiagnosticWithParameters1) diagnostic;
|
||||
DiagnosticWithParameters1<JetElement, Integer> diagnosticWithParameters = Errors.WRONG_NUMBER_OF_TYPE_ARGUMENTS.cast(diagnostic);
|
||||
|
||||
Integer size = diagnosticWithParameters.getA();
|
||||
|
||||
|
||||
@@ -86,10 +86,8 @@ public class CastExpressionFix extends JetIntentionAction<JetExpression> {
|
||||
@Nullable
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
assert diagnostic.getFactory() == Errors.AUTOCAST_IMPOSSIBLE;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters2<JetExpression, JetType, String> diagnosticWithParameters =
|
||||
(DiagnosticWithParameters2<JetExpression, JetType, String>) diagnostic;
|
||||
Errors.AUTOCAST_IMPOSSIBLE.cast(diagnostic);
|
||||
return new CastExpressionFix(diagnosticWithParameters.getPsiElement(), diagnosticWithParameters.getA());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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<JetFunction> {
|
||||
private final JetType type;
|
||||
private final String renderedType;
|
||||
@@ -127,8 +127,7 @@ public class ChangeFunctionReturnTypeFix extends JetIntentionAction<JetFunction>
|
||||
|
||||
@NotNull
|
||||
public static JetMultiDeclarationEntry getMultiDeclarationEntryThatTypeMismatchComponentFunction(Diagnostic diagnostic) {
|
||||
@SuppressWarnings("unchecked")
|
||||
String componentName = ((DiagnosticWithParameters3<JetExpression, Name, JetType, JetType>) 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";
|
||||
|
||||
@@ -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<PsiElement> {
|
||||
protected final PsiElement context;
|
||||
@@ -143,8 +145,8 @@ public abstract class ChangeFunctionSignatureFix extends JetIntentionAction<PsiE
|
||||
@Override
|
||||
public ChangeFunctionSignatureFix createAction(Diagnostic diagnostic) {
|
||||
JetCallElement callElement = PsiTreeUtil.getParentOfType(diagnostic.getPsiElement(), JetCallElement.class);
|
||||
@SuppressWarnings("unchecked")
|
||||
CallableDescriptor descriptor = ((DiagnosticWithParameters1<PsiElement, CallableDescriptor>) 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<PsiE
|
||||
return new JetSingleIntentionActionFactory() {
|
||||
@Override
|
||||
public ChangeFunctionSignatureFix createAction(Diagnostic diagnostic) {
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters2<JetFunctionLiteral, Integer, List<JetType>> diagnosticWithParameters =
|
||||
(DiagnosticWithParameters2<JetFunctionLiteral, Integer, List<JetType>>) 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<PsiE
|
||||
@Override
|
||||
public ChangeFunctionSignatureFix createAction(Diagnostic diagnostic) {
|
||||
@SuppressWarnings("unchecked")
|
||||
Object descriptor = ((DiagnosticWithParameters1<PsiNameIdentifierOwner, Object>) diagnostic).getA();
|
||||
Object descriptor = UNUSED_PARAMETER.cast(diagnostic).getA();
|
||||
|
||||
if (descriptor instanceof ValueParameterDescriptor) {
|
||||
return createFix(null, diagnostic.getPsiElement(), (CallableDescriptor) descriptor);
|
||||
|
||||
@@ -64,9 +64,7 @@ public class ChangeTypeFix extends JetIntentionAction<JetTypeReference> {
|
||||
@Nullable
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
assert diagnostic.getFactory() == Errors.EXPECTED_PARAMETER_TYPE_MISMATCH;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters1<JetParameter, JetType> diagnosticWithParameters = (DiagnosticWithParameters1<JetParameter, JetType>) diagnostic;
|
||||
DiagnosticWithParameters1<JetParameter, JetType> 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<JetTypeReference> {
|
||||
@Nullable
|
||||
@Override
|
||||
public IntentionAction createAction(Diagnostic diagnostic) {
|
||||
assert diagnostic.getFactory() == Errors.EXPECTED_RETURN_TYPE_MISMATCH;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters1<JetTypeReference, JetType> diagnosticWithParameters = (DiagnosticWithParameters1<JetTypeReference, JetType>) diagnostic;
|
||||
DiagnosticWithParameters1<JetTypeReference, JetType> diagnosticWithParameters = Errors.EXPECTED_RETURN_TYPE_MISMATCH.cast(diagnostic);
|
||||
return new ChangeTypeFix(diagnosticWithParameters.getPsiElement(), diagnosticWithParameters.getA());
|
||||
}
|
||||
};
|
||||
|
||||
@@ -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<JetExpression, JetType>
|
||||
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<JetForExpression>()) ?: 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<JetExpression, JetType>
|
||||
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<JetForExpression>()) ?: 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<JetExpression, Name, JetType>)
|
||||
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
|
||||
|
||||
@@ -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() {
|
||||
|
||||
|
||||
@@ -198,10 +198,8 @@ public class MapPlatformClassToKotlinFix extends JetIntentionAction<JetReference
|
||||
ClassDescriptor platformClass = resolveToClass(typeExpr, context);
|
||||
if (platformClass == null) return null;
|
||||
|
||||
assert diagnostic.getFactory() == Errors.PLATFORM_CLASS_MAPPED_TO_KOTLIN;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters1<JetElement, Collection<ClassDescriptor>> parametrizedDiagnostic =
|
||||
(DiagnosticWithParameters1<JetElement, Collection<ClassDescriptor>>) diagnostic;
|
||||
Errors.PLATFORM_CLASS_MAPPED_TO_KOTLIN.cast(diagnostic);
|
||||
|
||||
return new MapPlatformClassToKotlinFix(typeExpr, platformClass, parametrizedDiagnostic.getA());
|
||||
}
|
||||
|
||||
@@ -39,10 +39,7 @@ public class QuickFixFactoryForTypeMismatchError implements JetIntentionActionsF
|
||||
public List<IntentionAction> createActions(Diagnostic diagnostic) {
|
||||
List<IntentionAction> actions = new LinkedList<IntentionAction>();
|
||||
|
||||
assert diagnostic.getFactory() == Errors.TYPE_MISMATCH;
|
||||
@SuppressWarnings("unchecked")
|
||||
DiagnosticWithParameters2<JetExpression, JetType, JetType> diagnosticWithParameters =
|
||||
(DiagnosticWithParameters2<JetExpression, JetType, JetType>) diagnostic;
|
||||
DiagnosticWithParameters2<JetExpression, JetType, JetType> diagnosticWithParameters = Errors.TYPE_MISMATCH.cast(diagnostic);
|
||||
JetExpression expression = diagnosticWithParameters.getPsiElement();
|
||||
JetType expectedType = diagnosticWithParameters.getA();
|
||||
JetType expressionType = diagnosticWithParameters.getB();
|
||||
|
||||
@@ -30,14 +30,14 @@ import static org.jetbrains.jet.lexer.JetTokens.*;
|
||||
|
||||
public class QuickFixes {
|
||||
|
||||
private static final Multimap<DiagnosticFactory, JetIntentionActionsFactory> factories = HashMultimap.create();
|
||||
private static final Multimap<DiagnosticFactory, IntentionAction> actions = HashMultimap.create();
|
||||
private static final Multimap<DiagnosticFactory<?>, JetIntentionActionsFactory> factories = HashMultimap.create();
|
||||
private static final Multimap<DiagnosticFactory<?>, IntentionAction> actions = HashMultimap.create();
|
||||
|
||||
public static Collection<JetIntentionActionsFactory> getActionsFactories(DiagnosticFactory diagnosticFactory) {
|
||||
public static Collection<JetIntentionActionsFactory> getActionsFactories(DiagnosticFactory<?> diagnosticFactory) {
|
||||
return factories.get(diagnosticFactory);
|
||||
}
|
||||
|
||||
public static Collection<IntentionAction> getActions(DiagnosticFactory diagnosticFactory) {
|
||||
public static Collection<IntentionAction> getActions(DiagnosticFactory<?> diagnosticFactory) {
|
||||
return actions.get(diagnosticFactory);
|
||||
}
|
||||
|
||||
|
||||
@@ -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") &&
|
||||
|
||||
Reference in New Issue
Block a user