From aad12650ea7394e315ebe170ceebb345c739577d Mon Sep 17 00:00:00 2001 From: Runemoro Date: Sat, 18 Apr 2020 09:02:12 -0400 Subject: Fix a few bugs (#219) * Update Gradle and replace deprecated Gradle features * Allow naming class in default package (fixes #215) * Fix CFR crash (fixes #207) * Update README.md Co-Authored-By: liach <7806504+liach@users.noreply.github.com> Co-authored-by: liach <7806504+liach@users.noreply.github.com>--- src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java | 8 +++++++- .../java/cuchaz/enigma/translation/mapping/NameValidator.java | 7 ++----- .../enigma/translation/representation/entry/ClassEntry.java | 2 +- 3 files changed, 10 insertions(+), 7 deletions(-) (limited to 'src') diff --git a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java b/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java index e265d9d1..09e0a9b2 100644 --- a/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java +++ b/src/main/java/cuchaz/enigma/source/cfr/EnigmaDumper.java @@ -43,7 +43,13 @@ public class EnigmaDumper implements Dumper { } private String getDesc(JavaTypeInstance type) { - type = type.getDeGenerifiedType(); + if (!type.isUsableType() && type != RawJavaType.VOID) { + throw new IllegalArgumentException(type.toString()); + } + + if (type instanceof JavaGenericBaseInstance) { + return getDesc(type.getDeGenerifiedType()); + } if (type instanceof JavaRefTypeInstance) { return "L" + type.getRawName().replace('.', '/') + ";"; diff --git a/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java b/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java index 19473ead..5bc2f67a 100644 --- a/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java +++ b/src/main/java/cuchaz/enigma/translation/mapping/NameValidator.java @@ -26,7 +26,7 @@ public class NameValidator { "boolean", "do", "if", "private", "this", "break", "double", "implements", "protected", "throw", "byte", "else", "import", "public", "throws", "case", "enum", "instanceof", "return", "transient", "catch", "extends", "int", "short", "try", "char", "final", "interface", "static", "void", "class", "finally", - "long", "strictfp", "volatile", "const", "float", "native", "super", "while" + "long", "strictfp", "volatile", "const", "float", "native", "super", "while", "_" ); static { @@ -35,13 +35,10 @@ public class NameValidator { CLASS_PATTERN = Pattern.compile(String.format("^(%s(\\.|/))*(%s)$", identifierRegex, identifierRegex)); } - public static void validateClassName(String name, boolean packageRequired) { + public static void validateClassName(String name) { if (!CLASS_PATTERN.matcher(name).matches() || ILLEGAL_IDENTIFIERS.contains(name)) { throw new IllegalNameException(name, "This doesn't look like a legal class name"); } - if (packageRequired && ClassEntry.getPackageName(name) == null) { - throw new IllegalNameException(name, "Class must be in a package"); - } } public static void validateIdentifier(String name) { diff --git a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java index 74298e43..d6171f11 100644 --- a/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java +++ b/src/main/java/cuchaz/enigma/translation/representation/entry/ClassEntry.java @@ -98,7 +98,7 @@ public class ClassEntry extends ParentedEntry implements Comparable< @Override public void validateName(String name) throws IllegalNameException { - NameValidator.validateClassName(name, !isInnerClass()); + NameValidator.validateClassName(name); } @Override -- cgit v1.2.3