You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@flex.apache.org by ms...@apache.org on 2012/12/27 14:21:07 UTC
svn commit: r1426192 - in /incubator/flex/whiteboard/mschmalle/falconjx:
compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java
compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java
Author: mschmalle
Date: Thu Dec 27 13:21:06 2012
New Revision: 1426192
URL: http://svn.apache.org/viewvc?rev=1426192&view=rev
Log:
Flex:FalconJx
- Fixed parameter alternate indent when no block code exists
Modified:
incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java
incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java
Modified: incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java?rev=1426192&r1=1426191&r2=1426192&view=diff
==============================================================================
--- incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java (original)
+++ incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx.tests/src/org/apache/flex/js/internal/js/codegen/TestGoogEmiter.java Thu Dec 27 13:21:06 2012
@@ -188,11 +188,30 @@ public class TestGoogEmiter extends Test
assertOut("foo.bar.A.method1 = function(p1, p2, p3, p4) {\n" +
"\tp3 = typeof p3 !== 'undefined' ? p3 : 3;\n" +
"\tp4 = typeof p4 !== 'undefined' ? p4 : 4;\n" +
- "\n" +
"\treturn p1 + p2 + p3 + p4;\n}");
JSSharedData.OUTPUT_ALTERNATE = false;
JSSharedData.OUTPUT_JSDOC = true;
}
+
+ @Test
+ public void testDefaultParameter_AlternateNoBody()
+ {
+ /*
+ foo.bar.A.method1 = function(p1, p2, p3, p4) {
+ p3 = typeof p3 !== 'undefined' ? p3 : 3;
+ p4 = typeof p4 !== 'undefined' ? p4 : 4;
+ }
+ */
+ JSSharedData.OUTPUT_JSDOC = false;
+ JSSharedData.OUTPUT_ALTERNATE = true;
+ IFunctionNode node = getMethod("function method1(p1:int, p2:int, p3:int = 3, p4:int = 4):int{}");
+ visitor.visitFunction(node);
+ assertOut("foo.bar.A.method1 = function(p1, p2, p3, p4) {\n" +
+ "\tp3 = typeof p3 !== 'undefined' ? p3 : 3;\n" +
+ "\tp4 = typeof p4 !== 'undefined' ? p4 : 4;\n}");
+ JSSharedData.OUTPUT_ALTERNATE = false;
+ JSSharedData.OUTPUT_JSDOC = true;
+ }
protected IBackend createBackend()
{
Modified: incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java
URL: http://svn.apache.org/viewvc/incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java?rev=1426192&r1=1426191&r2=1426192&view=diff
==============================================================================
--- incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java (original)
+++ incubator/flex/whiteboard/mschmalle/falconjx/compiler.jx/src/org/apache/flex/compiler/internal/js/codgen/JSGoogEmitter.java Thu Dec 27 13:21:06 2012
@@ -197,7 +197,7 @@ public class JSGoogEmitter extends JSEmi
write(qname);
write(".");
}
-
+
emitMemberName(node);
write(" ");
write("=");
@@ -210,13 +210,13 @@ public class JSGoogEmitter extends JSEmi
@Override
public void emitFunctionBlockHeader(IFunctionNode node)
{
- if (JSSharedData.OUTPUT_ALTERNATE)
+ if (JSSharedData.OUTPUT_ALTERNATE)
{
- emitDefaultParameterCodeBlock_Alternate(node);
- }
- else
+ emitDefaultParameterCodeBlock_Alternate(node);
+ }
+ else
{
- emitDefaultParameterCodeBlock(node);
+ emitDefaultParameterCodeBlock(node);
}
}
@@ -232,7 +232,7 @@ public class JSGoogEmitter extends JSEmi
List<IParameterNode> parameters = new ArrayList<IParameterNode>(
defaults.values());
Collections.reverse(parameters);
-
+
int len = defaults.size();
int numDefaults = 0;
// make the header in reverse order
@@ -246,7 +246,7 @@ public class JSGoogEmitter extends JSEmi
}
len--;
}
-
+
Collections.reverse(parameters);
for (IParameterNode pnode : parameters)
{
@@ -281,39 +281,45 @@ public class JSGoogEmitter extends JSEmi
private void emitDefaultParameterCodeBlock_Alternate(IFunctionNode node)
{
// (erikdebruin) implemented alternative approach to handling
- // default parameter values in JS
+ // default parameter values in JS
+
+ IParameterNode[] pnodes = node.getParameterNodes();
- IParameterNode[] pnodes = node.getParameterNodes();
-
Map<Integer, IParameterNode> defaults = getDefaults(pnodes);
-
+
+ if (!hasBody(node))
+ {
+ indentPush();
+ write("\t");
+ }
+
final StringBuilder code = new StringBuilder();
-
+
if (defaults != null)
{
List<IParameterNode> parameters = new ArrayList<IParameterNode>(
defaults.values());
-
+
int numDefaults = 0;
for (IParameterNode pnode : parameters)
{
if (pnode != null)
{
- if (numDefaults > 0)
- code.append(getIndent(getCurrentIndent()));
-
- code.append(
- pnode.getName() +
- " = typeof " + pnode.getName() + " !== 'undefined' ? " +
- pnode.getName() + " : " +
- pnode.getDefaultValue() + ";\n");
-
+ if (numDefaults > 0)
+ code.append(getIndent(getCurrentIndent()));
+
+ code.append(pnode.getName() + " = typeof "
+ + pnode.getName() + " !== 'undefined' ? "
+ + pnode.getName() + " : " + pnode.getDefaultValue()
+ + ";\n");
+
numDefaults++;
}
}
- code.append("\n");
-
+ if (!hasBody(node))
+ indentPop();
+
write(code.toString());
}
}
@@ -364,4 +370,9 @@ public class JSGoogEmitter extends JSEmi
return result;
}
+ private static boolean hasBody(IFunctionNode node)
+ {
+ IScopedNode scope = node.getScopedNode();
+ return scope.getChildCount() > 0;
+ }
}