Approved. This is nice to get cleaned up. Side note, not sure we still need the special-casing of `typeof` any more. CodeGenerator used to insert 'assembly language' tests to signal an error any time the evaluation of a variable was `undefined`. Way back when, the only approved way to avoid this check if you really wanted to see if a variable was undefined was to write `typeof foo == 'undefined'`. Since we're not emitting those checks any more (and it is perfectly legal for a variable to evaluate to undefined), we should be able to leave out that special case now.
[It _is_ an error to reference a non-existent variable, but the special case code can't do anything about that.] On 2011-04-06, at 11:54, André Bargull wrote: > Change bargull-20110406-rsz by bargull@Bargull02 on 2011-04-06 17:20:38 > in /home/anba/src/svn/openlaszlo/trunk > for http://svn.openlaszlo.org/openlaszlo/trunk > > Summary: Remove stale "undefined reference checker" code in > JavascriptGenerator > > Bugs Fixed: LPP-9874 (Broken "undefined reference checker" code in > JavascriptGenerator produces excessive try-catch blocks) > > Technical Reviewer: ptw > QA Reviewer: (pending) > > > Details: > JavascriptGenerator: > - checkUndefinedFunction() and checkUndefinedMethod() are no longer used, can > be removed safely to reduce maintenance overhead > - visitPrefixExpression(), visitPostfixExpression() and > visitAssignmentExpression() expanded the code if free references are present > to support the "undefined reference checker", but the "undefined reference > checker" is merely a leftover from CodeGenerator and not actually implemented > in JavascriptGenerator, therefore the complete code expansion is not > necessary (anymore) > - XfixInstrs and AssignOpTable are only support maps and now no longer used > -> removed > - identifierPattern, another unused variable -> removed > - translateReferenceForCall(SimpleNode) was never called -> removed > - translateReferenceForCall(SimpleNode,boolean,SimpleNode) removed > outcommented code > - visitUnaryExpression(), removed ASTPropertyValueReference and > ASTPropertyIdentifierReference from whitelist for "typeof" operator, only > ASTIdentifier is important for "typeof". The other two ast types are only > necessary for swf8, consider "typeof ({}).foo" which shouldn't emit an > undefined reference warning > > JavascriptGenerator$JavascriptReference: > - removed referenceCount argument of constructor -> not used, swf8-specific > > ParseTreePrinter: > - don't call maybeAddParens() for second child of > ASTPropertyIdentifierReference, because the second child is _always_ an > ASTIdentifier and maybeAddParens() is a no-op for ASTIdentifier > > > Tests: > smokecheck x (dhtml,swf10) > > Files: > M WEB-INF/lps/server/src/org/openlaszlo/sc/JavascriptGenerator.java > M WEB-INF/lps/server/src/org/openlaszlo/sc/ParseTreePrinter.java > > Changeset: > http://svn.openlaszlo.org/openlaszlo/patches/bargull-20110406-rsz.tar >
