blob: c34a46cde346383eb0388b3171b5d5e5f4e5ac38 [file] [log] [blame] [edit]
// Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
// for details. All rights reserved. Use of this source code is governed by a
// BSD-style license that can be found in the LICENSE file.
/*member: Base.:[subclass=Base|powerset={N}{O}{N}]*/
abstract class Base {}
/*member: Child1.:[exact=Child1|powerset={N}{O}{N}]*/
class Child1 extends Base {}
/*member: Child2.:[exact=Child2|powerset={N}{O}{N}]*/
class Child2 extends Base {}
/*member: trivial:Value([exact=JSBool|powerset={I}{O}{N}], value: true, powerset: {I}{O}{N})*/
bool trivial(/*[exact=JSBool|powerset={I}{O}{N}]*/ x) => true;
/*member: either:Union([exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {N}{O}{N})*/
Base either =
DateTime.now()
. /*[exact=DateTime|powerset={N}{O}{N}]*/ millisecondsSinceEpoch /*invoke: [subclass=JSInt|powerset={I}{O}{N}]*/ >
0
? Child2()
: Child1();
/*member: test1:Union(null, [exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {null}{N}{O}{N})*/
test1() {
Base child = either;
if (trivial(child is Child1 && true)) return child;
return null;
}
/*member: test2:Union(null, [exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {null}{N}{O}{N})*/
test2() {
Base child = either;
if (child is Child1 || trivial(child is Child1 && true)) return child;
return null;
}
/*member: test3:[null|exact=Child2|powerset={null}{N}{O}{N}]*/
test3() {
Base child = either;
if (trivial(child is Child1 && true) && child is Child2) return child;
return null;
}
/*member: test4:[null|exact=Child2|powerset={null}{N}{O}{N}]*/
test4() {
Base child = either;
if (child is Child2 && trivial(child is Child1 && true)) return child;
return null;
}
/*member: test5:Union(null, [exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {null}{N}{O}{N})*/
test5() {
Base child = either;
if ((child is Child1 && true) /*invoke: [exact=JSBool|powerset={I}{O}{N}]*/ ==
false)
return child;
return null;
}
/*member: test6:Union(null, [exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {null}{N}{O}{N})*/
test6() {
Base child = either;
if (trivial(child is Child1 ? false : true)) return child;
return null;
}
/*member: test7:Union(null, [exact=Child1|powerset={N}{O}{N}], [exact=Child2|powerset={N}{O}{N}], powerset: {null}{N}{O}{N})*/
test7() {
Base child = either;
if (trivial(trivial(child is Child1 && true))) return child;
return null;
}
/*member: main:[null|powerset={null}]*/
main() {
test1();
test2();
test3();
test4();
test5();
test6();
test7();
}