dbaf041ae4
Change-Id: Ia3238c1781422ec5eb7a219a5cf8af645a4c5876 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/409000 Commit-Queue: Bob Nystrom <rnystrom@google.com> Reviewed-by: Lasse Nielsen <lrn@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com>
81 lines
1.6 KiB
Dart
81 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 ParameterInitializerTest {
|
|
static testMain() {
|
|
var obj = new Foo.untyped(1);
|
|
Expect.equals(1, 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.subtype(int this.x) {}
|
|
Foo.optional([this.x = 5]) {}
|
|
|
|
num x;
|
|
}
|
|
|
|
class SubFoo extends Foo {
|
|
SubFoo(num y) : x_ = 0, super(y) {
|
|
// 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();
|
|
}
|