function as_statement_array(thing) {
if (thing === null) return [];
- if (thing instanceof AST_BlockStatement) return thing.body;
+ if (thing instanceof AST_BlockStatement) return all(thing.body, function(stat) {
+ return !(stat instanceof AST_Const || stat instanceof AST_Let);
+ }) ? thing.body : [ thing ];
if (thing instanceof AST_EmptyStatement) return [];
if (thing instanceof AST_Statement) return [ thing ];
throw new Error("Can't convert thing to statement array");
}
expect_stdout: "42"
}
+
+issue_4274_1: {
+ options = {
+ loops: true,
+ }
+ input: {
+ for (;;) {
+ if (console.log("PASS")) {
+ const a = 0;
+ } else {
+ break;
+ var a;
+ }
+ }
+ }
+ expect: {
+ for (; console.log("PASS");) {
+ {
+ const a = 0;
+ }
+ var a;
+ }
+ }
+ expect_stdout: true
+}
+
+issue_4274_2: {
+ options = {
+ loops: true,
+ }
+ input: {
+ for (;;) {
+ if (!console.log("PASS")) {
+ break;
+ var a;
+ } else {
+ const a = 0;
+ }
+ }
+ }
+ expect: {
+ for (; console.log("PASS");) {
+ {
+ const a = 0;
+ }
+ var a;
+ }
+ }
+ expect_stdout: true
+}
expect_stdout: "PASS"
node_version: ">=4"
}
+
+issue_4274_1: {
+ options = {
+ loops: true,
+ }
+ input: {
+ "use strict";
+ for (;;) {
+ if (console.log("PASS")) {
+ let a;
+ } else {
+ break;
+ var a;
+ }
+ }
+ }
+ expect: {
+ "use strict";
+ for (; console.log("PASS");) {
+ {
+ let a;
+ }
+ var a;
+ }
+ }
+ expect_stdout: "PASS"
+ node_version: ">=4"
+}
+
+issue_4274_2: {
+ options = {
+ loops: true,
+ }
+ input: {
+ "use strict";
+ for (;;) {
+ if (!console.log("PASS")) {
+ break;
+ var a;
+ } else {
+ let a;
+ }
+ }
+ }
+ expect: {
+ "use strict";
+ for (; console.log("PASS");) {
+ {
+ let a;
+ }
+ var a;
+ }
+ }
+ expect_stdout: "PASS"
+ node_version: ">=4"
+}