# HG changeset patch # User Jaroslav Tulach # Date 1410723416 -7200 # Node ID 800cb3d9f3b0d9ecc327b24ada05568a6ff0bcd1 # Parent 2f800fdc371e752240920855bbefde15796ad53b There is a difference between lazy reference in standalone and in extension mode diff -r 2f800fdc371e -r 800cb3d9f3b0 rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java --- a/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sun Sep 14 19:27:44 2014 +0200 +++ b/rt/vm/src/main/java/org/apidesign/vm4brwsr/VM.java Sun Sep 14 21:36:56 2014 +0200 @@ -149,6 +149,8 @@ protected abstract boolean isExternalClass(String className); + protected abstract void lazyReference(Appendable out, String n) throws IOException; + @Override protected final void declaredClass(ClassData classData, String mangledName) throws IOException { @@ -681,6 +683,19 @@ protected boolean isExternalClass(String className) { return false; } + + @Override + protected void lazyReference(Appendable out, String n) throws IOException { + String cls = n.replace('/', '_'); + String dot = n.replace('/', '.'); + + out.append("\nvm.").append(cls).append(" = function() {"); + out.append("\n var instance = arguments.length == 0 || arguments[0] === true;"); + out.append("\n delete vm.").append(cls).append(";"); + out.append("\n var c = vm.loadClass('").append(dot).append("');"); + out.append("\n return vm.").append(cls).append("(instance);"); + out.append("\n}"); + } } private static final class Extension extends VM { @@ -761,17 +776,16 @@ protected boolean isExternalClass(String className) { return !extensionClasses.contains(className); } - } - - private static void lazyReference(Appendable out, String n) throws IOException { - String cls = n.replace('/', '_'); - String dot = n.replace('/', '.'); - out.append("\nvm.").append(cls).append(" = function() {"); - out.append("\n var instance = arguments.length == 0 || arguments[0] === true;"); - out.append("\n delete vm.").append(cls).append(";"); - out.append("\n var c = vm.loadClass('").append(dot).append("');"); - out.append("\n return vm.").append(cls).append("(instance);"); - out.append("\n}"); + @Override + protected void lazyReference(Appendable out, String n) throws IOException { + String cls = n.replace('/', '_'); + + out.append("\nvm.").append(cls).append(" = function() {"); + out.append("\n var instance = arguments.length == 0 || arguments[0] === true;"); + out.append("\n delete vm.").append(cls).append(";"); + out.append("\n return link('").append(n).append("')(instance);"); + out.append("\n}"); + } } }