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/07/16 02:00:52 UTC
git commit: [flex-falcon] [refs/heads/develop] - add type annotation
to interface getter/setter so GCC doesn't warn about it
Repository: flex-falcon
Updated Branches:
refs/heads/develop 34a1abcde -> 9797b6b47
add type annotation to interface getter/setter so GCC doesn't warn about it
Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/9797b6b4
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/9797b6b4
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/9797b6b4
Branch: refs/heads/develop
Commit: 9797b6b4774f74f31f2bf4a405f8451742441ef4
Parents: 34a1abc
Author: Alex Harui <ah...@apache.org>
Authored: Wed Jul 15 16:59:36 2015 -0700
Committer: Alex Harui <ah...@apache.org>
Committed: Wed Jul 15 16:59:36 2015 -0700
----------------------------------------------------------------------
.../codegen/js/flexjs/TestFlexJSInterface.java | 4 ++--
.../projects/interfaces/interfaces/IE_result.js | 3 ++-
.../compiler/codegen/js/goog/IJSGoogDocEmitter.java | 2 ++
.../internal/codegen/js/goog/JSGoogDocEmitter.java | 7 +++++++
.../internal/codegen/js/jx/InterfaceEmitter.java | 15 +++++++++++++++
5 files changed, 28 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9797b6b4/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
index 5d1028b..bacd034 100644
--- a/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
+++ b/compiler.jx.tests/src/org/apache/flex/compiler/internal/codegen/js/flexjs/TestFlexJSInterface.java
@@ -43,7 +43,7 @@ public class TestFlexJSInterface extends TestGoogInterface
+ "function get foo1():Object;"
+ "function set foo1(value:Object):void;}");
asBlockWalker.visitInterface(node);
- assertOut("/**\n * @interface\n */\nIA = function() {\n};\nIA.prototype.foo1;");
+ assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/** * @type {Object}\n */IA.prototype.foo1;");
}
@Override
@@ -67,7 +67,7 @@ public class TestFlexJSInterface extends TestGoogInterface
+ "function baz1():Object;"
+ "function baz2(value:Object):void;}");
asBlockWalker.visitInterface(node);
- assertOut("/**\n * @interface\n */\nIA = function() {\n};\nIA.prototype.foo1;\nIA.prototype.baz1 = function() {\n};\nIA.prototype.baz2 = function(value) {\n};");
+ assertOut("/**\n * @interface\n */\nIA = function() {\n};\n/** * @type {Object}\n */IA.prototype.foo1;\nIA.prototype.baz1 = function() {\n};\nIA.prototype.baz2 = function(value) {\n};");
}
protected IBackend createBackend()
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9797b6b4/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
----------------------------------------------------------------------
diff --git a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
index 9c3f3be..ef07f66 100644
--- a/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
+++ b/compiler.jx.tests/test-files/flexjs/projects/interfaces/interfaces/IE_result.js
@@ -30,7 +30,8 @@ interfaces.IE = function() {
};
interfaces.IE.prototype.myMethod = function() {
};
-interfaces.IE.prototype.myProp;
+/** * @type {string}
+ */interfaces.IE.prototype.myProp;
/**
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9797b6b4/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
index f0c8817..c159428 100644
--- a/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/codegen/js/goog/IJSGoogDocEmitter.java
@@ -135,4 +135,6 @@ public interface IJSGoogDocEmitter extends IJSDocEmitter
void emitThis(ITypeDefinition node, String packageName);
void emitType(IASNode node, String packageName);
+
+ void emitType(String type, String packageName);
}
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9797b6b4/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
index 18b0c1d..16b9aeb 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/goog/JSGoogDocEmitter.java
@@ -367,6 +367,13 @@ public class JSGoogDocEmitter extends JSDocEmitter implements IJSGoogDocEmitter
convertASTypeToJS(type, packageName));
}
+ @Override
+ public void emitType(String type, String packageName)
+ {
+ emitJSDocLine(JSGoogDocEmitterTokens.TYPE.getToken(),
+ convertASTypeToJS(type, packageName));
+ }
+
public void emitTypeShort(IASNode node, String packageName)
{
String type = ((IVariableNode) node).getVariableType();
http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/9797b6b4/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
----------------------------------------------------------------------
diff --git a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
index d12a3ba..834e612 100644
--- a/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
+++ b/compiler.jx/src/org/apache/flex/compiler/internal/codegen/js/jx/InterfaceEmitter.java
@@ -22,12 +22,15 @@ package org.apache.flex.compiler.internal.codegen.js.jx;
import org.apache.flex.compiler.codegen.ISubEmitter;
import org.apache.flex.compiler.codegen.js.IJSEmitter;
import org.apache.flex.compiler.internal.codegen.as.ASEmitterTokens;
+import org.apache.flex.compiler.internal.codegen.js.JSDocEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSEmitterTokens;
import org.apache.flex.compiler.internal.codegen.js.JSSubEmitter;
import org.apache.flex.compiler.internal.codegen.js.flexjs.JSFlexJSEmitter;
import org.apache.flex.compiler.projects.ICompilerProject;
import org.apache.flex.compiler.tree.ASTNodeID;
+import org.apache.flex.compiler.tree.as.IAccessorNode;
import org.apache.flex.compiler.tree.as.IDefinitionNode;
+import org.apache.flex.compiler.tree.as.IExpressionNode;
import org.apache.flex.compiler.tree.as.IFunctionNode;
import org.apache.flex.compiler.tree.as.IInterfaceNode;
@@ -77,6 +80,18 @@ public class InterfaceEmitter extends JSSubEmitter implements
{
writeNewline();
+ if (isAccessor)
+ {
+ IAccessorNode accessor = (IAccessorNode)mnode;
+ String propType = accessor.getVariableType();
+ IExpressionNode typeNode = accessor.getVariableTypeNode();
+ String packageName = typeNode.getPackageName();
+ write(JSDocEmitterTokens.JSDOC_OPEN);
+ write(ASEmitterTokens.SPACE);
+ fjs.getDocEmitter().emitType(propType, packageName);
+ write(ASEmitterTokens.SPACE);
+ write(JSDocEmitterTokens.JSDOC_CLOSE);
+ }
write(getEmitter().formatQualifiedName(qname));
write(ASEmitterTokens.MEMBER_ACCESS);
write(JSEmitterTokens.PROTOTYPE);