class A { | |
var field; | |
} | |
class B { | |
var field; | |
} | |
class C { | |
operator ==(x) => false; | |
} | |
class X implements A, B { | |
var field; | |
} | |
void useAsA(A object) { | |
var _ = object.field; | |
} | |
void useAsB(B object) { | |
var _ = object.field; | |
escape(object); | |
} | |
void escape(x) { | |
x ??= ""; | |
x ??= 45; | |
if (x is! int && x is! String) { | |
x.field = 45; | |
} | |
} | |
main() { | |
// escape(""); | |
// escape(45); | |
var object = new X(); | |
useAsA(new A()); | |
useAsA(object); | |
useAsB(new B()); | |
useAsB(object); | |
} |