blob: 6d328999d751a9ed6132292cd0cce830b34c69ba [file] [log] [blame]
library;
import self as self;
import "dart:core" as core;
class Class extends core::Object {
field core::int* field = null;
synthetic constructor •() self::Class*
: super core::Object::•()
;
}
extension Extension on self::Class* {
get property = self::Extension|get#property;
method method = self::Extension|method;
tearoff method = self::Extension|get#method;
method testImplicitThis = self::Extension|testImplicitThis;
tearoff testImplicitThis = self::Extension|get#testImplicitThis;
set property = self::Extension|set#property;
}
static method Extension|get#property(final self::Class* #this) → core::int*
return #this.{self::Class::field};
static method Extension|set#property(final self::Class* #this, core::int* value) → void {
#this.{self::Class::field} = value;
}
static method Extension|method(final self::Class* #this) → core::int*
return #this.{self::Class::field};
static method Extension|get#method(final self::Class* #this) → () →* core::int*
return () core::int* => self::Extension|method(#this);
static method Extension|testImplicitThis(final self::Class* #this) → dynamic {
self::expect(null, self::Extension|get#property(#this));
self::expect(42, let final core::int* #t1 = self::Extension|get#property(#this) in #t1.{core::num::==}(null) ?{core::int*} let final core::int* #t2 = 42 in let final void #t3 = self::Extension|set#property(#this, #t2) in #t2 : #t1);
self::expect(42, let final core::int* #t4 = self::Extension|get#property(#this) in #t4.{core::num::==}(null) ?{core::int*} let final core::int* #t5 = 87 in let final void #t6 = self::Extension|set#property(#this, #t5) in #t5 : #t4);
}
static method Extension|get#testImplicitThis(final self::Class* #this) → () →* dynamic
return () dynamic => self::Extension|testImplicitThis(#this);
static method main() dynamic {
self::Class* c;
self::expect(null, let final self::Class* #t7 = c in #t7.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t7));
self::expect(null, let final self::Class* #t8 = c in #t8.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t8));
self::expect(null, let final self::Class* #t9 = c in #t9.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t9));
self::expect(null, let final self::Class* #t10 = c in #t10.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t11 = 42 in let final void #t12 = self::Extension|set#property(#t10, #t11) in #t11);
self::expect(null, let final self::Class* #t13 = c in #t13.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t14 = self::Extension|get#property(#t13) in #t14.{core::num::==}(null) ?{core::int*} let final core::int* #t15 = 42 in let final void #t16 = self::Extension|set#property(#t13, #t15) in #t15 : #t14);
c = new self::Class::•();
self::expect(null, let final self::Class* #t17 = c in #t17.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t17));
self::expect(null, let final self::Class* #t18 = c in #t18.{core::Object::==}(null) ?{core::int*} null : self::Extension|method(#t18));
() →* core::int* tearOff = let final self::Class* #t19 = c in #t19.{core::Object::==}(null) ?{() →* core::int*} null : self::Extension|get#method(#t19);
self::expect(null, tearOff.call());
self::expect(42, let final self::Class* #t20 = c in #t20.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t21 = 42 in let final void #t22 = self::Extension|set#property(#t20, #t21) in #t21);
self::expect(42, tearOff.call());
self::expect(null, let final self::Class* #t23 = c in #t23.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t24 = null in let final void #t25 = self::Extension|set#property(#t23, #t24) in #t24);
self::expect(42, let final self::Class* #t26 = c in #t26.{core::Object::==}(null) ?{core::int*} null : let final core::int* #t27 = 42 in let final void #t28 = self::Extension|set#property(#t26, #t27) in #t27);
let final self::Class* #t29 = c in #t29.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t29, null);
self::expect(null, let final self::Class* #t30 = c in #t30.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t30));
self::expect(42, let final self::Class* #t31 = c in let final core::int* #t32 = self::Extension|get#property(#t31) in #t32.{core::num::==}(null) ?{core::int*} let final self::Class* #t33 = #t31 in let final core::int* #t34 = 42 in let final void #t35 = self::Extension|set#property(#t33, #t34) in #t34 : #t32);
self::expect(42, let final self::Class* #t36 = c in let final core::int* #t37 = self::Extension|get#property(#t36) in #t37.{core::num::==}(null) ?{core::int*} let final self::Class* #t38 = #t36 in let final core::int* #t39 = 87 in let final void #t40 = self::Extension|set#property(#t38, #t39) in #t39 : #t37);
self::expect(null, let final self::Class* #t41 = c in #t41.{core::Object::==}(null) ?{core::Null?} null : let final core::Null? #t42 = null in let final void #t43 = self::Extension|set#property(#t41, #t42) in #t42);
let final self::Class* #t44 = c in self::Extension|get#property(#t44).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t44, 42) : null;
self::expect(42, let final self::Class* #t45 = c in #t45.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t45));
let final self::Class* #t46 = c in self::Extension|get#property(#t46).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t46, 87) : null;
self::expect(42, let final self::Class* #t47 = c in #t47.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t47));
let final self::Class* #t48 = c in #t48.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t48, null);
self::expect(null, let final self::Class* #t49 = c in #t49.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t49));
self::expect(42, let final self::Class* #t50 = c in let final core::int* #t51 = self::Extension|get#property(#t50) in #t51.{core::num::==}(null) ?{core::int*} let final core::int* #t52 = 42 in let final void #t53 = self::Extension|set#property(#t50, #t52) in #t52 : #t51);
self::expect(42, let final self::Class* #t54 = c in let final core::int* #t55 = self::Extension|get#property(#t54) in #t55.{core::num::==}(null) ?{core::int*} let final core::int* #t56 = 87 in let final void #t57 = self::Extension|set#property(#t54, #t56) in #t56 : #t55);
let final self::Class* #t58 = c in #t58.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t58, null);
self::expect(null, let final self::Class* #t59 = c in #t59.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t59));
let final self::Class* #t60 = c in self::Extension|get#property(#t60).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t60, 42) : null;
self::expect(42, let final self::Class* #t61 = c in #t61.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t61));
let final self::Class* #t62 = c in self::Extension|get#property(#t62).{core::num::==}(null) ?{core::int*} self::Extension|set#property(#t62, 87) : null;
self::expect(42, let final self::Class* #t63 = c in #t63.{core::Object::==}(null) ?{core::int*} null : self::Extension|get#property(#t63));
let final self::Class* #t64 = c in #t64.{core::Object::==}(null) ?{core::Null?} null : self::Extension|set#property(#t64, null);
self::Extension|testImplicitThis(c);
}
static method expect(dynamic expected, dynamic actual) dynamic {
if(!expected.{core::Object::==}(actual)) {
throw "Mismatch: expected=${expected}, actual=${actual}";
}
}