847bd37ce0
BUG= Review URL: https://codereview.chromium.org//1021813002 git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44599 260f80e4-7a28-3924-810f-c04153c831b5
87 lines
1.7 KiB
Dart
87 lines
1.7 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 ParameterInitializerTest {
|
|
|
|
static testMain() {
|
|
|
|
var obj = new Foo.untyped(1);
|
|
Expect.equals(1, obj.x);
|
|
|
|
obj = new Foo.supertype(9);
|
|
Expect.equals(9, obj.x);
|
|
|
|
obj = new Foo.subtype(7);
|
|
Expect.equals(7, obj.x);
|
|
|
|
obj = new Foo.optional(111);
|
|
Expect.equals(111, obj.x);
|
|
|
|
obj = new Foo.optional();
|
|
Expect.equals(5, obj.x);
|
|
|
|
obj = new Foo(1);
|
|
Expect.equals(2, obj.x);
|
|
|
|
obj = new SubFoo(42);
|
|
Expect.equals(1, obj.x);
|
|
|
|
obj = new SubSubFoo(42);
|
|
Expect.equals(1, obj.x);
|
|
}
|
|
}
|
|
|
|
class Foo {
|
|
Foo(num this.x) {
|
|
// Reference to x must resolve to the field.
|
|
x++;
|
|
Expect.equals(this.x, x);
|
|
}
|
|
|
|
Foo.untyped(this.x) {}
|
|
Foo.supertype(Object this.x) {}
|
|
Foo.subtype(int this.x) {}
|
|
Foo.optional([this.x = 5]) {}
|
|
|
|
num x;
|
|
}
|
|
|
|
class SubFoo extends Foo {
|
|
SubFoo(num y) : super(y), x_ = 0 {
|
|
// Subfoo.setter of x has been invoked in the Foo constructor.
|
|
Expect.equals(x, 1);
|
|
Expect.equals(x_, 1);
|
|
|
|
// The super.x will resolved to the field in Foo.
|
|
Expect.equals(super.x, y);
|
|
}
|
|
|
|
get x {
|
|
return x_;
|
|
}
|
|
|
|
set x(num val) {
|
|
x_ = val;
|
|
}
|
|
|
|
num x_;
|
|
}
|
|
|
|
class SubSubFoo extends SubFoo {
|
|
SubSubFoo(num y) : super(y) {
|
|
// Subfoo.setter of x has been invoked in the Foo constructor.
|
|
Expect.equals(x, 1);
|
|
Expect.equals(x_, 1);
|
|
|
|
// There is no way to get to the field in Foo.
|
|
Expect.equals(super.x, 1);
|
|
}
|
|
}
|
|
|
|
main() {
|
|
ParameterInitializerTest.testMain();
|
|
}
|