b101a7d002
Change-Id: Ib33169c3e0ffc870915c189404074a1dea472546 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/196548 Reviewed-by: Bob Nystrom <rnystrom@google.com> Commit-Queue: Leaf Petersen <leafp@google.com>
85 lines
1.6 KiB
Dart
85 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.
|
|
|
|
// @dart = 2.9
|
|
|
|
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();
|
|
}
|