mirror of
https://github.com/dart-lang/sdk
synced 2024-09-19 14:43:32 +00:00
8fd6d0aafd
Committed: https://code.google.com/p/dart/source/detail?r=19755 Reverted: http://code.google.com/p/dart/source/detail?r=19756 Review URL: https://codereview.chromium.org//12212016 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20996 260f80e4-7a28-3924-810f-c04153c831b5
59 lines
1.6 KiB
Dart
59 lines
1.6 KiB
Dart
// 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.
|
|
|
|
import "package:expect/expect.dart";
|
|
|
|
class BaseClass {
|
|
var foo;
|
|
BaseClass() { foo = 0; }
|
|
toString() => "BaseClass";
|
|
}
|
|
|
|
/**
|
|
* This class declaration causes an intentional type warning as it
|
|
* isn't marked abstract. It is abstract because it doesn't
|
|
* "implement" the field foo.
|
|
*/
|
|
class ImplementsClass implements BaseClass {
|
|
ImplementsClass() {}
|
|
}
|
|
|
|
abstract class ExtendsClass implements BaseClass {}
|
|
|
|
/**
|
|
* This class declaration causes an intentional type warning as it
|
|
* isn't marked abstract. It is abstract because it doesn't
|
|
* "implement" the field foo.
|
|
*/
|
|
class ImplementsExtendsClass implements ExtendsClass {
|
|
ImplementsExtendsClass() {}
|
|
}
|
|
|
|
main() {
|
|
ImplementsClass c1 = new ImplementsClass();
|
|
ImplementsExtendsClass c2 = new ImplementsExtendsClass();
|
|
try {
|
|
c1.foo;
|
|
Expect.fail('expected a NoSuchMethodError');
|
|
} on NoSuchMethodError catch (ex) {
|
|
// Expected error.
|
|
}
|
|
try {
|
|
c2.foo;
|
|
Expect.fail('expected a NoSuchMethodError');
|
|
} on NoSuchMethodError catch (ex) {
|
|
// Expected error.
|
|
}
|
|
Expect.equals(true, c1 is BaseClass);
|
|
Expect.equals(true, c1 is !ExtendsClass);
|
|
Expect.equals(true, c2 is BaseClass);
|
|
Expect.equals(true, c2 is ExtendsClass);
|
|
Expect.equals(true, c2 is !ImplementsClass);
|
|
Expect.equals("BaseClass", "${new BaseClass()}");
|
|
|
|
// Verify we don't inherit toString from BaseClass
|
|
Expect.notEquals("BaseClass", "${c1}");
|
|
Expect.notEquals("BaseClass", "${c2}");
|
|
}
|