blob: bb744b1cab5261b6e842adc00376cf42ae312b02 [file] [log] [blame]
// Copyright (c) 2014, 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.
// VMOptions=--warn_on_javascript_compatibility --no_warning_as_error --optimization_counter_threshold=5
import "package:expect/expect.dart";
f(x, y) {
// Unoptimized and optimized code.
1 is double; /// 00: ok
if (1 is double) { x++; } /// 01: ok
try { 1 as double; } on CastError catch (e) { } /// 02: ok
try { var y = 1 as double; } on CastError catch (e) { } /// 03: ok
1.0 is int; /// 04: ok
if (1.0 is int) { x++; } /// 05: ok
try { 1.0 as int; } on CastError catch (e) { } /// 06: ok
try { var z = 1.0 as int; } on CastError catch (e) { } /// 07: ok
x is double; /// 10: ok
if (x is double) { } /// 11: ok
try { x as double; } on CastError catch (e) { } /// 12: ok
try { var z = x as double; } on CastError catch (e) { } /// 13: ok
y is int; /// 14: ok
if (y is int) { } /// 15: ok
try { y as int; } on CastError catch (e) { } /// 16: ok
try { var z = y as int; } on CastError catch (e) { } /// 17: ok
"${1.0}"; /// 20: ok
var z = "${1.0}"; /// 21: ok
(1.0).toString(); /// 22: ok
var z = (1.0).toString(); /// 23: ok
"$y"; /// 24: ok
var z = "$y"; /// 25: ok
y.toString(); /// 26: ok
var z = y.toString(); /// 27: ok
var a = "yz";
var b = "xyz";
b = b.substring(1);
if (identical(a, b)) { } /// 28: ok
if (identical(x, y)) { } /// 29: ok
if (identical(y, x)) { } /// 30: ok
if (x > 10) {
// Optimized code.
x is double; /// 40: ok
if (x is double) { } /// 41: ok
try { x as double; } on CastError catch (e) { } /// 42: ok
try { var z = x as double; } on CastError catch (e) { } /// 43: ok
y is int; /// 44: ok
if (y is int) { } /// 45: ok
try { y as int; } on CastError catch (e) { } /// 46: ok
try { var z = y as int; } on CastError catch (e) { } /// 47: ok
"${1.0}"; /// 50: ok
var z = "${1.0}"; /// 51: ok
(1.0).toString(); /// 52: ok
var z = (1.0).toString(); /// 53: ok
"$y"; /// 54: ok
var z = "$y"; /// 55: ok
y.toString(); /// 56: ok
var z = y.toString(); /// 57: ok
var a = "yz";
var b = "xyz";
b = b.substring(1);
if (identical(a, b)) { } /// 58: ok
if (identical(x, y)) { } /// 59: ok
if (identical(y, x)) { } /// 60: ok
}
}
g(x, y) => f(x, y); // Test inlining calls.
h(x, y) => g(x, y);
main() {
for (var i = 0; i < 20; i++) {
h(i, i* 1.0);
}
}