Allow arbitrary method names in <>

Kotlin is known to use <anonymous>
This commit is contained in:
Ben Gruver 2013-04-07 13:23:39 -07:00
parent cf45978c6a
commit 2a206e6f85
4 changed files with 6 additions and 4 deletions

View File

@ -3128,7 +3128,7 @@ public class MethodAnalyzer {
TypeIdItem methodClass = methodIdItem.getContainingClass();
boolean isInit = false;
if (methodIdItem.getMethodName().getStringValue().charAt(0) == '<') {
if (methodIdItem.getMethodName().getStringValue().equals("<init>")) {
if ((invokeType & INVOKE_DIRECT) != 0) {
isInit = true;
} else {

View File

@ -631,7 +631,7 @@ Type = {PrimitiveType} | {ClassDescriptor} | {ArrayDescriptor}
{PrimitiveType} {PrimitiveType}+ { return newToken(PARAM_LIST_OR_ID); }
{Type} {Type}+ { return newToken(PARAM_LIST); }
{SimpleName} { return newToken(SIMPLE_NAME); }
"<init>" | "<clinit>" { return newToken(METHOD_NAME); }
"<" {SimpleName} ">" { return newToken(METHOD_NAME); }
}
/*Symbols/Whitespace/EOF*/

View File

@ -46,3 +46,4 @@ L[Ljava/lang/String;
[;
<linit>
<anonymous>

View File

@ -45,4 +45,5 @@ INVALID_TOKEN("[") VOID_TYPE("V")
INVALID_TOKEN("[") SIMPLE_NAME("java") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") INVALID_TOKEN(";")
INVALID_TOKEN("[") INVALID_TOKEN(";")
INVALID_TOKEN("<") SIMPLE_NAME("linit") INVALID_TOKEN(">")
METHOD_NAME("<linit>")
METHOD_NAME("<anonymous>")