You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by jo...@apache.org on 2016/04/30 01:18:54 UTC

[7/8] git commit: [flex-falcon] [refs/heads/develop] - source maps for getters and setters

source maps for getters and setters


Project: http://git-wip-us.apache.org/repos/asf/flex-falcon/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-falcon/commit/f8fc7fda
Tree: http://git-wip-us.apache.org/repos/asf/flex-falcon/tree/f8fc7fda
Diff: http://git-wip-us.apache.org/repos/asf/flex-falcon/diff/f8fc7fda

Branch: refs/heads/develop
Commit: f8fc7fda95326cfeba040a6e34183ac9a297a7f5
Parents: 716a788
Author: Josh Tynjala <jo...@gmail.com>
Authored: Fri Apr 29 16:07:45 2016 -0700
Committer: Josh Tynjala <jo...@gmail.com>
Committed: Fri Apr 29 16:07:45 2016 -0700

----------------------------------------------------------------------
 .../internal/codegen/js/jx/AccessorEmitter.java | 110 ++++++++++++++++---
 1 file changed, 94 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-falcon/blob/f8fc7fda/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
----------------------------------------------------------------------
diff --git a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
index f2910d7..7440462 100644
--- a/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
+++ b/compiler-jx/src/main/java/org/apache/flex/compiler/internal/codegen/js/jx/AccessorEmitter.java
@@ -107,13 +107,33 @@ public class AccessorEmitter extends JSSubEmitter implements
 
                 boolean wroteGetter = false;
                 PropertyNodes p = getModel().getPropertyMap().get(propName);
+                IGetterNode getterNode = p.getter;
+                ISetterNode setterNode = p.setter;
                 writeNewline("/** @export */");
+                if (getterNode != null)
+                {
+                    startMapping(getterNode);
+                }
+                else
+                {
+                    startMapping(setterNode);
+                }
                 write(propName);
                 write(ASEmitterTokens.COLON);
                 write(ASEmitterTokens.SPACE);
-                writeNewline(ASEmitterTokens.BLOCK_OPEN);
-                if (p.getter != null)
+                write(ASEmitterTokens.BLOCK_OPEN);
+                if (getterNode != null)
+                {
+                    endMapping(getterNode);
+                }
+                else
+                {
+                    endMapping(setterNode);
+                }
+                writeNewline();
+                if (getterNode != null)
                 {
+                    startMapping(getterNode);
                     write(ASEmitterTokens.GET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
@@ -129,12 +149,13 @@ public class AccessorEmitter extends JSSubEmitter implements
                     write(JSDocEmitterTokens.JSDOC_CLOSE);
                     write(ASEmitterTokens.SPACE);
                     write(ASEmitterTokens.FUNCTION);
-                    fjs.emitParameters(p.getter.getParametersContainerNode());
+                    endMapping(getterNode);
+                    fjs.emitParameters(getterNode.getParametersContainerNode());
 
-                    fjs.emitDefinePropertyFunction(p.getter);
+                    fjs.emitDefinePropertyFunction(getterNode);
                     wroteGetter = true;
                 }
-                else if (p.setter != null && p.setter.getDefinition().isOverride())
+                else if (setterNode != null && setterNode.getDefinition().isOverride())
                 {
                 	// see if there is a getter on a base class.  If so, we have to 
                 	// generate a call to the super from this class because 
@@ -187,11 +208,12 @@ public class AccessorEmitter extends JSSubEmitter implements
                 		wroteGetter = true;
                 	}
                 }
