mirror of
https://github.com/revanced/smali.git
synced 2025-05-08 10:24:31 +02:00
Don't modify modifier outside of a write command
This commit is contained in:
parent
145cd6d518
commit
2ab03ae212
@ -32,6 +32,7 @@
|
|||||||
package org.jf.smalidea.psi.impl;
|
package org.jf.smalidea.psi.impl;
|
||||||
|
|
||||||
import com.intellij.lang.ASTNode;
|
import com.intellij.lang.ASTNode;
|
||||||
|
import com.intellij.openapi.command.WriteCommandAction;
|
||||||
import com.intellij.psi.PsiModifier.ModifierConstant;
|
import com.intellij.psi.PsiModifier.ModifierConstant;
|
||||||
import com.intellij.psi.PsiModifierList;
|
import com.intellij.psi.PsiModifierList;
|
||||||
import com.intellij.psi.PsiModifierListOwner;
|
import com.intellij.psi.PsiModifierListOwner;
|
||||||
@ -120,21 +121,30 @@ public class SmaliModifierList extends SmaliStubBasedPsiElement<SmaliModifierLis
|
|||||||
public void setModifierProperty(@ModifierConstant @NotNull @NonNls String name, boolean addModifier)
|
public void setModifierProperty(@ModifierConstant @NotNull @NonNls String name, boolean addModifier)
|
||||||
throws IncorrectOperationException {
|
throws IncorrectOperationException {
|
||||||
if (addModifier) {
|
if (addModifier) {
|
||||||
SmaliAccessList accessListNode = findAccessListNode();
|
final SmaliAccessList accessListNode = findAccessListNode();
|
||||||
if (accessListNode == null) {
|
if (accessListNode == null) {
|
||||||
throw new IncorrectOperationException("Cannot add modifier: no .class statement");
|
throw new IncorrectOperationException("Cannot add modifier: no .class statement");
|
||||||
}
|
}
|
||||||
TreeElement leaf = Factory.createSingleLeafElement(SmaliTokens.ACCESS_SPEC, name, null, getManager());
|
final TreeElement leaf = Factory.createSingleLeafElement(SmaliTokens.ACCESS_SPEC, name, null, getManager());
|
||||||
accessListNode.addInternal(leaf, leaf, null, null);
|
|
||||||
|
new WriteCommandAction.Simple(getProject(), getContainingFile()) {
|
||||||
|
@Override protected void run() throws Throwable {
|
||||||
|
accessListNode.addInternal(leaf, leaf, null, null);
|
||||||
|
}
|
||||||
|
}.execute();
|
||||||
} else {
|
} else {
|
||||||
SmaliAccessList accessListNode = findAccessListNode();
|
SmaliAccessList accessListNode = findAccessListNode();
|
||||||
if (accessListNode == null) {
|
if (accessListNode == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
ASTNode accessSpec = accessListNode.getAccessFlagNode(name);
|
final ASTNode accessSpec = accessListNode.getAccessFlagNode(name);
|
||||||
if (accessSpec != null) {
|
if (accessSpec != null) {
|
||||||
accessSpec.getPsi().delete();
|
new WriteCommandAction.Simple(getProject(), getContainingFile()) {
|
||||||
|
@Override protected void run() throws Throwable {
|
||||||
|
accessSpec.getPsi().delete();
|
||||||
|
}
|
||||||
|
}.execute();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user