rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java
changeset 1709 ce898bccdbc8
parent 1705 e74a1895f079
child 1720 3b960d9631b2
     1.1 --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Fri Sep 26 08:28:11 2014 +0200
     1.2 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java	Fri Sep 26 10:44:54 2014 +0200
     1.3 @@ -421,10 +421,18 @@
     1.4      private String accessNonVirtualMember(String object,
     1.5                                            String mangledName,
     1.6                                            ClassData declaringClass) {
     1.7 -        return ((declaringClass != null)
     1.8 -                    && !isExternalClass(declaringClass.getClassName()))
     1.9 -                            ? object + "." + mangledName
    1.10 -                            : object + "['" + mangledName + "']";
    1.11 +        if (declaringClass == null) {
    1.12 +            return object + "['" + mangledName + "']";
    1.13 +        }
    1.14 +        final String className = declaringClass.getClassName();
    1.15 +        if (
    1.16 +            "java/lang/Object".equals(className) ||
    1.17 +            "java/lang/reflect/Array".equals(className) ||
    1.18 +            isExternalClass(className)
    1.19 +        ) {
    1.20 +            return object + "['" + mangledName + "']";
    1.21 +        }
    1.22 +        return object + "." + mangledName;
    1.23      }
    1.24  
    1.25      private final class ExportedMethodFinder