Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file |
| 2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
| 3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
| 4 | 4 |
| 5 class BaseClass { | 5 class BaseClass { |
| 6 var foo; | 6 var foo; |
| 7 BaseClass() { foo = 0; } | 7 BaseClass() { foo = 0; } |
| 8 toString() => "BaseClass"; | 8 toString() => "BaseClass"; |
| 9 } | 9 } |
| 10 | 10 |
| 11 /** | |
| 12 * This class declaration causes an intentional type warning as it | |
| 13 * isn't marked abstract. It is abstract because it doesn't | |
| 14 * "implement" the field foo. | |
| 15 */ | |
| 11 class ImplementsClass implements BaseClass { | 16 class ImplementsClass implements BaseClass { |
| 12 ImplementsClass() {} | 17 ImplementsClass() {} |
| 13 } | 18 } |
| 14 | 19 |
| 15 interface ExtendsClass extends BaseClass {} | 20 interface ExtendsClass extends BaseClass {} |
| 16 | 21 |
| 22 /** | |
| 23 * This class declaration causes an intentional type warning as it | |
| 24 * isn't marked abstract. It is abstract because it doesn't | |
| 25 * "implement" the field foo. | |
| 26 */ | |
| 17 class ImplementsExtendsClass implements ExtendsClass { | 27 class ImplementsExtendsClass implements ExtendsClass { |
| 18 ImplementsExtendsClass() {} | 28 ImplementsExtendsClass() {} |
| 19 } | 29 } |
| 20 | 30 |
| 21 main() { | 31 main() { |
| 22 ImplementsClass c1 = new ImplementsClass(); | 32 ImplementsClass c1 = new ImplementsClass(); |
| 23 ImplementsExtendsClass c2 = new ImplementsExtendsClass(); | 33 ImplementsExtendsClass c2 = new ImplementsExtendsClass(); |
| 24 if (false) { | 34 try { |
| 25 // Verify we don't inherit the field from BaseClass | 35 c1.foo; |
| 26 Expect.equals(0, c1.foo); // 01: compile-time error | 36 Expect.fail('expected a NoSuchMethodException'); |
|
ahe
2012/03/25 13:31:18
Notice: this was never a multi-test. It says //, n
Lasse Reichstein Nielsen
2012/03/25 18:16:46
Any idea why anyone would have thought this to be
ahe
2012/03/27 14:49:42
I think there may have been some confusion about w
| |
| 27 Expect.equals(0, c2.foo); // 02: compile-time error | 37 } catch (NoSuchMethodException ex) { |
| 38 // Expected error. | |
| 39 } | |
| 40 try { | |
| 41 c2.foo; | |
| 42 Expect.fail('expected a NoSuchMethodException'); | |
| 43 } catch (NoSuchMethodException ex) { | |
| 44 // Expected error. | |
| 28 } | 45 } |
| 29 Expect.equals(true, c1 is BaseClass); | 46 Expect.equals(true, c1 is BaseClass); |
| 30 Expect.equals(true, c1 is !ExtendsClass); | 47 Expect.equals(true, c1 is !ExtendsClass); |
| 31 Expect.equals(true, c2 is BaseClass); | 48 Expect.equals(true, c2 is BaseClass); |
| 32 Expect.equals(true, c2 is ExtendsClass); | 49 Expect.equals(true, c2 is ExtendsClass); |
| 33 Expect.equals(true, c2 is !ImplementsClass); | 50 Expect.equals(true, c2 is !ImplementsClass); |
| 34 Expect.equals("BaseClass", "${new BaseClass()}"); | 51 Expect.equals("BaseClass", "${new BaseClass()}"); |
| 35 | 52 |
| 36 // Verify we don't inherit toString from BaseClass | 53 // Verify we don't inherit toString from BaseClass |
| 37 Expect.equals("${new Object()}", "${c1}"); | 54 Expect.notEquals("BaseClass", "${c1}"); |
| 38 Expect.equals("${new Object()}", "${c2}"); | 55 Expect.notEquals("BaseClass", "${c2}"); |
| 39 } | 56 } |
| OLD | NEW |