return consequent;
}
}
+ // x?y?z:a:a --> x&&y?z:a
+ if (consequent instanceof AST_Conditional
+ && consequent.alternative.equivalent_to(alternative)) {
+ return make_node(AST_Conditional, self, {
+ condition: make_node(AST_Binary, self, {
+ left: self.condition,
+ operator: "&&",
+ right: consequent.condition
+ }),
+ consequent: consequent.consequent,
+ alternative: alternative
+ });
+ }
return self;
});
some_condition(), do_something();
}
}
+
+cond_5: {
+ options = {
+ conditionals: true
+ };
+ input: {
+ if (some_condition()) {
+ if (some_other_condition()) {
+ do_something();
+ } else {
+ alternate();
+ }
+ } else {
+ alternate();
+ }
+
+ if (some_condition()) {
+ if (some_other_condition()) {
+ do_something();
+ }
+ }
+ }
+ expect: {
+ some_condition() && some_other_condition() ? do_something() : alternate();
+ some_condition() && some_other_condition() && do_something();
+ }
+}