// Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Tests dangling else. The VM should not have any problems, but dart2js or // dart2dart could get this wrong. import "package:expect/expect.dart"; nestedIf1(notTrue) { if (notTrue) return 'bad input'; if (notTrue) { if (notTrue) { return 'bad'; } } else { return 'good'; } return 'bug'; } nestedIf2(notTrue) { if (notTrue) return 'bad input'; if (notTrue) { if (notTrue) { return 'bad'; } else { if (notTrue) { return 'bad'; } } } else { return 'good'; } return 'bug'; } nestedWhile(notTrue) { if (notTrue) return 'bad input'; if (notTrue) { while (notTrue) { if (notTrue) { return 'bad'; } } } else { return 'good'; } return 'bug'; } nestedFor(notTrue) { if (notTrue) return 'bad input'; if (notTrue) { for (int i = 0; i < 3; i++) { if (i == 0) { return 'bad'; } } } else { return 'good'; } return 'bug'; } nestedLabeledStatement(notTrue) { if (notTrue) return 'bad input'; if (notTrue) { label: if (notTrue) { break label; } } else { return 'good'; } return 'bug'; } main() { Expect.equals('good', nestedIf1(false)); Expect.equals('good', nestedIf2(false)); Expect.equals('good', nestedWhile(false)); Expect.equals('good', nestedFor(false)); Expect.equals('good', nestedLabeledStatement(false)); }