// Copyright 2019 the V8 project authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

// Flags: --allow-natives-syntax

(function ShortcutEmptyStringAddRight() {
  let ar = new Float32Array(1);
  function opt(i){
    return ar[i] + (NaN ? 0 : '');
  }
  %PrepareFunctionForOptimization(opt);
  ar[0] = 42;
  opt(1);
  %OptimizeFunctionOnNextCall(opt);
  assertEquals("42", opt(0));
})();

(function ShortcutiEmptyStringAddLeft() {
  let ar = new Float32Array(1);
  function opt(i){
    return (NaN ? 0 : '') + ar[i];
  }
  %PrepareFunctionForOptimization(opt);
  ar[0] = 42;
  opt(1);
  %OptimizeFunctionOnNextCall(opt);
  assertEquals("42", opt(0));
})();