blob: 1c9f0cdf6be27dc3c437e2ba08b630c3a1809d52 [file] [log] [blame]
// 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.
// @dart=2.6
/*library: nnbd=false*/
library test;
T id<T>(T /*T**/ t) => t;
class Class1<T> {
const Class1();
}
class Class2<T> {
final T field1;
const Class2(
this. /*normal|limited.Class2.T**/ /*verbose.test::Class2.T**/ field1);
}
class Class3<T, S> extends Class2<T> {
final S field2;
const Class3(
T /*normal|limited.Class3.T**/ /*verbose.test::Class3.T**/ field1,
this. /*normal|limited.Class3.S**/ /*verbose.test::Class3.S**/ field2)
: super(field1);
}
class Class4<T, S> extends Class3<T, S> {
final S field2;
const Class4(
T /*normal|limited.Class4.T**/ /*verbose.test::Class4.T**/ field1,
S /*normal|limited.Class4.S**/ /*verbose.test::Class4.S**/ shadowedField2,
this. /*normal|limited.Class4.S**/ /*verbose.test::Class4.S**/ field2)
: super(field1, shadowedField2);
}
const nullConstant = /*null*/ null;
const trueConstant = /*true*/ true;
const falseConstant = /*false*/ false;
const intConstant = /*42*/ 42;
const doubleConstant = /*3.14*/ 3.14;
const stringConstant = /*"foo"*/ "foo";
const symbolConstant = /*#name*/ #name;
const privateSymbolConstant =
/*normal|limited.#_privateName*/
/*verbose.#test::_privateName*/
#_privateName;
const listConstant1 = /*const <dynamic>[]*/ [];
const listConstant2 = <
int> /*normal|limited.const <int*>[]*/ /*verbose.const <dart.core::int*>[]*/ [];
const listConstant3 = <
int> /*normal|limited.const <int*>[0]*/ /*verbose.const <dart.core::int*>[0]*/ [
0
];
const listConstant4 = <
int> /*normal|limited.const <int*>[0, 1]*/ /*verbose.const <dart.core::int*>[0, 1]*/ [
0,
1
];
const setConstant1 = <
int> /*normal|limited.const <int*>{}*/ /*verbose.const <dart.core::int*>{}*/ {};
const setConstant2 = <
int> /*normal|limited.const <int*>{0}*/ /*verbose.const <dart.core::int*>{0}*/ {
0
};
const setConstant3 = <
int> /*normal|limited.const <int*>{0, 1}*/ /*verbose.const <dart.core::int*>{0, 1}*/ {
0,
1
};
const mapConstant1 = /*const <dynamic, dynamic>{}*/ {};
const mapConstant2 = <int, String>
/*normal|limited.const <int*, String*>{}*/
/*verbose.const <dart.core::int*, dart.core::String*>{}*/
{};
const mapConstant3 = <int, String>
/*normal|limited.const <int*, String*>{0: "foo"}*/
/*verbose.const <dart.core::int*, dart.core::String*>{0: "foo"}*/
{0: "foo"};
const mapConstant4 = <int, String>
/*normal|limited.const <int*, String*>{0: "foo", 1: "bar"}*/
/*verbose.const <dart.core::int*, dart.core::String*>{0: "foo", 1: "bar"}*/
{0: "foo", 1: "bar"};
const tearOffConstant = /*normal|limited.id*/ /*verbose.test::id*/ id;
const int Function(int) partialInitializationConstant =
/*normal|limited.id<int*>*/
/*verbose.test::id<dart.core::int*>*/
id;
const boolHasEnvironmentConstant = const
/*normal|limited.unevaluated{bool.hasEnvironment("foo")}*/
/*verbose.unevaluated{{org-dartlang-test:///a/b/c/main.dart}dart.core::bool.hasEnvironment("foo")}*/
bool.hasEnvironment("foo");
const boolFromEnvironmentConstant = const
/*normal|limited.unevaluated{bool.fromEnvironment("foo", defaultValue: true)}*/
/*verbose.unevaluated{{org-dartlang-test:///a/b/c/main.dart}dart.core::bool.fromEnvironment("foo", defaultValue: true)}*/
bool.fromEnvironment("foo", defaultValue: true);
const intFromEnvironmentConstant = const
/*normal|limited.unevaluated{int.fromEnvironment("foo", defaultValue: 87)}*/
/*verbose.unevaluated{{org-dartlang-test:///a/b/c/main.dart}dart.core::int.fromEnvironment("foo", defaultValue: 87)}*/
int.fromEnvironment("foo", defaultValue: 87);
const stringFromEnvironmentConstant = const
/*normal|limited.unevaluated{String.fromEnvironment("foo", defaultValue: "bar")}*/
/*verbose.unevaluated{{org-dartlang-test:///a/b/c/main.dart}dart.core::String.fromEnvironment("foo", defaultValue: "bar")}*/
String.fromEnvironment("foo", defaultValue: "bar");
const instanceConstant1 = const
/*normal|limited.const Class1<dynamic>{}*/
/*verbose.const test::Class1<dynamic>{}*/
Class1();
const instanceConstant2 = const
/*normal|limited.const Class1<int*>{}*/
/*verbose.const test::Class1<dart.core::int*>{}*/
Class1<int>();
const instanceConstant3 = const
/*normal|limited.const Class1<int*>{}*/
/*verbose.const test::Class1<dart.core::int*>{}*/
Class1<int>();
const instanceConstant4 = const
/*normal|limited.const Class2<int*>{Class2.field1: 0}*/
/*verbose.const test::Class2<dart.core::int*>{test::Class2.field1: 0}*/
Class2(0);
const instanceConstant5 = const
/*normal|limited.const Class2<num*>{Class2.field1: 42}*/
/*verbose.const test::Class2<dart.core::num*>{test::Class2.field1: 42}*/
Class2<num>(42);
const instanceConstant6 = const
/*normal|limited.const Class3<int*, String*>{Class3.field2: "foo", Class2.field1: 42}*/
/*verbose.const test::Class3<dart.core::int*, dart.core::String*>{test::Class3.field2: "foo", test::Class2.field1: 42}*/
Class3<int, String>(42, "foo");
const instanceConstant7 = const
/*normal|limited.const Class4<int*, String*>{Class4.field2: "baz", Class3.field2: "foo", Class2.field1: 42}*/
/*verbose.const test::Class4<dart.core::int*, dart.core::String*>{test::Class4.field2: "baz", test::Class3.field2: "foo", test::Class2.field1: 42}*/
Class4<int, String>(42, "foo", "baz");