blob: d8dcbbe05317eebab26eed99d2917d3a82b1feed [file] [log] [blame]
// Copyright (c) 2011, 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.
/// @assertion Initializing formals are executed during the execution of
/// generative constructors detailed below. Executing an initializing formal
/// this.id causes the field id of the immediately surrounding class to be
/// assigned the value of the corresponding actual parameter, unless id is a
/// final variable that has already been initialized, in which case a runtime
/// error occurs.
/// @description Checks that fields corresponding to an initializing formal
/// are assigned correctly.
/// @author msyabro
import "../../../../Utils/expect.dart";
class A {
A(this.a, this.b);
var a;
var b;
}
class B {
B([this.x = 1 , this.y = 2]);
var x;
var y;
}
class C {
C(this.c);
var c = 1;
}
main() {
var a = new A(0, 0);
Expect.equals(0, a.a);
Expect.equals(0, a.b);
a = new A('', 'b');
Expect.equals('', a.a);
Expect.equals('b', a.b);
a = new A(0.5, 123);
Expect.equals(0.5, a.a);
Expect.equals(123, a.b);
var b = new B();
Expect.equals(1, b.x);
Expect.equals(2, b.y);
b = new B(true, false);
Expect.equals(true, b.x);
Expect.equals(false, b.y);
b = new B(10);
Expect.equals(10, b.x);
Expect.equals(2, b.y);
var c = new C(2);
Expect.equals(2, c.c);
}