// Copyright (c) 2013, 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.

// @dart = 2.7

// Test that dart2js's inferrer and code optimizers know a double
// literal might become an int at runtime.

import "package:expect/expect.dart";

@pragma('vm:never-inline')
@pragma('dart2js:noInline')
callWithStringAndDouble(value) {
  () => 42;
  if (value is! int) throw new ArgumentError(value);
  return 42;
}

@pragma('vm:never-inline')
@pragma('dart2js:noInline')
callWithDouble(value) {
  () => 42;
  if (value is! int) throw new ArgumentError(value);
  return 42;
}

main() {
  Expect.throws(
      () => callWithStringAndDouble('foo'), (e) => e is ArgumentError);
  Expect.equals(42, callWithStringAndDouble(0.0));
  Expect.equals(42, callWithDouble(0.0));
}
