|  | // Copyright (c) 2024, 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. | 
|  |  | 
|  | enum A { | 
|  | elem1, | 
|  | elem2, | 
|  | elem3, | 
|  | elem4, | 
|  | } | 
|  |  | 
|  | class B { | 
|  | final int i; | 
|  | const B(this.i); | 
|  | } | 
|  |  | 
|  | class C extends B { | 
|  | final int j; | 
|  | const C(int a, int b, int c) | 
|  | : j = a + b, | 
|  | super(c * 5); | 
|  | } | 
|  |  | 
|  | class D { | 
|  | final Object? x; | 
|  | final Object? y; | 
|  | const D(this.x, [this.y]); | 
|  | } | 
|  |  | 
|  | const c1 = A.elem3; | 
|  | const c2 = 'hello!'; | 
|  | const c3 = c2.length; | 
|  | const c4 = const C(1, 2, 3); | 
|  | const c5 = const D(const B(4)); | 
|  |  | 
|  | void testConstants1() { | 
|  | print(c1); | 
|  | print(c2); | 
|  | print(c3); | 
|  | print(c4); | 
|  | print(c5); | 
|  | } | 
|  |  | 
|  | void testConstants2() { | 
|  | print(42); | 
|  | print('foo'); | 
|  | print(A.elem2); | 
|  | print(const [42, 'foo', int]); | 
|  | print(const <String, A>{'E2': A.elem2, 'E4': A.elem4}); | 
|  | print( | 
|  | const D(const C(4, 5, 6), const {'foo': 42, 'bar': const B(c2.length)})); | 
|  | } | 
|  |  | 
|  | void testListLiteral(int a) { | 
|  | print([1, a, 3]); | 
|  | print(<String>['a', a.toString(), 'b']); | 
|  | } | 
|  |  | 
|  | void testMapLiteral<T>(int a, int b, T c) { | 
|  | print({1: a, b: 2}); | 
|  | print(<String, int>{'foo': a, b.toString(): 3}); | 
|  | print(<String, T>{}); | 
|  | print(<T, int>{c: 4}); | 
|  | } | 
|  |  | 
|  | void testSetLiteral<T>(int a, int b) { | 
|  | print({1, 2, a}); | 
|  | print(<String>{'foo', b.toString()}); | 
|  | print(<T>{}); | 
|  | } | 
|  |  | 
|  | void testSymbol() { | 
|  | print(#test_symbol); | 
|  | print(#_private_symbol); | 
|  | } | 
|  |  | 
|  | void testTypeLiteral<T>() { | 
|  | print(String); | 
|  | print(T); | 
|  | } | 
|  |  | 
|  | class E<T> { | 
|  | const E(); | 
|  | } | 
|  |  | 
|  | class F<P, Q> extends E<Map<P, Q>> { | 
|  | const F(); | 
|  | } | 
|  |  | 
|  | testGenericConstInstance() => const F<int, String>(); | 
|  |  | 
|  | typedef GenericFunctionType = X Function<X>(X); | 
|  | testGenericFunctionTypeLiteral() => GenericFunctionType; | 
|  |  | 
|  | double fieldWithDoubleLiteralInitializer = 1.0; | 
|  | testFieldWithDoubleLiteralInitializer() => fieldWithDoubleLiteralInitializer; | 
|  |  | 
|  | main() {} |