-                if (p.setter != null)
+                if (setterNode != null)
                 {
                     if (wroteGetter)
                         writeNewline(ASEmitterTokens.COMMA);
 
+                    startMapping(setterNode);
                     write(ASEmitterTokens.SET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
@@ -207,11 +229,12 @@ public class AccessorEmitter extends JSSubEmitter implements
                     write(JSDocEmitterTokens.JSDOC_CLOSE);
                     write(ASEmitterTokens.SPACE);
                     write(ASEmitterTokens.FUNCTION);
-                    fjs.emitParameters(p.setter.getParametersContainerNode());
+                    endMapping(setterNode);
+                    fjs.emitParameters(setterNode.getParametersContainerNode());
 
-                    fjs.emitDefinePropertyFunction(p.setter);
+                    fjs.emitDefinePropertyFunction(setterNode);
                 }
-                else if (p.getter != null && p.getter.getDefinition().isOverride())
+                else if (getterNode != null && getterNode.getDefinition().isOverride())
                 {
                 	// see if there is a getter on a base class.  If so, we have to 
                 	// generate a call to the super from this class because 
@@ -267,7 +290,23 @@ public class AccessorEmitter extends JSSubEmitter implements
                         write(ASEmitterTokens.BLOCK_CLOSE);
                 	}
                 }
+                if (getterNode != null)
+                {
+                    startMapping(getterNode);
+                }
+                else
+                {
+                    startMapping(setterNode);
+                }
                 write(ASEmitterTokens.BLOCK_CLOSE);
+                if (getterNode != null)
+                {
+                    endMapping(getterNode);
+                }
+                else
+                {
+                    endMapping(setterNode);
+                }
             }
             writeNewline(ASEmitterTokens.BLOCK_CLOSE);
             write(ASEmitterTokens.PAREN_CLOSE);
@@ -299,35 +338,74 @@ public class AccessorEmitter extends JSSubEmitter implements
 
                 PropertyNodes p = getModel().getStaticPropertyMap().get(
                         propName);
+                IGetterNode getterNode = p.getter;
+                ISetterNode setterNode = p.setter;
                 writeNewline("/** @export */");
+                if (getterNode != null)
+                {
+                    startMapping(getterNode);
+                }
+                else
+                {
+                    startMapping(setterNode);
+                }
                 write(propName);
                 write(ASEmitterTokens.COLON);
                 write(ASEmitterTokens.SPACE);
-                writeNewline(ASEmitterTokens.BLOCK_OPEN);
-                if (p.getter != null)
+                write(ASEmitterTokens.BLOCK_OPEN);
+                if (getterNode != null)
+                {
+                    endMapping(getterNode);
+                }
+                else
+                {
+                    endMapping(setterNode);
+                }
+                writeNewline();
+                if (getterNode != null)
                 {
+                    startMapping(getterNode);
                     write(ASEmitterTokens.GET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
                     write(ASEmitterTokens.FUNCTION);
-                    fjs.emitParameters(p.getter.getParametersContainerNode());
+                    endMapping(getterNode);
+                    fjs.emitParameters(getterNode.getParametersContainerNode());
 
-                    fjs.emitDefinePropertyFunction(p.getter);
+                    fjs.emitDefinePropertyFunction(getterNode);
                 }
-                if (p.setter != null)
+                if (setterNode != null)
                 {
                     if (p.getter != null)
                         writeNewline(ASEmitterTokens.COMMA);
 
+                    startMapping(setterNode);
                     write(ASEmitterTokens.SET);
                     write(ASEmitterTokens.COLON);
                     write(ASEmitterTokens.SPACE);
                     write(ASEmitterTokens.FUNCTION);
-                    fjs.emitParameters(p.setter.getParametersContainerNode());
+                    endMapping(setterNode);
+                    fjs.emitParameters(setterNode.getParametersContainerNode());
 
-                    fjs.emitDefinePropertyFunction(p.setter);
+                    fjs.emitDefinePropertyFunction(setterNode);
+                }
+                if (getterNode != null)
+                {
+                    startMapping(getterNode);
+                }
+                else
+                {
+                    startMapping(setterNode);
                 }
                 write(ASEmitterTokens.BLOCK_CLOSE);
+                if (getterNode != null)
+                {
+                    endMapping(getterNode);
+                }
+                else
+                {
+                    endMapping(setterNode);
+                }
             }
             writeNewline(ASEmitterTokens.BLOCK_CLOSE);
             write(ASEmitterTokens.PAREN_CLOSE);