blob: 1a0863a6ab28a216b5d650e54bb100ec24e96a75 [file] [log] [blame]
// Copyright (c) 2011, 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.
/**
* @assertion An on-catch clause of the form on T catch (p1 , p2 ) s matches an
* object o if the type of o is a subtype of T.
* @description Checks that it is not an error when the least specific catch
* clause is placed first, followed by more specific, and therefore redundant,
* catch clauses and that an exception can not be caught with clauses that don't
* match.
* @author iefremov
*/
import '../../../Utils/expect.dart';
class A {}
class B extends A {}
class C extends B {}
main() {
try {
try {
throw new Object();
} on A catch (ex, p2) {
Expect.fail("This clause shouldn't be executed");
} on B catch (ex, p2) {
Expect.fail("This clause shouldn't be executed");
} on C catch (ex, p2) {
Expect.fail("This clause shouldn't be executed");
}
} on Object catch (o, p2) {}
}