blob: c4c3ea89aaa1799f3108d6daa631769d14a70f6d [file] [log] [blame]
// Copyright (c) 2018, 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 x;
final 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 test_constants1() {
print(c1);
print(c2);
print(c3);
print(c4);
print(c5);
}
void test_constants2() {
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 test_list_literal(int a) {
print([1, a, 3]);
print(<String>['a', a.toString(), 'b']);
}
void test_map_literal<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 test_symbol() {
print(#test_symbol);
print(#_private_symbol);
}
void test_type_literal<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() {}