blob: 9e3888b6f77ae760d24445dae6ba98344b3d478e [file] [log] [blame]
//
// Problems in component:
//
// pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart:11:15: Error: Constant evaluation error:
// C({a: 0, b: T}) : trace = "a: $a, b: $b";
// ^
// pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart:11:15: Context: The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed.
// C({a: 0, b: T}) : trace = "a: $a, b: $b";
// ^
// pkg/front_end/testcases/general_nnbd_opt_out/mixin_constructors_with_default_values.dart:11:12: Context: While analyzing:
// C({a: 0, b: T}) : trace = "a: $a, b: $b";
// ^
//
library;
import self as self;
import "dart:core" as core;
import "package:expect/expect.dart" as exp;
import "package:expect/expect.dart";
class C<T extends core::Object* = dynamic> extends core::Object {
field core::String* trace;
constructor •({dynamic a = #C1, dynamic b = invalid-expression "The type 'T' is not a constant because it depends on a type parameter, only instantiated types are allowed."}) → self::C<self::C::T*>*
: self::C::trace = "a: ${a}, b: ${b}", super core::Object::•()
;
abstract member-signature get _identityHashCode() core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*;
abstract member-signature operator ==(dynamic other) core::bool*;
abstract member-signature get hashCode() core::int*;
abstract member-signature method toString() core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic;
abstract member-signature get runtimeType() core::Type*;
}
class M extends core::Object {
synthetic constructor •() self::M*
: super core::Object::•()
;
abstract member-signature get _identityHashCode() core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*;
abstract member-signature operator ==(dynamic other) core::bool*;
abstract member-signature get hashCode() core::int*;
abstract member-signature method toString() core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic;
abstract member-signature get runtimeType() core::Type*;
}
class D extends self::C<core::String*> implements self::M /*isEliminatedMixin*/ {
synthetic constructor •({dynamic a = #C1, dynamic b = #C2}) → self::D*
: super self::C::•(a: a, b: b)
;
abstract member-signature get _identityHashCode() core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*;
abstract member-signature operator ==(dynamic other) core::bool*;
abstract member-signature get hashCode() core::int*;
abstract member-signature method toString() core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic;
abstract member-signature get runtimeType() core::Type*;
}
class E extends self::D {
synthetic constructor •() self::E*
: super self::D::•()
;
}
abstract class _F&C&M extends self::C<core::int*> implements self::M /*isAnonymousMixin,isEliminatedMixin*/ {
synthetic constructor •({dynamic a = #C1, dynamic b = #C3}) → self::_F&C&M*
: super self::C::•(a: a, b: b)
;
abstract member-signature get _identityHashCode() core::int*;
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*;
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*;
abstract member-signature operator ==(dynamic other) core::bool*;
abstract member-signature get hashCode() core::int*;
abstract member-signature method toString() core::String*;
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic;
abstract member-signature get runtimeType() core::Type*;
}
class F extends self::_F&C&M {
synthetic constructor •() self::F*
: super self::_F&C&M::•()
;
}
static method main() dynamic {
exp::Expect::stringEquals("a: 0, b: T", new self::C::•<core::Object*>().{self::C::trace});
exp::Expect::stringEquals("a: 0, b: T", new self::C::•<dynamic>().{self::C::trace});
exp::Expect::stringEquals("a: 0, b: String", new self::D::•().{self::C::trace});
exp::Expect::stringEquals("a: 0, b: String", new self::E::•().{self::C::trace});
exp::Expect::stringEquals("a: 0, b: int", new self::F::•().{self::C::trace});
}
constants {
#C1 = 0
#C2 = TypeLiteralConstant(core::String*)
#C3 = TypeLiteralConstant(core::int*)
}