// 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. // Test for instance field initializer expressions. import "package:expect/expect.dart"; class Cheese { static const mild = 1; static const stinky = 2; // Instance fields with initializer expression. String name = ""; var smell = mild; Cheese() { Expect.equals("", this.name); Expect.equals(Cheese.mild, this.smell); } Cheese.initInBlock(String s) { Expect.equals("", this.name); Expect.equals(Cheese.mild, this.smell); this.name = s; } Cheese.initFieldParam(this.name, this.smell) {} // Test that static const field Cheese.mild is not shadowed // by the parameter mild when compiling the field initializer // for instance field smell. Cheese.hideAndSeek(var mild) : name = mild { Expect.equals(mild, this.name); Expect.equals(Cheese.mild, this.smell); } } class HasNoExplicitConstructor { String s = "Tilsiter"; } main() { var generic = new Cheese(); Expect.equals("", generic.name); Expect.equals(Cheese.mild, generic.smell); var gruyere = new Cheese.initInBlock("Gruyere"); Expect.equals("Gruyere", gruyere.name); Expect.equals(Cheese.mild, gruyere.smell); var munster = new Cheese.initFieldParam("Munster", Cheese.stinky); Expect.equals("Munster", munster.name); Expect.equals(Cheese.stinky, munster.smell); var brie = new Cheese.hideAndSeek("Brie"); Expect.equals("Brie", brie.name); Expect.equals(Cheese.mild, brie.smell); var t = new HasNoExplicitConstructor(); Expect.equals("Tilsiter", t.s); }