blob: 032705115f7a722aed8abedae176763505926b0c [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
import "mixin_library.dart" as mix;
import "org-dartlang-testcase:///mixin_library.dart" show Mixin;
class Super<S extends core::Object* = dynamic> extends core::Object {
synthetic constructor •() self::Super<self::Super::S*>*
: super core::Object::•()
;
method foo() dynamic
return 40;
method f() dynamic
return 3;
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
abstract class _C&Super&Mixin<V extends core::Object* = dynamic> = self::Super<self::_C&Super&Mixin::V*> with mix::Mixin<self::_C&Super&Mixin::V*> /*isAnonymousMixin*/ {
synthetic constructor •() self::_C&Super&Mixin<self::_C&Super&Mixin::V*>*
: super self::Super::•()
;
mixin-super-stub get x() dynamic
return super.{mix::Mixin::x};
mixin-super-stub set x(dynamic value) void
return super.{mix::Mixin::x} = value;
mixin-super-stub get y() dynamic
return super.{mix::Mixin::y};
mixin-super-stub set y(dynamic value) void
return super.{mix::Mixin::y} = value;
mixin-super-stub get z() dynamic
return super.{mix::Mixin::z};
mixin-super-stub set z(dynamic value) void
return super.{mix::Mixin::z} = value;
mixin-super-stub get t() self::_C&Super&Mixin::V*
return super.{mix::Mixin::t};
mixin-super-stub set t(covariant-by-class self::_C&Super&Mixin::V* value) void
return super.{mix::Mixin::t} = value;
mixin-super-stub method foo() dynamic
return super.{mix::Mixin::foo}();
mixin-super-stub method g(covariant-by-class self::_C&Super&Mixin::V* a) self::_C&Super&Mixin::V*
return super.{mix::Mixin::g}(a);
mixin-super-stub method h() dynamic
return super.{mix::Mixin::h}();
mixin-super-stub method l() dynamic
return super.{mix::Mixin::l}();
mixin-super-stub method _privateMethod() dynamic
return super.{mix::Mixin::_privateMethod}();
mixin-super-stub method publicMethod() dynamic
return super.{mix::Mixin::publicMethod}();
}
class C<V extends core::Object* = dynamic> extends self::_C&Super&Mixin<self::C::V*> {
synthetic constructor •() self::C<self::C::V*>*
: super self::_C&Super&Mixin::•()
;
}
abstract class _D&Super&Mixin = self::Super<dynamic> with mix::Mixin<dynamic> /*isAnonymousMixin*/ {
synthetic constructor •() self::_D&Super&Mixin*
: super self::Super::•()
;
mixin-super-stub get x() dynamic
return super.{mix::Mixin::x};
mixin-super-stub set x(dynamic value) void
return super.{mix::Mixin::x} = value;
mixin-super-stub get y() dynamic
return super.{mix::Mixin::y};
mixin-super-stub set y(dynamic value) void
return super.{mix::Mixin::y} = value;
mixin-super-stub get z() dynamic
return super.{mix::Mixin::z};
mixin-super-stub set z(dynamic value) void
return super.{mix::Mixin::z} = value;
mixin-super-stub get t() dynamic
return super.{mix::Mixin::t};
mixin-super-stub set t(covariant-by-class dynamic value) void
return super.{mix::Mixin::t} = value;
mixin-super-stub method foo() dynamic
return super.{mix::Mixin::foo}();
mixin-super-stub method g(covariant-by-class dynamic a) dynamic
return super.{mix::Mixin::g}(a);
mixin-super-stub method h() dynamic
return super.{mix::Mixin::h}();
mixin-super-stub method l() dynamic
return super.{mix::Mixin::l}();
mixin-super-stub method _privateMethod() dynamic
return super.{mix::Mixin::_privateMethod}();
mixin-super-stub method publicMethod() dynamic
return super.{mix::Mixin::publicMethod}();
}
class D extends self::_D&Super&Mixin {
synthetic constructor •() self::D*
: super self::_D&Super&Mixin::•()
;
}
class C2<V extends core::Object* = dynamic> = self::Super<self::C2::V*> with mix::Mixin<self::C2::V*> {
synthetic constructor •() self::C2<self::C2::V*>*
: super self::Super::•()
;
mixin-super-stub get x() dynamic
return super.{mix::Mixin::x};
mixin-super-stub set x(dynamic value) void
return super.{mix::Mixin::x} = value;
mixin-super-stub get y() dynamic
return super.{mix::Mixin::y};
mixin-super-stub set y(dynamic value) void
return super.{mix::Mixin::y} = value;
mixin-super-stub get z() dynamic
return super.{mix::Mixin::z};
mixin-super-stub set z(dynamic value) void
return super.{mix::Mixin::z} = value;
mixin-super-stub get t() self::C2::V*
return super.{mix::Mixin::t};
mixin-super-stub set t(covariant-by-class self::C2::V* value) void
return super.{mix::Mixin::t} = value;
mixin-super-stub method foo() dynamic
return super.{mix::Mixin::foo}();
mixin-super-stub method g(covariant-by-class self::C2::V* a) self::C2::V*
return super.{mix::Mixin::g}(a);
mixin-super-stub method h() dynamic
return super.{mix::Mixin::h}();
mixin-super-stub method l() dynamic
return super.{mix::Mixin::l}();
mixin-super-stub method _privateMethod() dynamic
return super.{mix::Mixin::_privateMethod}();
mixin-super-stub method publicMethod() dynamic
return super.{mix::Mixin::publicMethod}();
}
class D2 = self::Super<dynamic> with mix::Mixin<dynamic> {
synthetic constructor •() self::D2*
: super self::Super::•()
;
mixin-super-stub get x() dynamic
return super.{mix::Mixin::x};
mixin-super-stub set x(dynamic value) void
return super.{mix::Mixin::x} = value;
mixin-super-stub get y() dynamic
return super.{mix::Mixin::y};
mixin-super-stub set y(dynamic value) void
return super.{mix::Mixin::y} = value;
mixin-super-stub get z() dynamic
return super.{mix::Mixin::z};
mixin-super-stub set z(dynamic value) void
return super.{mix::Mixin::z} = value;
mixin-super-stub get t() dynamic
return super.{mix::Mixin::t};
mixin-super-stub set t(covariant-by-class dynamic value) void
return super.{mix::Mixin::t} = value;
mixin-super-stub method foo() dynamic
return super.{mix::Mixin::foo}();
mixin-super-stub method g(covariant-by-class dynamic a) dynamic
return super.{mix::Mixin::g}(a);
mixin-super-stub method h() dynamic
return super.{mix::Mixin::h}();
mixin-super-stub method l() dynamic
return super.{mix::Mixin::l}();
mixin-super-stub method _privateMethod() dynamic
return super.{mix::Mixin::_privateMethod}();
mixin-super-stub method publicMethod() dynamic
return super.{mix::Mixin::publicMethod}();
}
static method main() dynamic {
core::print(new self::C::•<dynamic>().{self::_C&Super&Mixin::foo}(){() →* dynamic});
core::print(new self::C2::•<dynamic>().{self::C2::foo}(){() →* dynamic});
}
library test.mixin_library;
//
// Problems in library:
//
// pkg/front_end/testcases/rasta/mixin_library.dart:16:18: Error: Superclass has no method named 'foo'.
// foo() => super.foo() + f();
// ^^^
//
import self as mix;
import "dart:core" as core;
class Mixin<T extends core::Object* = dynamic> extends core::Object {
field dynamic x = mix::f();
field dynamic y = null;
field dynamic z = null;
covariant-by-class field mix::Mixin::T* t = null;
synthetic constructor •() mix::Mixin<mix::Mixin::T*>*
: super core::Object::•()
;
method foo() dynamic
return super.foo(){dynamic}.+(mix::f());
method g(covariant-by-class mix::Mixin::T* a) mix::Mixin::T*
return null;
method h() dynamic
return mix::V();
method l() dynamic
return mix::_private();
method _privateMethod() dynamic
return 49;
method publicMethod() dynamic
return this.{mix::Mixin::_privateMethod}(){() →* dynamic};
abstract member-signature get _identityHashCode() core::int*; -> core::Object::_identityHashCode
abstract member-signature method _instanceOf(dynamic instantiatorTypeArguments, dynamic functionTypeArguments, dynamic type) core::bool*; -> core::Object::_instanceOf
abstract member-signature method _simpleInstanceOf(dynamic type) core::bool*; -> core::Object::_simpleInstanceOf
abstract member-signature method _simpleInstanceOfTrue(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfTrue
abstract member-signature method _simpleInstanceOfFalse(dynamic type) core::bool*; -> core::Object::_simpleInstanceOfFalse
abstract member-signature operator ==(dynamic other) core::bool*; -> core::Object::==
abstract member-signature get hashCode() core::int*; -> core::Object::hashCode
abstract member-signature method toString() core::String*; -> core::Object::toString
abstract member-signature method noSuchMethod(core::Invocation* invocation) dynamic; -> core::Object::noSuchMethod
abstract member-signature get runtimeType() core::Type*; -> core::Object::runtimeType
}
static method f() dynamic
return 2;
static method V() dynamic
return 87;
static method _private() dynamic
return 117;
static method foo(dynamic m) dynamic
return m{dynamic}._privateMethod();