Updated Branches: refs/heads/develop 1ae474113 -> d6ab6c9be
emitPackageContents should not explicitly call emitClass because IClassNode or IInterfaceNode is a possible node in emitPackageConents, added two unit test Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/d6ab6c9b Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/d6ab6c9b Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/d6ab6c9b Branch: refs/heads/develop Commit: d6ab6c9be3dec9e13d8bd702ca64f3e93c2a26b7 Parents: 1ae4741 Author: cyrill.zadra <[email protected]> Authored: Mon Apr 15 01:03:42 2013 +0800 Committer: cyrill.zadra <[email protected]> Committed: Mon Apr 15 01:03:42 2013 +0800 ---------------------------------------------------------------------- .../internal/codegen/js/goog/TestGoogEmiter.java | 22 +++++++++++++++ .../internal/codegen/js/goog/JSGoogEmitter.java | 12 ++++---- 2 files changed, 28 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d6ab6c9b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java ---------------------------------------------------------------------- diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java index 7c1deef..6968203 100644 --- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java +++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/goog/TestGoogEmiter.java @@ -54,6 +54,28 @@ public class TestGoogEmiter extends ASTestBase asBlockWalker.visitFile(node); assertOut("goog.provide('com.example.components.MyTextButton');\n\ngoog.require('spark.components.Button');\n\n/**\n * @constructor\n * @extends {spark.components.Button}\n */\ncom.example.components.MyTextButton = function() {\n\tvar self = this;\n\tgoog.base(this);\n\tif (foo() != 42) {\n\t\tbar();\n\t}\n}\ngoog.inherits(com.example.components.MyTextButton, spark.components.Button);\n\n/**\n * @private\n * @type {string}\n */\ncom.example.components.MyTextButton.prototype._privateVar = \"do \";\n\n/**\n * @type {number}\n */\ncom.example.components.MyTextButton.prototype.publicProperty = 100;\n\n/**\n * @param {string} value\n * @return {string}\n */\ncom.example.components.MyTextButton.prototype.myFunction = function(value) {\n\tvar self = this;\n\treturn \"Don't \" + self._privateVar + value;\n};"); } + + @Test + public void testSimpleInterface() + { + String code = "package com.example.components {" + + "public interface TestInterface { }" + + "}"; + IFileNode node = compileAS(code); + asBlockWalker.visitFile(node); + assertOut("goog.provide('com.example.components.TestInterface');\n\n/**\n * @interface\n */\npublic interface TestInterface {\n}"); + } + + @Test + public void testSimpleClass() + { + String code = "package com.example.components {" + + "public class TestClass { }" + + "}"; + IFileNode node = compileAS(code); + asBlockWalker.visitFile(node); + assertOut("goog.provide('com.example.components.TestClass');\n\n/**\n * @constructor\n */\ncom.example.components.TestClass = function() {\n};"); + } @Test public void testSimpleMethod() http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/d6ab6c9b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java ---------------------------------------------------------------------- diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java index 063a22e..545cfce 100644 --- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java +++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogEmitter.java @@ -165,11 +165,11 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter if (type == null) return; - IClassNode cnode = (IClassNode) type.getNode(); - if (cnode == null) - return; - - emitClass(cnode); + ITypeNode tnode = findTypeNode(definition.getNode()); + if (tnode != null) + { + getWalker().walk(tnode); // IClassNode | IInterfaceNode + } } @Override @@ -1103,7 +1103,6 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter private List<String> resolveImports(ITypeDefinition type) { - ClassDefinition cdefinition = (ClassDefinition) type; ArrayList<String> list = new ArrayList<String>(); IScopedNode scopeNode = type.getContainedScope().getScopeNode(); if (scopeNode != null) @@ -1113,6 +1112,7 @@ public class JSGoogEmitter extends JSEmitter implements IJSGoogEmitter else { // MXML + ClassDefinition cdefinition = (ClassDefinition) type; String[] implicitImports = cdefinition.getImplicitImports(); for (String imp : implicitImports) {
