// 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 A variable declaration of one of the forms
/// var v;, var v = e; , const v = e;, final v; or final v = e;
/// always induces an implicit getter function with signature
///   get v
/// whose invocation evaluates as described below.
/// @description Trivially checks that instance variables declared without 
/// specified type are accessible.
/// @author vasya

import "../../Utils/expect.dart";

class C {
  C(this.v4);
  var v1;
  var v2 = "bar";
  final v3 = 1;
  final v4;
  double v5 = 0.2;
}

main() {
  C c = new C(3);
  Expect.equals(null, c.v1);
  Expect.equals("bar", c.v2);
  Expect.equals(1, c.v3);
  Expect.equals(3, c.v4);
  Expect.equals(0.2, c.v5);
}
