//-------------------------------------------------------------------------------------------------------
// Copyright (C) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE.txt file in the project root for full license information.
//-------------------------------------------------------------------------------------------------------

//Switches: -loopinterpretcount:1 -bgjit- -maxsimplejitruncount:2 -maxinterpretcount:1 -maxlinearstringcasecount:2 -forcedeferparse -off:simplejit

function test0() {
  function makeArrayLength() {
    return Math.floor();
  }
  var obj0 = {};
  var f64 = new Float64Array();
  var strvar7 = '!';
  makeArrayLength();
  switch (strvar7) {
  case obj0.length /= f64[250 & 255]:
  case '!':
    switch (strvar7) {
    case '#':
    case '$':
    }
  }
}
test0();
test0();
WScript.Echo("PASSED");