Merge the empty modifier list with the access list

This commit is contained in:
Ben Gruver 2015-02-18 20:04:58 -08:00
parent 92352fa44c
commit 3505b35057
20 changed files with 48 additions and 182 deletions

View File

@ -189,7 +189,6 @@ sync[boolean toEof]
smali_file smali_file
@init { @init {
mark().done(SmaliElementTypes.MODIFIER_LIST);
mark().done(SmaliElementTypes.EXTENDS_LIST); mark().done(SmaliElementTypes.EXTENDS_LIST);
mark().done(SmaliElementTypes.IMPLEMENTS_LIST); mark().done(SmaliElementTypes.IMPLEMENTS_LIST);
} }
@ -249,7 +248,7 @@ source_spec
class_access_list class_access_list
@init { Marker marker = mark(); } @init { Marker marker = mark(); }
: ACCESS_SPEC* : ACCESS_SPEC*
{ marker.done(SmaliElementTypes.ACCESS_LIST); }; { marker.done(SmaliElementTypes.MODIFIER_LIST); };
catch [RecognitionException re] { catch [RecognitionException re] {
recover(input, re); recover(input, re);
reportError(marker, re, false); reportError(marker, re, false);
@ -258,7 +257,7 @@ class_access_list
access_list access_list
@init { Marker marker = mark(); } @init { Marker marker = mark(); }
: ACCESS_SPEC* : ACCESS_SPEC*
{ marker.done(SmaliElementTypes.ACCESS_LIST); }; { marker.done(SmaliElementTypes.MODIFIER_LIST); };
catch [RecognitionException re] { catch [RecognitionException re] {
recover(input, re); recover(input, re);
reportError(marker, re, false); reportError(marker, re, false);
@ -271,7 +270,6 @@ add them to the $smali_file::classAnnotations list*/
field field
@init { @init {
Marker marker = mark(); Marker marker = mark();
mark().done(SmaliElementTypes.MODIFIER_LIST);
Marker annotationsMarker = null; Marker annotationsMarker = null;
boolean classAnnotations = true; boolean classAnnotations = true;
} }
@ -325,7 +323,6 @@ field_initializer
method method
@init { @init {
Marker marker = mark(); Marker marker = mark();
mark().done(SmaliElementTypes.MODIFIER_LIST);
mark().done(SmaliElementTypes.THROWS_LIST); mark().done(SmaliElementTypes.THROWS_LIST);
} }
: METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives : METHOD_DIRECTIVE access_list member_name method_prototype statements_and_directives

View File

@ -61,8 +61,6 @@ public class SmaliElementTypes {
new SmaliCompositeElementType("REGISTERS_STATEMENT", SmaliRegistersStatement.FACTORY); new SmaliCompositeElementType("REGISTERS_STATEMENT", SmaliRegistersStatement.FACTORY);
public static final SmaliCompositeElementType REGISTER_REFERENCE = public static final SmaliCompositeElementType REGISTER_REFERENCE =
new SmaliCompositeElementType("REGISTER_REFERENCE", SmaliRegisterReference.FACTORY); new SmaliCompositeElementType("REGISTER_REFERENCE", SmaliRegisterReference.FACTORY);
public static final SmaliCompositeElementType ACCESS_LIST =
new SmaliCompositeElementType("ACCESS_LIST", SmaliAccessList.FACTORY);
public static final SmaliCompositeElementType MEMBER_NAME = public static final SmaliCompositeElementType MEMBER_NAME =
new SmaliCompositeElementType("MEMBER_NAME", SmaliMemberName.FACTORY); new SmaliCompositeElementType("MEMBER_NAME", SmaliMemberName.FACTORY);
public static final SmaliCompositeElementType LOCAL_NAME = public static final SmaliCompositeElementType LOCAL_NAME =

View File

@ -35,11 +35,9 @@ import com.intellij.psi.PsiAnnotationOwner;
import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
import org.jf.smalidea.psi.impl.SmaliAccessList;
import org.jf.smalidea.psi.impl.SmaliAnnotation; import org.jf.smalidea.psi.impl.SmaliAnnotation;
public interface SmaliModifierListOwner extends PsiAnnotationOwner { public interface SmaliModifierListOwner extends PsiAnnotationOwner {
@Nullable SmaliAccessList getAccessFlagsNode();
@NotNull @Override SmaliAnnotation[] getAnnotations(); @NotNull @Override SmaliAnnotation[] getAnnotations();
@NotNull @Override SmaliAnnotation[] getApplicableAnnotations(); @NotNull @Override SmaliAnnotation[] getApplicableAnnotations();
@Nullable @Override SmaliAnnotation findAnnotation(@NotNull @NonNls String qualifiedName); @Nullable @Override SmaliAnnotation findAnnotation(@NotNull @NonNls String qualifiedName);

View File

@ -1,61 +0,0 @@
/*
* Copyright 2014, Google Inc.
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are
* met:
*
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above
* copyright notice, this list of conditions and the following disclaimer
* in the documentation and/or other materials provided with the
* distribution.
* * Neither the name of Google Inc. nor the names of its
* contributors may be used to endorse or promote products derived from
* this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package org.jf.smalidea.psi.impl;
import com.intellij.lang.ASTNode;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jf.smalidea.SmaliTokens;
import org.jf.smalidea.psi.SmaliCompositeElementFactory;
import org.jf.smalidea.psi.SmaliElementTypes;
public class SmaliAccessList extends SmaliCompositeElement {
public static final SmaliCompositeElementFactory FACTORY = new SmaliCompositeElementFactory() {
@Override public SmaliCompositeElement createElement() {
return new SmaliAccessList();
}
};
public SmaliAccessList() {
super(SmaliElementTypes.ACCESS_LIST);
}
@Nullable
public ASTNode getAccessFlagNode(@NotNull String accessFlag) {
for (ASTNode node: findChildrenByType(SmaliTokens.ACCESS_SPEC)) {
if (node.getText().equals(accessFlag)) {
return node;
}
}
return null;
}
}

View File

@ -99,28 +99,21 @@ public class SmaliClass extends SmaliStubBasedPsiElement<SmaliClassStub> impleme
return name.substring(0, lastDot); return name.substring(0, lastDot);
} }
@Nullable @Override public SmaliAccessList getAccessFlagsNode() {
SmaliClassStatement classStatement = findChildByClass(SmaliClassStatement.class);
if (classStatement == null) {
return null;
}
return classStatement.getAccessFlagsNode();
}
@Override public boolean hasTypeParameters() { @Override public boolean hasTypeParameters() {
// TODO: implement generics // TODO: implement generics
return false; return false;
} }
@Override public boolean isInterface() { @Override public boolean isInterface() {
return getModifierList().hasModifierProperty("interface"); return hasModifierProperty("interface");
} }
@Override public boolean isAnnotationType() { @Override public boolean isAnnotationType() {
return getModifierList().hasModifierProperty("annotation"); return hasModifierProperty("annotation");
} }
@Override public boolean isEnum() { @Override public boolean isEnum() {
return getModifierList().hasModifierProperty("enum"); return hasModifierProperty("enum");
} }
@Nullable public SmaliSuperStatement getSuperStatement() { @Nullable public SmaliSuperStatement getSuperStatement() {
@ -277,14 +270,17 @@ public class SmaliClass extends SmaliStubBasedPsiElement<SmaliClassStub> impleme
return new PsiTypeParameter[0]; return new PsiTypeParameter[0];
} }
@NotNull @Override public SmaliModifierList getModifierList() { @Nullable @Override public SmaliModifierList getModifierList() {
SmaliModifierList modifierList = getStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST); SmaliClassStatement classStatement = getStubOrPsiChild(SmaliElementTypes.CLASS_STATEMENT);
assert modifierList != null; if (classStatement == null) {
return modifierList; return null;
}
return classStatement.getModifierList();
} }
@Override public boolean hasModifierProperty(@ModifierConstant @NonNls @NotNull String name) { @Override public boolean hasModifierProperty(@ModifierConstant @NonNls @NotNull String name) {
return getModifierList().hasModifierProperty(name); SmaliModifierList smaliModifierList = getModifierList();
return smaliModifierList != null && smaliModifierList.hasModifierProperty(name);
} }
@NotNull @Override public SmaliAnnotation[] getAnnotations() { @NotNull @Override public SmaliAnnotation[] getAnnotations() {

View File

@ -64,7 +64,7 @@ public class SmaliClassStatement extends SmaliStubBasedPsiElement<SmaliClassStat
} }
@Nullable @Nullable
public SmaliAccessList getAccessFlagsNode() { public SmaliModifierList getModifierList() {
return findChildByClass(SmaliAccessList.class); return getStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST);
} }
} }

View File

@ -66,10 +66,6 @@ public class SmaliField extends SmaliStubBasedPsiElement<SmaliFieldStub> impleme
return smaliMemberName.getText(); return smaliMemberName.getText();
} }
@Nullable @Override public SmaliAccessList getAccessFlagsNode() {
return findChildByClass(SmaliAccessList.class);
}
@NotNull @Override public SmaliModifierList getModifierList() { @NotNull @Override public SmaliModifierList getModifierList() {
SmaliModifierList modifierList = getStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST); SmaliModifierList modifierList = getStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST);
assert modifierList != null; assert modifierList != null;

View File

@ -260,10 +260,6 @@ public class SmaliMethod extends SmaliStubBasedPsiElement<SmaliMethodStub>
return getModifierList().hasModifierProperty(name); return getModifierList().hasModifierProperty(name);
} }
@Nullable @Override public SmaliAccessList getAccessFlagsNode() {
return findChildByClass(SmaliAccessList.class);
}
@NotNull @Override public SmaliAnnotation[] getAnnotations() { @NotNull @Override public SmaliAnnotation[] getAnnotations() {
return getStubOrPsiChildren(SmaliElementTypes.ANNOTATION, new SmaliAnnotation[0]); return getStubOrPsiChildren(SmaliElementTypes.ANNOTATION, new SmaliAnnotation[0]);
} }

View File

@ -52,11 +52,6 @@ public class SmaliMethodParameter extends SmaliStubBasedPsiElement<SmaliMethodPa
super(node); super(node);
} }
@Nullable @Override public SmaliAccessList getAccessFlagsNode() {
// not applicable
return null;
}
@NotNull @Override public SmaliModifierList getModifierList() { @NotNull @Override public SmaliModifierList getModifierList() {
return getRequiredStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST); return getRequiredStubOrPsiChild(SmaliElementTypes.MODIFIER_LIST);
} }

View File

@ -33,13 +33,13 @@ 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.openapi.command.WriteCommandAction;
import com.intellij.psi.PsiElement;
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;
import com.intellij.psi.StubBasedPsiElement; import com.intellij.psi.StubBasedPsiElement;
import com.intellij.psi.impl.source.tree.Factory; import com.intellij.psi.impl.source.tree.Factory;
import com.intellij.psi.impl.source.tree.TreeElement; import com.intellij.psi.impl.source.tree.TreeElement;
import com.intellij.psi.tree.TokenSet;
import com.intellij.util.IncorrectOperationException; import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
@ -62,29 +62,16 @@ public class SmaliModifierList extends SmaliStubBasedPsiElement<SmaliModifierLis
super(stub, SmaliModifierListElementType.INSTANCE); super(stub, SmaliModifierListElementType.INSTANCE);
} }
@Nullable
private SmaliAccessList findAccessListNode() {
SmaliModifierListOwner modifierListOwner = (SmaliModifierListOwner)getStubOrPsiParent();
if (modifierListOwner == null) {
return null;
}
return modifierListOwner.getAccessFlagsNode();
}
public int getAccessFlags() { public int getAccessFlags() {
SmaliModifierListStub stub = getStub(); SmaliModifierListStub stub = getStub();
if (stub != null) { if (stub != null) {
return stub.getAccessFlags(); return stub.getAccessFlags();
} }
ASTNode accessListNode = findAccessListNode();
if (accessListNode == null) {
return 0;
}
int flags = 0; int flags = 0;
for (ASTNode accessSpecNode: accessListNode.getChildren(TokenSet.create(SmaliTokens.ACCESS_SPEC))) {
AccessFlags flag = AccessFlags.getAccessFlag(accessSpecNode.getText()); for (PsiElement accessSpec: findChildrenByType(SmaliTokens.ACCESS_SPEC)) {
AccessFlags flag = AccessFlags.getAccessFlag(accessSpec.getText());
if (flag != null) { if (flag != null) {
flags |= flag.getValue(); flags |= flag.getValue();
} }
@ -107,13 +94,8 @@ public class SmaliModifierList extends SmaliStubBasedPsiElement<SmaliModifierLis
return (stub.getAccessFlags() & flag.getValue()) != 0; return (stub.getAccessFlags() & flag.getValue()) != 0;
} }
ASTNode accessListNode = findAccessListNode(); for (PsiElement accessSpec: findChildrenByType(SmaliTokens.ACCESS_SPEC)) {
if (accessListNode == null) { if (accessSpec.getText().equals(name)) {
return false;
}
for (ASTNode accessSpecNode: accessListNode.getChildren(TokenSet.create(SmaliTokens.ACCESS_SPEC))) {
if (accessSpecNode.getText().equals(name)) {
return true; return true;
} }
} }
@ -125,28 +107,20 @@ 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) {
final SmaliAccessList accessListNode = findAccessListNode();
if (accessListNode == null) {
throw new IncorrectOperationException("Cannot add modifier: no .class statement");
}
final TreeElement leaf = Factory.createSingleLeafElement(SmaliTokens.ACCESS_SPEC, name, null, getManager()); final TreeElement leaf = Factory.createSingleLeafElement(SmaliTokens.ACCESS_SPEC, name, null, getManager());
new WriteCommandAction.Simple(getProject(), getContainingFile()) { new WriteCommandAction.Simple(getProject(), getContainingFile()) {
@Override protected void run() throws Throwable { @Override protected void run() throws Throwable {
accessListNode.addInternal(leaf, leaf, null, null); addInternal(leaf, leaf, null, null);
} }
}.execute(); }.execute();
} else { } else {
SmaliAccessList accessListNode = findAccessListNode(); final PsiElement accessSpec = getAccessFlagElement(name);
if (accessListNode == null) {
return;
}
final ASTNode accessSpec = accessListNode.getAccessFlagNode(name);
if (accessSpec != null) { if (accessSpec != null) {
new WriteCommandAction.Simple(getProject(), getContainingFile()) { new WriteCommandAction.Simple(getProject(), getContainingFile()) {
@Override protected void run() throws Throwable { @Override protected void run() throws Throwable {
accessSpec.getPsi().delete(); accessSpec.delete();
} }
}.execute(); }.execute();
} }
@ -180,4 +154,13 @@ public class SmaliModifierList extends SmaliStubBasedPsiElement<SmaliModifierLis
@NotNull @Override public SmaliAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) { @NotNull @Override public SmaliAnnotation addAnnotation(@NotNull @NonNls String qualifiedName) {
return getParentForAnnotations().addAnnotation(qualifiedName); return getParentForAnnotations().addAnnotation(qualifiedName);
} }
@Nullable public PsiElement getAccessFlagElement(@NotNull String accessFlag) {
for (PsiElement accessSpec: findChildrenByType(SmaliTokens.ACCESS_SPEC)) {
if (accessSpec.getText().equals(accessFlag)) {
return accessSpec;
}
}
return null;
}
} }

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)

View File

@ -1,14 +1,12 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
<empty list> <empty list>
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiErrorElement:mismatched input '<EOF>' expecting CLASS_DESCRIPTOR PsiErrorElement:mismatched input '<EOF>' expecting CLASS_DESCRIPTOR
<empty list> <empty list>

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace('\n') PsiWhiteSpace('\n')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiErrorElement:extraneous input '.super' expecting CLASS_DESCRIPTOR PsiErrorElement:extraneous input '.super' expecting CLASS_DESCRIPTOR
PsiElement(SUPER_DIRECTIVE)('.super') PsiElement(SUPER_DIRECTIVE)('.super')

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
PsiElement(ACCESS_SPEC)('public') PsiElement(ACCESS_SPEC)('public')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiErrorElement:extraneous input '.class' expecting CLASS_DESCRIPTOR PsiErrorElement:extraneous input '.class' expecting CLASS_DESCRIPTOR

View File

@ -1,16 +1,12 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
<empty list> <empty list>
SmaliField(FIELD) SmaliField(FIELD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
PsiElement(FIELD_DIRECTIVE)('.field') PsiElement(FIELD_DIRECTIVE)('.field')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiErrorElement:no viable alternative at input '<EOF>' PsiErrorElement:no viable alternative at input '<EOF>'
<empty list> <empty list>

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(CLASS_TYPE) PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Ltest;') PsiElement(CLASS_DESCRIPTOR)('Ltest;')
@ -21,13 +19,11 @@ smali.FILE
PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;') PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
SmaliMethod(METHOD) SmaliMethod(METHOD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliThrowsList(THROWS_LIST) SmaliThrowsList(THROWS_LIST)
<empty list> <empty list>
PsiElement(METHOD_DIRECTIVE)('.method') PsiElement(METHOD_DIRECTIVE)('.method')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiErrorElement:no viable alternative at input '.blah' PsiErrorElement:no viable alternative at input '.blah'
PsiElement(BAD_CHARACTER)('.blah') PsiElement(BAD_CHARACTER)('.blah')

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(CLASS_TYPE) PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Ltest;') PsiElement(CLASS_DESCRIPTOR)('Ltest;')
@ -21,13 +19,11 @@ smali.FILE
PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;') PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
SmaliMethod(METHOD) SmaliMethod(METHOD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliThrowsList(THROWS_LIST) SmaliThrowsList(THROWS_LIST)
<empty list> <empty list>
PsiElement(METHOD_DIRECTIVE)('.method') PsiElement(METHOD_DIRECTIVE)('.method')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(MEMBER_NAME) PsiElement(MEMBER_NAME)
PsiElement(SIMPLE_NAME)('blah') PsiElement(SIMPLE_NAME)('blah')
@ -40,12 +36,10 @@ smali.FILE
PsiErrorElement:missing END_METHOD_DIRECTIVE at '.method' PsiErrorElement:missing END_METHOD_DIRECTIVE at '.method'
<empty list> <empty list>
SmaliMethod(METHOD) SmaliMethod(METHOD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliThrowsList(THROWS_LIST) SmaliThrowsList(THROWS_LIST)
<empty list> <empty list>
PsiElement(METHOD_DIRECTIVE)('.method') PsiElement(METHOD_DIRECTIVE)('.method')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiErrorElement:no viable alternative at input '<EOF>' PsiErrorElement:no viable alternative at input '<EOF>'
<empty list> <empty list>

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(CLASS_TYPE) PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Lblah;') PsiElement(CLASS_DESCRIPTOR)('Lblah;')
@ -21,13 +19,11 @@ smali.FILE
PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;') PsiElement(CLASS_DESCRIPTOR)('Ljava/lang/Object;')
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
SmaliMethod(METHOD) SmaliMethod(METHOD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliThrowsList(THROWS_LIST) SmaliThrowsList(THROWS_LIST)
<empty list> <empty list>
PsiElement(METHOD_DIRECTIVE)('.method') PsiElement(METHOD_DIRECTIVE)('.method')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(MEMBER_NAME) PsiElement(MEMBER_NAME)
PsiElement(SIMPLE_NAME)('blah') PsiElement(SIMPLE_NAME)('blah')

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(CLASS_TYPE) PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Lblah;') PsiElement(CLASS_DESCRIPTOR)('Lblah;')

View File

@ -1,7 +1,5 @@
smali.FILE smali.FILE
SmaliClass(CLASS) SmaliClass(CLASS)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliExtendsList(EXTENDS_LIST) SmaliExtendsList(EXTENDS_LIST)
<empty list> <empty list>
SmaliImplementsList(IMPLEMENTS_LIST) SmaliImplementsList(IMPLEMENTS_LIST)
@ -9,7 +7,7 @@ smali.FILE
SmaliClassStatement(CLASS_STATEMENT) SmaliClassStatement(CLASS_STATEMENT)
PsiElement(CLASS_DIRECTIVE)('.class') PsiElement(CLASS_DIRECTIVE)('.class')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(CLASS_TYPE) PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Lblah;') PsiElement(CLASS_DESCRIPTOR)('Lblah;')
@ -20,13 +18,11 @@ smali.FILE
<empty list> <empty list>
PsiWhiteSpace('\n\n') PsiWhiteSpace('\n\n')
SmaliMethod(METHOD) SmaliMethod(METHOD)
SmaliModifierList(MODIFIER_LIST)
<empty list>
SmaliThrowsList(THROWS_LIST) SmaliThrowsList(THROWS_LIST)
<empty list> <empty list>
PsiElement(METHOD_DIRECTIVE)('.method') PsiElement(METHOD_DIRECTIVE)('.method')
PsiWhiteSpace(' ') PsiWhiteSpace(' ')
PsiElement(ACCESS_LIST) SmaliModifierList(MODIFIER_LIST)
<empty list> <empty list>
PsiElement(MEMBER_NAME) PsiElement(MEMBER_NAME)
PsiElement(SIMPLE_NAME)('blah') PsiElement(SIMPLE_NAME)('blah')