Author: ptw
Date: 2007-10-19 10:31:12 -0700 (Fri, 19 Oct 2007)
New Revision: 6926
Modified:
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
Log:
Change 20071017-ptw-S by [EMAIL PROTECTED] on 2007-10-17 07:33:26 EDT
in /Users/ptw/OpenLaszlo/ringding-2
for http://svn.openlaszlo.org/openlaszlo/trunk
Summary: Correct DHTML expansion of assignOp to global
Bugs Fixed:
LPP-4920 'Erroneous output from DHTML compiler in debug mode causes runtime
errors w/ trunk build 6836'
Technical Reviewer: [EMAIL PROTECTED] (Message-Id: <[EMAIL PROTECTED]>)
QA Reviewer: [EMAIL PROTECTED] (pending)
Details:
JavascriptGenerator: translate references before rewriting.
Tests:
Test case from bug report. smokecheck in SWF and DHTML
Modified:
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
===================================================================
---
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
2007-10-19 17:14:55 UTC (rev 6925)
+++
openlaszlo/trunk/WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java
2007-10-19 17:31:12 UTC (rev 6926)
@@ -1012,22 +1012,23 @@
}
public SimpleNode visitAssignmentExpression(SimpleNode node, boolean
isReferenced, SimpleNode[] children) {
- SimpleNode lhs = children[0];
+ JavascriptReference lhs = translateReference(children[0]);
int op = ((ASTOperator)children[1]).getOperator();
- SimpleNode rhs = children[2];
+ SimpleNode rhs = visitExpression(children[2]);
if (op != ParserConstants.ASSIGN &&
- translateReference(lhs).isChecked()) {
+ lhs.isChecked()) {
// The undefined reference checker needs to have this expanded
// to work
Map map = new HashMap();
- map.put("_1", lhs);
+ map.put("_1", lhs.get());
map.put("_2", rhs);
- String pattern = "(function () { var $lzsc$tmp = _1; return _1 =
$lzsc$tmp " + AssignOpTable.get(op) + " _2; })()";
+ map.put("_3", lhs.set());
+ String pattern = "(function () { var $lzsc$tmp = _1; return _3 =
$lzsc$tmp " + AssignOpTable.get(op) + " _2; })()";
SimpleNode n = (new Compiler.Parser()).substitute(pattern, map);
return visitExpression(n);
}
- children[2] = visitExpression(rhs);
- children[0] = translateReference(lhs).set();
+ children[2] = rhs;
+ children[0] = lhs.set();
return node;
}
_______________________________________________
Laszlo-checkins mailing list
[email protected]
http://www.openlaszlo.org/mailman/listinfo/laszlo-checkins