// 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
/// T v;, T v = e; , const T v = e;, final T v; or final T v = e;
/// always induces an implicit getter function with signature
///   T get v
/// whose invocation evaluates as described below.
/// @description For all types of forms checks that return type of getter is T
/// by expecting no static warnings.
/// @author ilya


class A {
  const A();
}
  
//--library static variables
A? x1;
A x2 = new A();
const A x3 = const A();
//final A x4; //can not be
final A x5 = new A();

class C {
  //--instance variables
  A? y1;
  A y2 = new A();
  //const A y3 = const A(); //can not be
  final A? y4;
  final A y5 = new A();
  
  //--class static variables
  static A? z1;
  static A z2 = new A();
  static const A z3 = const A();
  //static final A z4; //can not be
  static final A z5 = new A();

  C() : y4 = new A();
}

main() {
  A? res;
  
  res = x1;
  res = x2;
  res = x3;
  res = x5;

  C c = new C();

  res = c.y1;
  res = c.y2;
  res = c.y4;
  res = c.y5;
  
  res = C.z1;
  res = C.z2;
  res = C.z3;
  res = C.z5;
}
