fix loop issue with casts

This commit is contained in:
Renaud Pawlak 2020-10-30 14:46:10 +01:00
parent 5ce8b07fb4
commit 9cba306116

View File

@ -103,6 +103,7 @@ import org.jsweet.transpiler.model.support.VariableAccessElementSupport;
import org.jsweet.transpiler.util.Util; import org.jsweet.transpiler.util.Util;
import com.sun.codemodel.internal.JJavaName; import com.sun.codemodel.internal.JJavaName;
import com.sun.source.tree.TypeCastTree;
import com.sun.tools.javac.code.Symbol; import com.sun.tools.javac.code.Symbol;
import com.sun.tools.javac.code.Symbol.ClassSymbol; import com.sun.tools.javac.code.Symbol.ClassSymbol;
import com.sun.tools.javac.code.Symbol.MethodSymbol; import com.sun.tools.javac.code.Symbol.MethodSymbol;
@ -118,6 +119,7 @@ import com.sun.tools.javac.tree.JCTree.JCImport;
import com.sun.tools.javac.tree.JCTree.JCMethodInvocation; import com.sun.tools.javac.tree.JCTree.JCMethodInvocation;
import com.sun.tools.javac.tree.JCTree.JCNewClass; import com.sun.tools.javac.tree.JCTree.JCNewClass;
import com.sun.tools.javac.tree.JCTree.JCTypeApply; import com.sun.tools.javac.tree.JCTree.JCTypeApply;
import com.sun.tools.javac.tree.JCTree.JCTypeCast;
import com.sun.tools.javac.tree.JCTree.Tag; import com.sun.tools.javac.tree.JCTree.Tag;
/** /**
@ -1654,8 +1656,15 @@ public class Java2TypeScriptAdapter extends PrinterAdapter {
} }
protected void printForEachLoop(JCEnhancedForLoop loop, String indexVarName) { protected void printForEachLoop(JCEnhancedForLoop loop, String indexVarName) {
getPrinter().print("for(" + VAR_DECL_KEYWORD + " " + indexVarName + "=").print(loop.expr) getPrinter().print("for(" + VAR_DECL_KEYWORD + " " + indexVarName + "=");
.print(".iterator();" + indexVarName + ".hasNext();) {").println().startIndent().printIndent(); if (loop.expr instanceof JCTypeCast) {
print("(");
}
getPrinter().print(loop.expr);
if (loop.expr instanceof JCTypeCast) {
print(")");
}
print(".iterator();" + indexVarName + ".hasNext();) {").println().startIndent().printIndent();
getPrinter().print(VAR_DECL_KEYWORD + " " + loop.var.name.toString() + " = ").print(indexVarName + ".next();") getPrinter().print(VAR_DECL_KEYWORD + " " + loop.var.name.toString() + " = ").print(indexVarName + ".next();")
.println(); .println();
getPrinter().printIndent().print(loop.body); getPrinter().printIndent().print(loop.body);