Registered 'change variable mutability' fix for 'val reassignment' error
This commit is contained in:
@@ -143,7 +143,18 @@ public interface Errors {
|
|||||||
PsiElementOnlyDiagnosticFactory3<JetModifierListOwner, CallableMemberDescriptor, CallableMemberDescriptor, DeclarationDescriptor> VIRTUAL_MEMBER_HIDDEN = PsiElementOnlyDiagnosticFactory3.create(ERROR, "''{0}'' hides ''{1}'' in class {2} and needs 'override' modifier", DescriptorRenderer.TEXT);
|
PsiElementOnlyDiagnosticFactory3<JetModifierListOwner, CallableMemberDescriptor, CallableMemberDescriptor, DeclarationDescriptor> VIRTUAL_MEMBER_HIDDEN = PsiElementOnlyDiagnosticFactory3.create(ERROR, "''{0}'' hides ''{1}'' in class {2} and needs 'override' modifier", DescriptorRenderer.TEXT);
|
||||||
|
|
||||||
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> UNINITIALIZED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Variable ''{0}'' must be initialized", NAME);
|
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> UNINITIALIZED_VARIABLE = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Variable ''{0}'' must be initialized", NAME);
|
||||||
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> VAL_REASSIGNMENT = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Val can not be reassigned", NAME);
|
PsiElementOnlyDiagnosticFactory2<JetSimpleNameExpression, DeclarationDescriptor, JetProperty[]> VAL_REASSIGNMENT = new PsiElementOnlyDiagnosticFactory2<JetSimpleNameExpression, DeclarationDescriptor, JetProperty[]>(ERROR, "Val can not be reassigned", NAME) {
|
||||||
|
@NotNull
|
||||||
|
@Override
|
||||||
|
public DiagnosticWithPsiElement<JetSimpleNameExpression> on(@NotNull JetSimpleNameExpression elementToBlame, @NotNull ASTNode nodeToMark, @NotNull DeclarationDescriptor declarationDescriptor, @NotNull JetProperty[] property) {
|
||||||
|
DiagnosticWithPsiElement<JetSimpleNameExpression> diagnostic = super.on(elementToBlame, nodeToMark, declarationDescriptor, property);
|
||||||
|
if (property.length == 1) {
|
||||||
|
return diagnostic.add(DiagnosticParameters.PROPERTY, property[0]);
|
||||||
|
}
|
||||||
|
return diagnostic;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> INITIALIZATION_USING_BACKING_FIELD = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Initialization using backing field required", NAME);
|
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> INITIALIZATION_USING_BACKING_FIELD = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Initialization using backing field required", NAME);
|
||||||
|
|
||||||
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> FUNCTION_PARAMETERS_OF_INLINE_FUNCTION = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Function parameters of inline function can only be invoked", NAME);
|
PsiElementOnlyDiagnosticFactory1<JetSimpleNameExpression, DeclarationDescriptor> FUNCTION_PARAMETERS_OF_INLINE_FUNCTION = PsiElementOnlyDiagnosticFactory1.create(ERROR, "Function parameters of inline function can only be invoked", NAME);
|
||||||
|
|||||||
@@ -7,9 +7,14 @@ import com.intellij.psi.PsiFile;
|
|||||||
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
import com.intellij.psi.impl.source.codeStyle.CodeEditUtil;
|
||||||
import com.intellij.util.IncorrectOperationException;
|
import com.intellij.util.IncorrectOperationException;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
import org.jetbrains.jet.lang.diagnostics.DiagnosticParameters;
|
||||||
|
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithParameters;
|
||||||
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithPsiElement;
|
import org.jetbrains.jet.lang.diagnostics.DiagnosticWithPsiElement;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetElement;
|
||||||
import org.jetbrains.jet.lang.psi.JetProperty;
|
import org.jetbrains.jet.lang.psi.JetProperty;
|
||||||
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
import org.jetbrains.jet.lang.psi.JetPsiFactory;
|
||||||
|
import org.jetbrains.jet.lang.psi.JetSimpleNameExpression;
|
||||||
import org.jetbrains.jet.lexer.JetTokens;
|
import org.jetbrains.jet.lexer.JetTokens;
|
||||||
import org.jetbrains.jet.plugin.JetBundle;
|
import org.jetbrains.jet.plugin.JetBundle;
|
||||||
|
|
||||||
@@ -55,6 +60,7 @@ public class ChangeVariableMutabilityFix extends JetIntentionAction<JetProperty>
|
|||||||
|
|
||||||
public static JetIntentionActionFactory<JetProperty> createFactory() {
|
public static JetIntentionActionFactory<JetProperty> createFactory() {
|
||||||
return new JetIntentionActionFactory<JetProperty>() {
|
return new JetIntentionActionFactory<JetProperty>() {
|
||||||
|
@Nullable
|
||||||
@Override
|
@Override
|
||||||
public JetIntentionAction<JetProperty> createAction(DiagnosticWithPsiElement diagnostic) {
|
public JetIntentionAction<JetProperty> createAction(DiagnosticWithPsiElement diagnostic) {
|
||||||
assert diagnostic.getPsiElement() instanceof JetProperty;
|
assert diagnostic.getPsiElement() instanceof JetProperty;
|
||||||
@@ -62,4 +68,18 @@ public class ChangeVariableMutabilityFix extends JetIntentionAction<JetProperty>
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static JetIntentionActionFactory<JetElement> createFromSimpleNameFactory() {
|
||||||
|
return new JetIntentionActionFactory<JetElement>() {
|
||||||
|
@Override
|
||||||
|
public JetIntentionAction<JetElement> createAction(DiagnosticWithPsiElement diagnostic) {
|
||||||
|
DiagnosticWithParameters<PsiElement> diagnosticWithParameters = assertAndCastToDiagnosticWithParameters(diagnostic, DiagnosticParameters.PROPERTY);
|
||||||
|
JetProperty property = diagnosticWithParameters.getParameter(DiagnosticParameters.PROPERTY);
|
||||||
|
if (diagnostic.getPsiElement().getContainingFile() == property.getContainingFile()) {
|
||||||
|
return (JetIntentionAction) new ChangeVariableMutabilityFix(property);
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -71,6 +71,7 @@ public class QuickFixes {
|
|||||||
add(Errors.VIRTUAL_MEMBER_HIDDEN, AddModifierFix.createFactory(JetTokens.OVERRIDE_KEYWORD, new JetToken[] {JetTokens.OPEN_KEYWORD}));
|
add(Errors.VIRTUAL_MEMBER_HIDDEN, AddModifierFix.createFactory(JetTokens.OVERRIDE_KEYWORD, new JetToken[] {JetTokens.OPEN_KEYWORD}));
|
||||||
|
|
||||||
add(Errors.VAL_WITH_SETTER, ChangeVariableMutabilityFix.createFactory());
|
add(Errors.VAL_WITH_SETTER, ChangeVariableMutabilityFix.createFactory());
|
||||||
|
add(Errors.VAL_REASSIGNMENT, ChangeVariableMutabilityFix.createFromSimpleNameFactory());
|
||||||
|
|
||||||
add(Errors.USELESS_CAST_STATIC_ASSERT_IS_FINE, ReplaceOperationInBinaryExpressionFix.createChangeCastToStaticAssertFactory());
|
add(Errors.USELESS_CAST_STATIC_ASSERT_IS_FINE, ReplaceOperationInBinaryExpressionFix.createChangeCastToStaticAssertFactory());
|
||||||
add(Errors.USELESS_CAST, RemoveRightPartOfBinaryExpressionFix.createRemoveCastFactory());
|
add(Errors.USELESS_CAST, RemoveRightPartOfBinaryExpressionFix.createRemoveCastFactory());
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
fun foo() {
|
||||||
|
var a = 1
|
||||||
|
<caret>a = 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
var a = 4
|
||||||
|
|
||||||
|
fun bar() {
|
||||||
|
<caret>a = 5
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
class A() {
|
||||||
|
var a = 1
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
<caret>a = 5
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,5 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
fun foo() {
|
||||||
|
val a = 1
|
||||||
|
<caret>a = 3
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
val a = 4
|
||||||
|
|
||||||
|
fun bar() {
|
||||||
|
<caret>a = 5
|
||||||
|
}
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
// "Make variable mutable" "true"
|
||||||
|
class A() {
|
||||||
|
val a = 1
|
||||||
|
|
||||||
|
fun foo() {
|
||||||
|
<caret>a = 5
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user