jerryscript-project / jerryscript

Ultra-lightweight JavaScript engine for the Internet of Things.
https://jerryscript.net
Apache License 2.0
6.96k stars 673 forks source link

Array concatenation exception #5026

Open AidPaike opened 2 years ago

AidPaike commented 2 years ago

Version

Version: 3.0.0 ( 6fe763f )

Execution steps

/root/.jsvu/jerry Testcase.js

Test case 1

var foo = function(it) {
    var a = [...it, , ];
    print(a);
    print(a.length);
};
var Parameter0 = [1, 2];
foo(Parameter0);

Output 1

1,2
2

Expected behavior

1,2,
3

Test case 2

var foo = function(it) {
    var arr = [ , ];
    var a = it.concat(arr);
    print(a);
    print(a.length);
};
var Parameter0 = [1, 2];
foo(Parameter0);

Output 2

1,2,
3

Description

We tested on multiple JS engines, Testcase 1 and Testcase 2 should have the same consequent. But jerryscript outputs abnormal results when executing Testcase 1.

Maybe the problem is about array literal handling which looks like it deleted all the vacancies. The same bug has reported to Hermes(https://github.com/facebook/hermes/issues/729) and has been fixed.

Looking forward to your reply :)

ossy-szeged commented 2 years ago

Thanks for reporting this issue, it is a valid bug, we will investigate it.