// 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  When invoked from a constant object expression, a constant
/// constructor must throw an exception if any of its actual parameters is a
/// value that would prevent one of the potentially constant expressions within
/// it from being a valid compile-time constant.
/// @description Checks that compile-time error is produced if actual parameters
/// passed to the constructor make the constant initializer invalid. Note: this
/// mechanism is described in chapter Classes.Constructors.Constant_Constructors.
/// Constant constructor invocation is placed outside of main(), in a global
/// variable initialization expression.
/// @author iefremov


class A {
  final x;
  const A(var p) : x = p + 42;
}

var a = const A(new DateTime.now().millisecondsSinceEpoch);
//            ^
// [analyzer] unspecified
// [cfe] unspecified

main() {
  var b = a;
}
