Skip to content

Commit

Permalink
fix java.lang.String vs. String in reflection
Browse files Browse the repository at this point in the history
  • Loading branch information
Simn committed Apr 5, 2019
1 parent 30b105f commit a53169c
Show file tree
Hide file tree
Showing 3 changed files with 11 additions and 5 deletions.
2 changes: 1 addition & 1 deletion std/java/_std/haxe/Resource.hx
Expand Up @@ -23,7 +23,7 @@ package haxe;

@:coreApi class Resource {

@:keep static var content : Array<String> = [];
@:keep static var content : Array<String>;

public static inline function listNames() : Array<String> {
return content.copy();
Expand Down
10 changes: 8 additions & 2 deletions std/jvm/_std/Type.hx
Expand Up @@ -79,15 +79,21 @@ class Type {
}

public static function getClassName(c:Class<Dynamic>):String {
// TODO: java.lang.String has to become String somehow
return c.native().getName();
return switch (c.native().getName()) {
case "java.lang.String": "String";
case "java.lang.Math": "Math";
case s: s;
}
}

public static function getEnumName(e:Enum<Dynamic>):String {
return e.native().getName();
}

public static function resolveClass(name:String):Class<Dynamic> {
if (name == "String") {
return java.lang.JavaString.String;
}
return try {
java.lang.Class.forName(name);
} catch (e:java.lang.ClassNotFoundException) {
Expand Down
4 changes: 2 additions & 2 deletions tests/genjvm/src/test/TestTypeApi.hx
Expand Up @@ -85,7 +85,7 @@ class TestTypeApi extends BaseTest {

function testGetClassName() {
eq("test._TestTypeApi.SomeClass", Type.getClassName(SomeClass));
eq("java.lang.String", Type.getClassName(String));
eq("String", Type.getClassName(String));
}

function testGetEnumName() {
Expand All @@ -94,7 +94,7 @@ class TestTypeApi extends BaseTest {

function testResolveClass() {
eq(cast String, Type.resolveClass("java.lang.String"));
// eq(cast String, Type.resolveClass("String")); // TODO
eq(cast String, Type.resolveClass("String")); // TODO
eq(cast SomeClass, Type.resolveClass("test._TestTypeApi.SomeClass"));
eq(null, Type.resolveClass("i.dont.Exist"));
eq(null, Type.resolveClass("in valid %%#'#! String"));
Expand Down

0 comments on commit a53169c

Please sign in to comment.