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

import 'native_testing.dart';

// Negative constant numbers must be generated as negation, not just a literal
// with a sign, i.e.
//
//     (-5).toString()
//
// not
//
//     -5 .toString()
//
// The unparethesized version is `-(5 .toString())`, which creates the string
// `"5"`, then converts it to a number for negation, giving a number result
// instead of a string result.

@pragma('dart2js:noInline')
checkString(r) {
  Expect.isTrue(
      r is String, 'Expected string, found ${r} of type ${r.runtimeType}');
}

test1() {
  checkString(JS('', '#.toString()', -5));
}

test2() {
  checkString(JS('', '#.toString()', -1.5));
}

test3() {
  checkString(JS('', '#.toString()', -0.0));
}

main() {
  test1();
  test2();
  test3();
}
