jerryscript-project / jerryscript

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

Array concatenation exception #5026

Open AidPaike opened 1 year ago

AidPaike commented 1 year 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 1 year ago

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