64d7bc5acf
Review URL: https://chromiumcodereview.appspot.com//10248007 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7101 260f80e4-7a28-3924-810f-c04153c831b5
57 lines
1.6 KiB
Dart
57 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.
|
|
|
|
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() {}
|
|
}
|
|
|
|
interface ExtendsClass extends 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 NoSuchMethodException');
|
|
} catch (NoSuchMethodException ex) {
|
|
// Expected error.
|
|
}
|
|
try {
|
|
c2.foo;
|
|
Expect.fail('expected a NoSuchMethodException');
|
|
} catch (NoSuchMethodException 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}");
|
|
}
|