blob: 666cda758ba01eb915d90b1bbee5e04b045e550a [file] [log] [blame]
library /*isNonNullableByDefault*/;
//
// Problems in library:
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:27:3: Error: Only static fields can be declared as const.
// Try using 'final' instead of 'const', or adding the keyword 'static'.
// const bool initialized =
// ^^^^^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:22:25: Error: 'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.
// Try moving the constant from the deferred library, or removing 'deferred' from the import.
//
// const fromDeferredLib = lib.x;
// ^^^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:14:30: Warning: Operand of null-aware operation '??' has type 'bool' which excludes null.
// const bool nullAwareOnNull = barFromEnvOrNull ?? true;
// ^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
// - 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
// const Class.method(T t) : this(-t);
// ^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:123:27: Error: The parameter 'named' can't have a value of 'null' because of its type 'int', but the implicit default value is 'null'.
// Try adding either an explicit non-'null' default value or the 'required' modifier.
// int procedure(int i, {int named}) => i;
// ^^^^^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:31:9: Error: Constructor is marked 'const' so all fields must be final.
// const Foo(this.value,
// ^
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:27:14: Context: Field isn't final, but constructor is 'const'.
// const bool initialized =
// ^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:22:29: Error: Constant evaluation error:
// const fromDeferredLib = lib.x;
// ^
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:22:29: Context: 'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.
// Try moving the constant from the deferred library, or removing 'deferred' from the import.
//
// const fromDeferredLib = lib.x;
// ^
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:22:7: Context: While analyzing:
// const fromDeferredLib = lib.x;
// ^
//
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:77:44: Error: Constant evaluation error:
// const Symbol symbolWithInvalidName = const Symbol("42");
// ^
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:77:51: Context: The symbol name must be a valid public Dart member name, public constructor name, or library name, optionally qualified, but was '"42"'.
// const Symbol symbolWithInvalidName = const Symbol("42");
// ^
// pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:77:14: Context: While analyzing:
// const Symbol symbolWithInvalidName = const Symbol("42");
// ^
//
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
import "org-dartlang-testcase:///various_lib.dart" deferred as lib;
typedef F = (core::int, {named: core::int}) → core::int;
class Foo<E extends core::Object? = dynamic> extends core::Object /*hasConstConstructor*/ {
final field core::bool saved;
final field core::bool saved2;
field core::bool initialized = #C3;
final field self::Foo::E% value;
const constructor •(self::Foo::E% value, {core::bool saved2 = #C4, core::bool x = #C5}) → self::Foo<self::Foo::E%>
: self::Foo::value = value, self::Foo::saved2 = saved2, self::Foo::saved = x, super core::Object::•()
;
}
class A extends core::Object /*hasConstConstructor*/ {
const constructor •() → self::A
: super core::Object::•()
;
operator unary-() → self::A
return this;
}
class B extends core::Object implements self::A /*hasConstConstructor*/ {
const constructor •() → self::B
: super core::Object::•()
;
operator unary-() → self::B
return this;
}
class C extends core::Object implements self::A /*hasConstConstructor*/ {
const constructor •() → self::C
: super core::Object::•()
;
operator unary-() → self::C
return this;
}
class Class<T extends self::A = self::A> extends core::Object /*hasConstConstructor*/ {
const constructor •(self::Class::T t) → self::Class<self::Class::T>
: super core::Object::•()
;
const constructor redirect(dynamic t) → self::Class<self::Class::T>
: this self::Class::•(t as{TypeError,ForDynamic,ForNonNullableByDefault} self::Class::T)
;
const constructor method(self::Class::T t) → self::Class<self::Class::T>
: this self::Class::•(let final<BottomType> #t1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
const Class.method(T t) : this(-t);
^" in t.{self::A::unary-}(){() → self::A} as{TypeError,ForNonNullableByDefault} <BottomType>)
;
}
class Subclass<T extends self::A = self::A> extends self::Class<self::Subclass::T> /*hasConstConstructor*/ {
const constructor •(dynamic t) → self::Subclass<self::Subclass::T>
: super self::Class::•(t as{TypeError,ForDynamic,ForNonNullableByDefault} self::Subclass::T)
;
}
class ConstClassWithF extends core::Object /*hasConstConstructor*/ {
final field (core::int, {named: core::int}) → core::int foo;
const constructor •((core::int, {named: core::int}) → core::int foo) → self::ConstClassWithF
: self::ConstClassWithF::foo = foo, super core::Object::•()
;
}
static const field core::bool barFromEnv = #C6;
static const field core::bool hasBarEnv = #C7;
static const field core::bool? barFromEnvOrNull0 = #C10;
static const field core::bool barFromEnvOrNull = #C11;
static const field core::bool notBarFromEnvOrNull = #C12;
static const field core::bool conditionalOnNull = #C14;
static const field core::bool nullAwareOnNull = #C15;
static const field core::bool andOnNull = #C16;
static const field core::bool andOnNull2 = #C11;
static const field core::bool orOnNull = #C17;
static const field core::bool orOnNull2 = #C18;
static const field core::bool orOnNull3 = #C8;
static const field core::bool orOnNull4 = #C11;
static const field core::int fromDeferredLib = invalid-expression "'lib' can't be used in a constant expression because it's marked as 'deferred' which means it isn't available until loaded.";
static const field self::Foo<core::int> x = #C20;
static const field core::bool? y = #C8;
static const field core::bool z = #C13;
static const field core::Object maybeInt = #C21;
static const field core::bool isItInt = #C22;
static const field core::Object maybeInt2 = #C8;
static const field core::bool isItInt2 = #C13;
static const field core::int? maybeInt3 = #C9;
static const field core::bool isItInt3 = #C13;
static const field dynamic listOfNull = #C23;
static const field core::bool isListOfNull = #C8;
static const field dynamic listOfInt = #C24;
static const field core::bool isListOfInt = #C8;
static const field core::bool isList = #C8;
static const field dynamic setOfInt = #C25;
static const field core::bool isSetOfInt = #C8;
static const field dynamic mapOfInt = #C26;
static const field core::bool isMapOfInt = #C8;
static const field dynamic listOfListOfInt = #C27;
static const field core::bool isListOfListOfInt = #C8;
static const field dynamic setOfSetOfInt = #C28;
static const field core::bool isSetOfSetOfInt = #C8;
static const field dynamic mapOfMapOfInt1 = #C29;
static const field dynamic mapOfMapOfInt2 = #C30;
static const field core::bool isMapOfMapOfInt1 = #C8;
static const field core::bool isMapOfMapOfInt2 = #C8;
static const field core::Symbol symbolWithUnevaluatedParameter = #C31;
static const field core::Symbol symbolWithInvalidName = invalid-expression "The symbol name must be a valid public Dart member name, public constructor name, or library name, optionally qualified, but was '\"42\"'.";
static const field self::Class<self::B>? c0 = #C33;
static const field self::Class<self::A>? c1 = invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
const Class.method(T t) : this(-t);
^";
static const field self::Subclass<self::B>? c2 = #C34;
static const field self::Class<self::A>? c3 = #C35;
static const field self::Class<self::B>? c4 = #C36;
static const field self::Subclass<self::A>? c5 = #C37;
static const field self::Subclass<self::B>? c6 = #C38;
static const field core::Type f = #C39;
static field self::ConstClassWithF constClassWithF1 = #C41;
static const field self::ConstClassWithF constClassWithF2 = #C41;
static const field core::bool unevaluatedBool = #C42;
static const field core::bool notUnevaluatedBool = #C43;
static const field core::bool? unevaluatedBoolOrNull = #C44;
static const field core::bool unevaluatedBoolNotNull = #C45;
static method procedure(core::int i, {core::int named = #C9}) → core::int
return i;
static method main() → dynamic {
core::print(#C33);
core::print(invalid-expression "pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart:100:34: Error: The argument type 'A' can't be assigned to the parameter type 'T'.
- 'A' is from 'pkg/front_end/testcases/general/constants/with_unevaluated_agnostic/various.dart'.
const Class.method(T t) : this(-t);
^");
core::print(#C34);
core::print(#C35);
core::print(#C36);
core::print(#C37);
core::print(#C38);
core::print(#C20);
core::print((#C20).{self::Foo::saved}{core::bool});
core::print((#C20).{self::Foo::value}{core::int});
}
library /*isNonNullableByDefault*/;
import self as self2;
import "dart:core" as core;
static const field core::int x = #C19;
constants {
#C1 = "foo"
#C2 = "bar"
#C3 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
#C4 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
#C5 = eval const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2))
#C6 = eval const core::bool::fromEnvironment(#C2)
#C7 = eval const core::bool::hasEnvironment(#C2)
#C8 = true
#C9 = null
#C10 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9
#C11 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
#C12 = eval !const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
#C13 = false
#C14 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) ?{core::bool} #C8 : #C13
#C15 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) == null ?{core::bool} #C8 : const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!)
#C16 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) && (#C8)
#C17 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || (#C8)
#C18 = eval const core::bool::fromEnvironment(#C2, defaultValue: (const core::bool::fromEnvironment(#C2) ?{core::bool?} #C8 : #C9)!) || (#C13)
#C19 = 42
#C20 = eval self::Foo<core::int>{saved:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), saved2:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), initialized:const core::bool::fromEnvironment(#C1, defaultValue: const core::bool::fromEnvironment(#C2)), value:#C19}
#C21 = eval const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8
#C22 = eval (const core::bool::fromEnvironment(#C1) ?{core::Object} #C19 : #C8) is{ForNonNullableByDefault} core::int ?{core::bool} #C8 : #C13
#C23 = <Null>[#C9]
#C24 = <core::int>[#C19]
#C25 = <core::int>{#C19}
#C26 = <core::int, core::int>{#C19:#C19)
#C27 = <core::List<core::int>>[#C24]
#C28 = <core::Set<core::int>>{#C25}
#C29 = <core::Map<core::int, core::int>, core::int>{#C26:#C19)
#C30 = <core::int, core::Map<core::int, core::int>>{#C19:#C26)
#C31 = eval const _in::Symbol::•(const core::String::fromEnvironment(#C1))
#C32 = "x"
#C33 = eval const core::bool::fromEnvironment(#C32) ?{self::Class<self::B>?} #C9 : self::Class<self::B>{(self::C{}) as{ForNonNullableByDefault} self::B}
#C34 = eval const core::bool::fromEnvironment(#C32) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B>{(self::C{}) as{ForNonNullableByDefault} self::B}
#C35 = eval const core::bool::fromEnvironment(#C32) ?{self::Class<self::A>?} #C9 : self::Class<self::A>{self::A{}}
#C36 = eval const core::bool::fromEnvironment(#C32) ?{self::Class<self::B>?} #C9 : self::Class<self::B>{(self::B{}) as{ForNonNullableByDefault} self::B}
#C37 = eval const core::bool::fromEnvironment(#C32) ?{self::Subclass<self::A>?} #C9 : self::Subclass<self::A>{(self::A{}) as{ForNonNullableByDefault} self::A}
#C38 = eval const core::bool::fromEnvironment(#C32) ?{self::Subclass<self::B>?} #C9 : self::Subclass<self::B>{(self::B{}) as{ForNonNullableByDefault} self::B}
#C39 = TypeLiteralConstant((core::int, {named: core::int}) → core::int)
#C40 = tearoff self::procedure
#C41 = self::ConstClassWithF {foo:#C40}
#C42 = eval const core::bool::fromEnvironment(#C1)
#C43 = eval !const core::bool::fromEnvironment(#C1)
#C44 = eval const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9
#C45 = eval (const core::bool::fromEnvironment(#C2) ?{core::bool?} const core::bool::fromEnvironment(#C1) : #C9)!
}
Constructor coverage from constants:
org-dartlang-testcase:///various.dart:
- C. (from org-dartlang-testcase:///various.dart:92:9)
- Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart:25:9)
- Class.redirect (from org-dartlang-testcase:///various.dart:99:9)
- Class. (from org-dartlang-testcase:///various.dart:98:9)
- A. (from org-dartlang-testcase:///various.dart:80:9)
- Class.method (from org-dartlang-testcase:///various.dart:100:9)
- Subclass. (from org-dartlang-testcase:///various.dart:104:9)
- B. (from org-dartlang-testcase:///various.dart:86:9)
- Foo. (from org-dartlang-testcase:///various.dart:31:9)
- ConstClassWithF. (from org-dartlang-testcase:///various.dart:120:9)