Improve error recovery for commas

This commit is contained in:
Ben Gruver
2015-02-26 20:03:21 -08:00
parent 0f597ae106
commit 16c154b96e
3 changed files with 106 additions and 40 deletions

View File

@ -1,4 +1,9 @@
.method blah()V
.registers 1
invoke-virtual .blah v0}, Lblah;->blah()V
.end method
.method blah2()V
.registers 1
invoke-virtual {v1, v2} .blah Lblah;->blah()V
.end method

View File

@ -51,4 +51,57 @@ smali.FILE
PsiElement(VOID_TYPE)
PsiElement(VOID_TYPE)('V')
PsiWhiteSpace('\n')
PsiElement(END_METHOD_DIRECTIVE)('.end method')
PsiWhiteSpace('\n\n')
SmaliMethod(METHOD)
SmaliThrowsList(THROWS_LIST)
<empty list>
PsiElement(METHOD_DIRECTIVE)('.method')
PsiWhiteSpace(' ')
SmaliModifierList(MODIFIER_LIST)
<empty list>
PsiElement(MEMBER_NAME)
PsiElement(SIMPLE_NAME)('blah2')
SmaliMethodPrototype(METHOD_PROTOTYPE)
PsiElement(OPEN_PAREN)('(')
SmaliMethodParamList(METHOD_PARAM_LIST)
<empty list>
PsiElement(CLOSE_PAREN)(')')
PsiElement(VOID_TYPE)
PsiElement(VOID_TYPE)('V')
PsiWhiteSpace('\n')
PsiElement(REGISTERS_STATEMENT)
PsiElement(REGISTERS_DIRECTIVE)('.registers')
PsiWhiteSpace(' ')
PsiElement(LITERAL)
PsiElement(POSITIVE_INTEGER_LITERAL)('1')
PsiWhiteSpace('\n')
PsiElement(INSTRUCTION)
PsiElement(INSTRUCTION_FORMAT35c_METHOD)('invoke-virtual')
PsiWhiteSpace(' ')
PsiElement(OPEN_BRACE)('{')
PsiElement(REGISTER_REFERENCE)
PsiElement(REGISTER)('v1')
PsiElement(COMMA)(',')
PsiWhiteSpace(' ')
PsiElement(REGISTER_REFERENCE)
PsiElement(REGISTER)('v2')
PsiElement(CLOSE_BRACE)('}')
PsiWhiteSpace(' ')
PsiErrorElement:mismatched input '.blah' expecting COMMA
PsiElement(BAD_CHARACTER)('.blah')
PsiWhiteSpace(' ')
PsiElement(METHOD_REFERENCE)
PsiElement(CLASS_TYPE)
PsiElement(CLASS_DESCRIPTOR)('Lblah;')
PsiElement(ARROW)('->')
PsiElement(MEMBER_NAME)
PsiElement(SIMPLE_NAME)('blah')
PsiElement(OPEN_PAREN)('(')
PsiElement(METHOD_REFERENCE_PARAM_LIST)
<empty list>
PsiElement(CLOSE_PAREN)(')')
PsiElement(VOID_TYPE)
PsiElement(VOID_TYPE)('V')
PsiWhiteSpace('\n')
PsiElement(END_METHOD_DIRECTIVE)('.end method')