| // Copyright (c) 2025, 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. | |
| @pragma('dart2js:never-inline') | |
| /*member: foo1:function(x) { | |
| if (Date.now() > 0) { | |
| if (typeof x != "string") | |
| return "bad1"; | |
| } else if (typeof x != "string") | |
| return "bad2"; | |
| return x; | |
| }*/ | |
| String foo1(Object x) { | |
| final Object y; | |
| if (DateTime.now().millisecondsSinceEpoch > 0) { | |
| if (x is! String) return 'bad1'; | |
| y = x; | |
| } else { | |
| if (x is! String) return 'bad2'; | |
| y = x; | |
| } | |
| // The phi for y has refinements to String on both branches, so the return | |
| // should not need stringification. | |
| return '$y'; | |
| } | |
| /*member: main:ignore*/ | |
| main() { | |
| print(foo1('a')); | |
| print(foo1('b')); | |
| print(foo1(123)); | |
| } |