mirror of
https://github.com/dart-lang/sdk
synced 2024-09-16 04:27:17 +00:00
a7e3c5507f
Change-Id: I20328968f057658d4cb25e2a51a02745af3af211 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142885 Commit-Queue: Bob Nystrom <rnystrom@google.com> Commit-Queue: Srujan Gaddam <srujzs@google.com> Auto-Submit: Bob Nystrom <rnystrom@google.com> Reviewed-by: Srujan Gaddam <srujzs@google.com>
61 lines
1.4 KiB
Dart
61 lines
1.4 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";
|
|
|
|
// Test that initializers for final fields are evaluated in the right
|
|
// order.
|
|
|
|
int counter = 0;
|
|
|
|
class Mark {
|
|
static late StringBuffer buffer;
|
|
Mark(value) {
|
|
buffer.write('$value.');
|
|
}
|
|
}
|
|
|
|
class OneField {
|
|
final a = new Mark('a');
|
|
OneField();
|
|
}
|
|
|
|
class TwoFields {
|
|
final a = new Mark('a');
|
|
final b = new Mark('b');
|
|
TwoFields();
|
|
}
|
|
|
|
class InheritOneField extends OneField {
|
|
final b = new Mark('b');
|
|
InheritOneField();
|
|
}
|
|
|
|
class MixedFields extends OneField {
|
|
final b = new Mark('b');
|
|
var c = new Mark('c');
|
|
final d = new Mark('d');
|
|
MixedFields();
|
|
MixedFields.c0() : c = new Mark('cc');
|
|
MixedFields.c1()
|
|
: c = new Mark('cc'),
|
|
super();
|
|
}
|
|
|
|
String run(callback) {
|
|
Mark.buffer = new StringBuffer();
|
|
callback();
|
|
return Mark.buffer.toString();
|
|
}
|
|
|
|
main() {
|
|
Expect.equals('a.', run(() => new OneField()));
|
|
Expect.equals('a.b.', run(() => new TwoFields()));
|
|
Expect.equals('b.a.', run(() => new InheritOneField()));
|
|
|
|
Expect.equals('b.c.d.a.', run(() => new MixedFields()));
|
|
Expect.equals('b.c.d.cc.a.', run(() => new MixedFields.c0()));
|
|
Expect.equals('b.c.d.cc.a.', run(() => new MixedFields.c1()));
|
|
}
|