4025dee2f8
Closes #43538 Change-Id: I58f03d6d71e6de4744003cc28519a20c7e9e7f12 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/164787 Reviewed-by: Dmitry Stefantsov <dmitryas@google.com> Commit-Queue: Johnni Winther <johnniwinther@google.com>
157 lines
6.5 KiB
Dart
157 lines
6.5 KiB
Dart
// 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.
|
|
|
|
/*library: nnbd=true*/
|
|
|
|
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.library org-dartlang-test:///a/b/c/main.dart::Class2.T%*/
|
|
field1);
|
|
}
|
|
|
|
class Class3<T, S> extends Class2<T> {
|
|
final S field2;
|
|
|
|
const Class3(
|
|
T
|
|
/*normal|limited.Class3.T%*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::Class3.T%*/
|
|
field1,
|
|
this.
|
|
/*normal|limited.Class3.S%*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::Class3.S%*/
|
|
field2)
|
|
: super(field1);
|
|
}
|
|
|
|
class Class4<T, S> extends Class3<T, S> {
|
|
final S field2;
|
|
|
|
const Class4(
|
|
T
|
|
/*normal|limited.Class4.T%*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::Class4.T%*/
|
|
field1,
|
|
S
|
|
/*normal|limited.Class4.S%*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::Class4.S%*/
|
|
shadowedField2,
|
|
this. /*normal|limited.Class4.S%*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::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.#library org-dartlang-test:///a/b/c/main.dart::_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.library org-dartlang-test:///a/b/c/main.dart::id*/
|
|
id;
|
|
const int Function(int) partialInitializationConstant =
|
|
/*normal|limited.id<int>*/
|
|
/*verbose.library org-dartlang-test:///a/b/c/main.dart::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 library org-dartlang-test:///a/b/c/main.dart::Class1<dynamic>{}*/
|
|
Class1();
|
|
const instanceConstant2 = const
|
|
/*normal|limited.const Class1<int>{}*/
|
|
/*verbose.const library org-dartlang-test:///a/b/c/main.dart::Class1<dart.core::int>{}*/
|
|
Class1<int>();
|
|
const instanceConstant3 = const
|
|
/*normal|limited.const Class1<int>{}*/
|
|
/*verbose.const library org-dartlang-test:///a/b/c/main.dart::Class1<dart.core::int>{}*/
|
|
Class1<int>();
|
|
const instanceConstant4 = const
|
|
/*normal|limited.const Class2<int>{Class2.field1: 0}*/
|
|
/*verbose.const library org-dartlang-test:///a/b/c/main.dart::Class2<dart.core::int>{library org-dartlang-test:///a/b/c/main.dart::Class2.field1: 0}*/
|
|
Class2(0);
|
|
const instanceConstant5 = const
|
|
/*normal|limited.const Class2<num>{Class2.field1: 42}*/
|
|
/*verbose.const library org-dartlang-test:///a/b/c/main.dart::Class2<dart.core::num>{library org-dartlang-test:///a/b/c/main.dart::Class2.field1: 42}*/
|
|
Class2<num>(42);
|
|
const instanceConstant6 = const
|
|
/*normal|limited.const Class3<int, String>{Class3.field2: "foo", Class2.field1: 42}*/
|
|
/*verbose.const library org-dartlang-test:///a/b/c/main.dart::Class3<dart.core::int, dart.core::String>{library org-dartlang-test:///a/b/c/main.dart::Class3.field2: "foo", library org-dartlang-test:///a/b/c/main.dart::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 library org-dartlang-test:///a/b/c/main.dart::Class4<dart.core::int, dart.core::String?>{library org-dartlang-test:///a/b/c/main.dart::Class4.field2: "baz", library org-dartlang-test:///a/b/c/main.dart::Class3.field2: "foo", library org-dartlang-test:///a/b/c/main.dart::Class2.field1: 42}*/
|
|
Class4<int, String?>(42, "foo", "baz");
|