You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ah...@apache.org on 2015/12/23 08:33:37 UTC
git commit: [flex-falcon] [refs/heads/develop] - FLEX-34991 fix
internal class output
Repository: flex-falcon
Updated Branches:
refs/heads/develop 3971196a4 -> 11f5e2852
FLEX-34991 fix internal class output
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/11f5e285
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/11f5e285
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/11f5e285
Branch: refs/heads/develop
Commit: 11f5e28523628569ef79117dd1e6fd94f0c7b4a2
Parents: 3971196
Author: Alex Harui <ah...@apache.org>
Authored: Tue Dec 22 23:30:31 2015 -0800
Committer: Alex Harui <ah...@apache.org>
Committed: Tue Dec 22 23:30:31 2015 -0800
----------------------------------------------------------------------
.../codegen/js/flexjs/TestFlexJSPackage.java | 96 +++++++++++++++++++-
.../internal/codegen/js/jx/ClassEmitter.java | 3 +-
2 files changed, 96 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/11f5e285/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
index d2b5ba6..9473f19 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSPackage.java
@@ -180,8 +180,8 @@ public class TestFlexJSPackage extends TestGoogPackage
" myString = internalClass.someMethod();\n" +
"};\n" +
"\n" +
- "\n/" +
- "**\n" +
+ "\n" +
+ "/**\n" +
" * Metadata\n" +
" *\n" +
" * @type {Object.<string, Array.<Object>>}\n" +
@@ -230,6 +230,98 @@ public class TestFlexJSPackage extends TestGoogPackage
"foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n");
}
+ @Test
+ public void testPackageQualified_ClassAndInternalGettersAndSetters()
+ {
+ IFileNode node = compileAS("package foo.bar.baz {\n" +
+ "public class A {\n" +
+ "public function A(){\n" +
+ "var internalClass:InternalClass = new InternalClass();\n" +
+ "myString = internalClass.someString;\n" +
+ "internalClass.someString = myString;\n" +
+ "}\n" +
+ "public function get myString():String {\n" +
+ " return null;\n" +
+ "}\n" +
+ "public function set myString(value:String):void {}\n" +
+ "}}\n" +
+ "class InternalClass {\n" +
+ "public function InternalClass(){\n" +
+ "}\n" +
+ "public function get someString():String {\n" +
+ " return null;\n" +
+ "}\n" +
+ "public function set someString(value:String):void {}\n" +
+ "}");
+ asBlockWalker.visitFile(node);
+ assertOutWithMetadata("/**\n" +
+ " * foo.bar.baz.A\n" +
+ " *\n" +
+ " * @fileoverview\n" +
+ " *\n" +
+ " * @suppress {checkTypes|accessControls}\n" +
+ " */\n" +
+ "\n" +
+ "goog.provide('foo.bar.baz.A');\n" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "/**\n" +
+ " * @constructor\n" +
+ " */\n" +
+ "foo.bar.baz.A = function() {\n" +
+ " var /** @type {foo.bar.baz.A.InternalClass} */ internalClass = new foo.bar.baz.A.InternalClass();\n" +
+ " this.myString = internalClass.someString;\n" +
+ " internalClass.someString = this.myString;\n" +
+ "};\n" +
+ "\n" +
+ "\n" +
+ "Object.defineProperties(foo.bar.baz.A.prototype, /** @lends {foo.bar.baz.A.prototype} */ {\n" +
+ "/** @export */\n" +
+ "myString: {\n" +
+ "get: /** @this {foo.bar.baz.A} */ function() {\n" +
+ " return null;\n" +
+ "},\n" +
+ "set: /** @this {foo.bar.baz.A} */ function(value) {\n" +
+ "}}}\n" +
+ ");\n" +
+ "\n" +
+ "\n" +
+ "/**\n" +
+ " * Metadata\n" +
+ " *\n" +
+ " * @type {Object.<string, Array.<Object>>}\n" +
+ " */\n" +
+ "foo.bar.baz.A.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'A', qName: 'foo.bar.baz.A'}] };\n" +
+ "\n" +
+ "\n" +
+ "\n" +
+ "/**\n" +
+ " * @constructor\n" +
+ " */\n" +
+ "foo.bar.baz.A.InternalClass = function() {\n" +
+ "};\n" +
+ "\n" +
+ "\n" +
+ "Object.defineProperties(foo.bar.baz.A.InternalClass.prototype, /** @lends {foo.bar.baz.A.InternalClass.prototype} */ {\n" +
+ "/** @export */\n" +
+ "someString: {\n" +
+ "get: /** @this {foo.bar.baz.A.InternalClass} */ function() {\n" +
+ " return null;\n" +
+ "},\n" +
+ "set: /** @this {foo.bar.baz.A.InternalClass} */ function(value) {\n" +
+ "}}}\n" +
+ ");\n" +
+ "\n" +
+ "\n" +
+ "/**\n" +
+ " * Metadata\n" +
+ " *\n" +
+ " * @type {Object.<string, Array.<Object>>}\n" +
+ " */\n" +
+ "foo.bar.baz.A.InternalClass.prototype.FLEXJS_CLASS_INFO = { names: [{ name: 'InternalClass', qName: 'foo.bar.baz.A.InternalClass'}] };\n");
+ }
+
@Override
protected IBackend createBackend()
{
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/11f5e285/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
index f96ceca..bd6289f 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/ClassEmitter.java
@@ -50,7 +50,7 @@ public class ClassEmitter extends JSSubEmitter implements
@Override
public void emit(IClassNode node)
{
- getModel().setCurrentClass(node.getDefinition());
+ getModel().pushClass(node.getDefinition());
// TODO (mschmalle) will remove this cast as more things get abstracted
JSFlexJSEmitter fjs = (JSFlexJSEmitter) getEmitter();
@@ -141,6 +141,7 @@ public class ClassEmitter extends JSSubEmitter implements
fjs.getAccessorEmitter().emit(definition);
fjs.getPackageFooterEmitter().emitClassInfo(node);
+ getModel().popClass();
}
public void emitComplexInitializers(IClassNode node)