blob: 333cde83ec92e17b42b1c03b7967e5b1e958dd00 [file] [log] [blame]
library #lib;
import self as self;
import "dart:core" as core;
import "dart:_internal" as _in;
class A<T extends core::Object* = dynamic> extends core::Object {
synthetic constructor •() self::A<self::A::T*>*
: super core::Object::•()
;
}
class B<T extends core::Object* = dynamic> extends self::A<self::B::T*> {
synthetic constructor •() self::B<self::B::T*>*
: super self::A::•()
;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:1,getterSelectorId:2] method testT1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) dynamic
return _in::unsafeCast<self::B::T*>(x);
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:3,getterSelectorId:4] method testT2negative([@vm.inferred-type.metadata=#lib::A<dart.core::String*>] dynamic x) dynamic
return x as self::B::T*;
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:5,getterSelectorId:6] method testAOfT1([@vm.inferred-type.metadata=#lib::A<#lib::A<dart.core::int*>*>] dynamic x) dynamic
return _in::unsafeCast<self::A<self::B::T*>*>(x);
[@vm.procedure-attributes.metadata=methodOrSetterCalledDynamically:false,getterCalledDynamically:false,hasThisUses:false,hasTearOffUses:false,methodOrSetterSelectorId:7,getterSelectorId:8] method testAOfT2negative([@vm.inferred-type.metadata=#lib::A<#lib::A<dart.core::num*>*>] dynamic x) dynamic
return x as self::A<self::B::T*>*;
}
[@vm.unboxing-info.metadata=(i)->i]static method testInt1([@vm.inferred-type.metadata=dart.core::_Smi (value: 42)] dynamic x) dynamic
return _in::unsafeCast<core::int*>(x);
static method testInt2([@vm.inferred-type.metadata=dart.core::Null? (value: null)] dynamic x) dynamic
return _in::unsafeCast<core::int*>(x);
static method testDynamic([@vm.inferred-type.metadata=dart.core::_OneByteString (value: hi)] dynamic x) dynamic
return _in::unsafeCast<dynamic>(x);
static method testObject([@vm.inferred-type.metadata=dart.core::_OneByteString (value: bye)] dynamic x) dynamic
return x;
static method testBOfInt([@vm.inferred-type.metadata=#lib::B<dart.core::int*>] dynamic x) dynamic
return _in::unsafeCast<self::B<core::int*>*>(x);
static method testAOfInt([@vm.inferred-type.metadata=#lib::B<dart.core::int*>] dynamic x) dynamic
return _in::unsafeCast<self::A<core::int*>*>(x);
static method testAOfNum([@vm.inferred-type.metadata=#lib::B<dart.core::int*>] dynamic x) dynamic
return _in::unsafeCast<self::A<core::num*>*>(x);
static method testAOfAOfB1([@vm.inferred-type.metadata=#lib::A<#lib::A<#lib::B<dynamic>*>*>] dynamic x) dynamic
return _in::unsafeCast<self::A<self::A<self::B<dynamic>*>*>*>(x);
static method testAOfAOfB2negative([@vm.inferred-type.metadata=#lib::A<#lib::A<#lib::A<dynamic>*>*>] dynamic x) dynamic
return x as self::A<self::A<self::B<dynamic>*>*>*;
static method main() void {
self::testInt1(42);
self::testInt2(null);
self::testDynamic("hi");
self::testObject("bye");
self::testBOfInt(new self::B::•<core::int*>());
self::testAOfInt(new self::B::•<core::int*>());
self::testAOfNum(new self::B::•<core::int*>());
self::testAOfAOfB1(new self::A::•<self::A<self::B<dynamic>*>*>());
self::testAOfAOfB2negative(new self::A::•<self::A<self::A<dynamic>*>*>());
[@vm.direct-call.metadata=#lib::B.testT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<core::int*>().{self::B::testT1}(42);
[@vm.direct-call.metadata=#lib::B.testT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testT2negative}(new self::A::•<core::String*>());
[@vm.direct-call.metadata=#lib::B.testAOfT1] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT1}(new self::A::•<self::A<core::int*>*>());
[@vm.direct-call.metadata=#lib::B.testAOfT2negative] [@vm.inferred-type.metadata=!? (skip check)] new self::B::•<self::A<core::int*>*>().{self::B::testAOfT2negative}(new self::A::•<self::A<core::num*>*>());
}