Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8057010

Object type is wrong for unit test

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • Icon: P4 P4
    • 9
    • 9
    • core-libs
    • None

      Both rhino and v8 say that a.x=number, but we say it's object for apply_to_call/apply_to_call4.js

      print("start");

      var x = {
          a : 0,
          b : 0,
          c : 0,
          initialize : function(x,y,z) {
          this.a = x;
          this.b = y;
          this.c = z;
          }
      };

      function f(x) {
          print("this is a black hole - arguments escape");
      }

      function test() {
          f(arguments);
          x.initialize.apply(x, arguments);
      }

      test(4711,23,17);
      print(x.a);
      print(x.b);
      print(x.c);

      function test2() {
          arguments[0] = 17;
          x.initialize.apply(x, arguments);
      }

      test2(1,2,3);
      print(x.a);
      print(x.b);
      print(x.c);

      function test3() {
          var escape = arguments[0];
          f(escape);
          x.initialize.apply(x, arguments);
      }

      test3("alpha", "beta", "gamma");
      print(x.a);
      print(x.b);
      print(x.c);

      function test4() {
          var escape = arguments.length;
          f(escape);
          x.initialize.apply(x, arguments);
      }

      test4(1.2, 2.3, 3.4);
      print(x.a);
      print(x.b);
      print(x.c);

      function test5() {
          x.initialize.apply(x, arguments, 17);
      }

      print("test 5 done");
      test5(11, 22);
      print("a="+typeof(x.a));
      print(x.b);
      print(x.c);

      print("Now it's time for transforms");

      function test6() {
          x.initialize.apply(x, arguments);
      }

      test6(19, 20, 21);
      print(x.a);
      print(x.b);
      print(x.c);

      function test7() {
          x.initialize.apply(x, arguments);
      }

      test7(1, 2.2, 17, 18);
      print(x.a);
      print(x.b);
      print(x.c);

      print("Should have transformed");

      function test8() {
          var apply = f;
          x.initialize.apply(x, arguments);
      }

      test8(7,8,9);
      print(x.a);
      print(x.b);
      print(x.c);

            lagergren Marcus Lagergren
            lagergren Marcus Lagergren
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:
              Resolved: