|  | // Copyright (c) 2020, 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. | 
|  |  | 
|  | // Environment does not contain "bar". | 
|  | const bool barFromEnv = const bool.fromEnvironment("bar"); | 
|  | const bool hasBarEnv = const bool.hasEnvironment("bar"); | 
|  | const bool barFromEnvOrNull = | 
|  | const bool.fromEnvironment("bar", defaultValue: null); | 
|  | const bool notBarFromEnvOrNull = !barFromEnvOrNull; | 
|  | const bool conditionalOnNull = barFromEnvOrNull ? true : false; | 
|  | const bool nullAwareOnNullTrue = barFromEnvOrNull ?? true; | 
|  | const bool nullAwareOnNullFalse = barFromEnvOrNull ?? false; | 
|  | const bool andOnFalse = nullAwareOnNullFalse && nullAwareOnNullTrue; | 
|  | const bool andOnFalse2 = nullAwareOnNullTrue && nullAwareOnNullFalse; | 
|  | const bool andOnNull = barFromEnvOrNull && true; | 
|  | const bool andOnNull2 = true && barFromEnvOrNull; | 
|  | const bool orOnNull = barFromEnvOrNull || true; | 
|  | const bool orOnNull2 = barFromEnvOrNull || false; | 
|  | const bool orOnNull3 = true || barFromEnvOrNull; | 
|  | const bool orOnNull4 = false || barFromEnvOrNull; | 
|  |  | 
|  | const String barFromEnvString = const String.fromEnvironment("bar"); | 
|  | const String barFromEnvOrNullString = | 
|  | const String.fromEnvironment("bar", defaultValue: null); | 
|  | const String barFromEnvOrActualString = | 
|  | const String.fromEnvironment("bar", defaultValue: "hello"); | 
|  | const String nullFromEnvString = | 
|  | const String.fromEnvironment(barFromEnvOrNullString); | 
|  |  | 
|  | const bool barFromEnvBool = const bool.fromEnvironment("bar"); | 
|  | const bool barFromEnvOrNullBool = | 
|  | const bool.fromEnvironment("bar", defaultValue: null); | 
|  | const bool barFromEnvOrActualBool = | 
|  | const bool.fromEnvironment("bar", defaultValue: true); | 
|  | const bool nullFromEnvBool = const bool.fromEnvironment(barFromEnvOrNullString); | 
|  |  | 
|  | const int barFromEnvInt = const int.fromEnvironment("bar"); | 
|  | const int barFromEnvOrNullInt = | 
|  | const int.fromEnvironment("bar", defaultValue: null); | 
|  | const int barFromEnvOrActualInt = | 
|  | const int.fromEnvironment("bar", defaultValue: 42); | 
|  | const int nullFromEnvInt = const int.fromEnvironment(barFromEnvOrNullString); | 
|  |  | 
|  | // Environment does contain "baz" (value '42', i.e. neither true nor false). | 
|  | const bool bazFromEnv = const bool.fromEnvironment("baz"); | 
|  | const bool hasBazEnv = const bool.hasEnvironment("baz"); | 
|  | const int bazFromEnvAsInt = const int.fromEnvironment("baz"); | 
|  | const String bazFromEnvAsString = const String.fromEnvironment("baz"); | 
|  |  | 
|  | // Environment does contain "bazTrue" (value 'true') and | 
|  | // "bazFalse" (value 'false'). | 
|  | const bool bazTrueFromEnv = const bool.fromEnvironment("bazTrue"); | 
|  | const bool bazFalseFromEnv = const bool.fromEnvironment("bazFalse"); | 
|  |  | 
|  | const bool trueBool = true; | 
|  | const bool falseBool = false; | 
|  | const bool binaryOnBoolCaret = trueBool ^ falseBool; | 
|  | const bool binaryOnBoolAmpersand = trueBool & falseBool; | 
|  | const bool binaryOnBoolBar = trueBool | falseBool; | 
|  | const bool binaryOnBoolBar2 = falseBool | trueBool; | 
|  |  | 
|  | const dynamic willBeDouble = const bool.fromEnvironment("foo") ? 42 : 42.42; | 
|  | const binaryOnDouble = willBeDouble << 2; | 
|  | const dynamic willBeInt = const bool.fromEnvironment("foo") ? 42.42 : 42; | 
|  | const binaryOnIntWithDoubleBad = willBeInt << willBeDouble; | 
|  | const binaryOnIntWithDoubleOK = willBeInt + willBeDouble; | 
|  | const binaryOnIntWithString = willBeInt << "hello"; | 
|  | const dynamic willBeString = | 
|  | const bool.fromEnvironment("foo") ? 42.42 : "hello"; | 
|  | const binaryOnStringWithStringOK = willBeString + " world"; | 
|  | const binaryOnStringWithInt = willBeString + willBeInt; | 
|  | const binaryOnStringWithStringBad = willBeString - " world"; | 
|  |  | 
|  | var x = 1; | 
|  | const x1 = --x; | 
|  | const x2 = ++x; | 
|  | const x3 = x--; | 
|  | const x4 = x++; | 
|  |  | 
|  | const y = 1; | 
|  | const y1 = --y; | 
|  | const y2 = ++y; | 
|  | const y3 = y--; | 
|  | const y4 = y++; | 
|  |  | 
|  | abstract class AbstractClass {} | 
|  |  | 
|  | abstract class AbstractClassWithConstructor { | 
|  | const AbstractClassWithConstructor(); | 
|  |  | 
|  | int foo(); | 
|  | } | 
|  |  | 
|  | AbstractClassWithConstructor abstractClassWithConstructor = | 
|  | const AbstractClassWithConstructor(); | 
|  |  | 
|  | class NotAbstractClass { | 
|  | @AbstractClass() | 
|  | Object foo; | 
|  |  | 
|  | @AbstractClassWithConstructor() | 
|  | Object bar; | 
|  | } | 
|  |  | 
|  | class Foo { | 
|  | final int x; | 
|  | final int y; | 
|  | const Foo(int x) | 
|  | : this.x = x, | 
|  | this.y = "hello".length; | 
|  | } | 
|  |  | 
|  | class ExtendsFoo1 extends Foo { | 
|  | // No constructor. | 
|  | } | 
|  |  | 
|  | const ExtendsFoo1 extendsFoo1 = const ExtendsFoo1(); | 
|  |  | 
|  | class ExtendsFoo2 extends Foo { | 
|  | const ExtendsFoo2(); | 
|  | } | 
|  |  | 
|  | const ExtendsFoo2 extendsFoo2 = const ExtendsFoo2(); | 
|  |  | 
|  | const Foo foo1 = const Foo(42); | 
|  | const Foo foo2 = const Foo(42); | 
|  | const bool foosIdentical = identical(foo1, foo2); | 
|  | const bool foosEqual = foo1 == foo2; | 
|  | const Symbol barFoo = const Symbol("Foo"); | 
|  | const Symbol barFooEqual = const Symbol("Foo="); | 
|  | const Symbol tripleShiftSymbol = const Symbol(">>>"); | 
|  | const Symbol symbolWithDots = const Symbol("I.Have.Dots"); | 
|  |  | 
|  | const int circularity1 = circularity2; | 
|  | const int circularity2 = circularity3; | 
|  | const int circularity3 = circularity4; | 
|  | const int circularity4 = circularity1; | 
|  |  | 
|  | const function_const = () {}; | 
|  | var function_var = () {}; | 
|  |  | 
|  | class ConstClassWithFailingAssertWithEmptyMessage { | 
|  | const ConstClassWithFailingAssertWithEmptyMessage() : assert(false, ""); | 
|  | } | 
|  |  | 
|  | ConstClassWithFailingAssertWithEmptyMessage failedAssertEmptyMessage = | 
|  | const ConstClassWithFailingAssertWithEmptyMessage(); | 
|  |  | 
|  | class ClassWithTypeArguments<E, F, G> { | 
|  | const ClassWithTypeArguments(E e, F f, G g); | 
|  | } | 
|  |  | 
|  | const ClassWithTypeArguments classWithTypeArguments1 = | 
|  | const ClassWithTypeArguments<int, int, int>(42, 42, 42); | 
|  | const ClassWithTypeArguments classWithTypeArguments2 = | 
|  | const ClassWithTypeArguments(42, 42, 42); | 
|  | const bool classWithTypeArgumentsIdentical = | 
|  | identical(classWithTypeArguments1, classWithTypeArguments2); | 
|  |  | 
|  | class ClassWithNonEmptyConstConstructor { | 
|  | const ClassWithNonEmptyConstConstructor() { | 
|  | print("hello"); | 
|  | } | 
|  | } | 
|  |  | 
|  | ClassWithNonEmptyConstConstructor classWithNonEmptyConstConstructor = | 
|  | const ClassWithNonEmptyConstConstructor(); | 
|  |  | 
|  | class ConstClassWithFinalFields1 { | 
|  | const ConstClassWithFinalFields1(); | 
|  |  | 
|  | final x = 1; | 
|  | } | 
|  |  | 
|  | class ConstClassWithFinalFields2 { | 
|  | const ConstClassWithFinalFields2(); | 
|  |  | 
|  | final y = 1; | 
|  | final z1 = y; | 
|  | final z2 = x; | 
|  | } | 
|  |  | 
|  | ConstClassWithFinalFields2 constClassWithFinalFields = | 
|  | const ConstClassWithFinalFields2(); | 
|  |  | 
|  | const zeroPointZeroIdentical = identical(0.0, 0.0); | 
|  | const zeroPointZeroIdenticalToZero = identical(0.0, 0); | 
|  | const zeroIdenticalToZeroPointZero = identical(0, 0.0); | 
|  | const nanIdentical = identical(0 / 0, 0 / 0); | 
|  |  | 
|  | const zeroPointZeroEqual = 0.0 == 0.0; | 
|  | const zeroPointZeroEqualToZero = 0.0 == 0; | 
|  | const zeroEqualToZeroPointZero = 0 == 0.0; | 
|  | const nanEqual = 0 / 0 == 0 / 0; | 
|  |  | 
|  | T id1<T>(T t) => t; | 
|  | T id2<T>(T t) => t; | 
|  |  | 
|  | const dynamic willBecomeNull = const bool.fromEnvironment("foo") ? id1 : null; | 
|  |  | 
|  | const int Function(int) willBecomeNullToo = | 
|  | const bool.fromEnvironment("foo") ? id1 : willBecomeNull; | 
|  | const int Function(int) partialInstantiation = | 
|  | const bool.fromEnvironment("foo") ? willBecomeNull : id1; | 
|  |  | 
|  | const bool yBool = true; | 
|  | const bool zBool = !yBool; | 
|  |  | 
|  | const maybeInt = bool.fromEnvironment("foo") ? 42 : true; | 
|  | const bool isItInt = maybeInt is int ? true : false; | 
|  | const maybeInt2 = zBool ? 42 : true; | 
|  | const bool isItInt2 = maybeInt2 is int ? true : false; | 
|  | const maybeInt3 = zBool ? 42 : null; | 
|  | const bool isItInt3 = maybeInt3 is int ? true : false; | 
|  |  | 
|  | main() { | 
|  | print(barFromEnv); | 
|  | print(hasBarEnv); | 
|  | } |