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(); TypeIdItem methodClass = methodIdItem.getContainingClass();
boolean isInit = false; boolean isInit = false;
if (methodIdItem.getMethodName().getStringValue().charAt(0) == '<') { if (methodIdItem.getMethodName().getStringValue().equals("<init>")) {
if ((invokeType & INVOKE_DIRECT) != 0) { if ((invokeType & INVOKE_DIRECT) != 0) {
isInit = true; isInit = true;
} else { } else {

View File

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

View File

@ -45,4 +45,5 @@ L[Ljava/lang/String;
[java/lang/String; [java/lang/String;
[; [;
<linit> <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("[") SIMPLE_NAME("java") INVALID_TOKEN("/") SIMPLE_NAME("lang") INVALID_TOKEN("/") SIMPLE_NAME("String") INVALID_TOKEN(";")
INVALID_TOKEN("[") INVALID_TOKEN(";") INVALID_TOKEN("[") INVALID_TOKEN(";")
INVALID_TOKEN("<") SIMPLE_NAME("linit") INVALID_TOKEN(">") METHOD_NAME("<linit>")
METHOD_NAME("<anonymous>")