backing fields resolve changed
KT-462 Consider allowing initializing properties via property names when it is safe KT-598 Allow to use backing fields after this expression
This commit is contained in:
@@ -31,7 +31,7 @@ public class AddModifierFix extends JetIntentionAction<JetModifierListOwner> {
|
||||
}
|
||||
|
||||
@NotNull
|
||||
/*package*/ static String getElementName(JetModifierListOwner modifierListOwner) {
|
||||
/*package*/ static String getElementName(@NotNull JetModifierListOwner modifierListOwner) {
|
||||
String name = null;
|
||||
if (modifierListOwner instanceof PsiNameIdentifierOwner) {
|
||||
PsiElement nameIdentifier = ((PsiNameIdentifierOwner) modifierListOwner).getNameIdentifier();
|
||||
|
||||
@@ -36,12 +36,7 @@ public class ChangeToBackingFieldFix extends JetIntentionAction<JetSimpleNameExp
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
|
||||
JetSimpleNameExpression backingField = (JetSimpleNameExpression) JetPsiFactory.createExpression(project, "$" + element.getText());
|
||||
if (element.getParent() instanceof JetDotQualifiedExpression && ((JetDotQualifiedExpression) element.getParent()).getReceiverExpression() instanceof JetThisExpression) {
|
||||
element.getParent().replace(backingField);
|
||||
}
|
||||
else {
|
||||
element.replace(backingField);
|
||||
}
|
||||
element.replace(backingField);
|
||||
}
|
||||
|
||||
public static JetIntentionActionFactory<JetSimpleNameExpression> createFactory() {
|
||||
|
||||
@@ -78,8 +78,9 @@ public class ChangeVariableMutabilityFix implements IntentionAction {
|
||||
|
||||
@Override
|
||||
public void invoke(@NotNull Project project, Editor editor, PsiFile file) throws IncorrectOperationException {
|
||||
JetProperty element = getCorrespondingProperty(editor, (JetFile)file);
|
||||
JetProperty newElement = (JetProperty) element.copy();
|
||||
JetProperty property = getCorrespondingProperty(editor, (JetFile)file);
|
||||
assert property != null && !property.isVar();
|
||||
JetProperty newElement = (JetProperty) property.copy();
|
||||
if (newElement.isVar()) {
|
||||
PsiElement varElement = newElement.getNode().findChildByType(JetTokens.VAR_KEYWORD).getPsi();
|
||||
|
||||
@@ -94,7 +95,7 @@ public class ChangeVariableMutabilityFix implements IntentionAction {
|
||||
PsiElement varElement = varProperty.getNode().findChildByType(JetTokens.VAR_KEYWORD).getPsi();
|
||||
CodeEditUtil.replaceChild(newElement.getNode(), valElement.getNode(), varElement.getNode());
|
||||
}
|
||||
element.replace(newElement);
|
||||
property.replace(newElement);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -111,8 +111,10 @@ public class QuickFixes {
|
||||
add(Errors.ILLEGAL_MODIFIER, removeModifierFactory);
|
||||
|
||||
add(Errors.PUBLIC_MEMBER_SHOULD_SPECIFY_TYPE, AddReturnTypeFix.createFactory());
|
||||
|
||||
add(Errors.INITIALIZATION_USING_BACKING_FIELD, ChangeToBackingFieldFix.createFactory());
|
||||
|
||||
JetIntentionActionFactory<JetSimpleNameExpression> changeToBackingFieldFactory = ChangeToBackingFieldFix.createFactory();
|
||||
add(Errors.INITIALIZATION_USING_BACKING_FIELD_CUSTOM_SETTER, changeToBackingFieldFactory);
|
||||
add(Errors.INITIALIZATION_USING_BACKING_FIELD_OPEN_SETTER, changeToBackingFieldFactory);
|
||||
|
||||
ImplementMethodsHandler implementMethodsHandler = new ImplementMethodsHandler();
|
||||
actionMap.put(Errors.ABSTRACT_MEMBER_NOT_IMPLEMENTED, implementMethodsHandler);
|
||||
|
||||
@@ -35,7 +35,7 @@ public class RemoveModifierFix {
|
||||
if (isRedundant) {
|
||||
return JetBundle.message("remove.redundant.modifier", modifier.getValue());
|
||||
}
|
||||
if (element != null && modifier == JetTokens.ABSTRACT_KEYWORD || modifier == JetTokens.OPEN_KEYWORD) {
|
||||
if (element != null && (modifier == JetTokens.ABSTRACT_KEYWORD || modifier == JetTokens.OPEN_KEYWORD)) {
|
||||
return JetBundle.message("make.element.not.modifier", AddModifierFix.getElementName(element), modifier.getValue());
|
||||
}
|
||||
return JetBundle.message("remove.modifier", modifier.getValue());
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
|
||||
class Test() {
|
||||
var a : Int = 111
|
||||
var b : Int get() = <error>$a</error>; set(x) {a = x; <error>$a</error> = x}
|
||||
var b : Int get() = $a; set(x) {a = x; $a = x}
|
||||
|
||||
this(i : Int) : this() {
|
||||
<error>$b</error> = $a
|
||||
@@ -22,7 +22,7 @@ class Test() {
|
||||
a = <error>$b</error>
|
||||
}
|
||||
fun f() {
|
||||
<error>$b</error> = <error>$a</error>
|
||||
<error>$b</error> = $a
|
||||
a = <error>$b</error>
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// "Change reference to backing field" "true"
|
||||
class A() {
|
||||
val a : Int
|
||||
var a : Int
|
||||
set(v) {}
|
||||
{
|
||||
<caret>$a = 1
|
||||
}
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
// "Change reference to backing field" "true"
|
||||
public open class Identifier() {
|
||||
var field : Boolean
|
||||
set(v) {}
|
||||
{
|
||||
<caret>$field = false;
|
||||
<caret>this.$field = false;
|
||||
}
|
||||
}
|
||||
@@ -1,6 +1,7 @@
|
||||
// "Change reference to backing field" "true"
|
||||
class A() {
|
||||
val a : Int
|
||||
var a : Int
|
||||
set(v) {}
|
||||
{
|
||||
<caret>a = 1
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
// "Change reference to backing field" "true"
|
||||
public open class Identifier() {
|
||||
var field : Boolean
|
||||
set(v) {}
|
||||
{
|
||||
<caret>this.field = false;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user