blob: 0f8f57c8806e4df51a1d99a5988a0d84d738e15c [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);
}