// Copyright (c) 2014, 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.

// @dart = 2.9

import "package:expect/expect.dart";

class Foo {}

const
    bool //  //# 01: ok
    int //   //# 02: compile-time error
    String //# 03: compile-time error
    Foo //   //# 04: compile-time error
    a = const bool.fromEnvironment('a');

const
    bool //  //# 05: ok
    int //   //# 06: compile-time error
    String //# 07: compile-time error
    Foo //   //# 08: compile-time error
    b = const bool.fromEnvironment('b');

const
    bool //  //# 09: compile-time error
    int //   //# 10: ok
    String //# 11: compile-time error
    Foo //   //# 12: compile-time error
    c = const int.fromEnvironment('c', defaultValue: 0);

const
    bool //  //# 13: compile-time error
    int //   //# 14: compile-time error
    String //# 15: ok
    Foo //   //# 16: compile-time error
    d = const String.fromEnvironment('d', defaultValue: '');

main() {
  Expect.equals(false, a);
  Expect.equals(false, b);
  Expect.equals(0, c);
  Expect.equals('', d);
}
