diff --git a/jerry-core/ecma/builtin-objects/ecma-builtin-string.c b/jerry-core/ecma/builtin-objects/ecma-builtin-string.c index 5067b86ce..7537fa937 100644 --- a/jerry-core/ecma/builtin-objects/ecma-builtin-string.c +++ b/jerry-core/ecma/builtin-objects/ecma-builtin-string.c @@ -235,6 +235,7 @@ ecma_builtin_string_object_raw (ecma_value_t this_arg, /**< 'this' argument */ /* 12.f-g */ if (next_index >= number_of_substitutions) { + next_index++; continue; } diff --git a/tests/jerry/es2015/string-raw.js b/tests/jerry/es2015/string-raw.js index 9f8093ad4..5a44a8d09 100644 --- a/tests/jerry/es2015/string-raw.js +++ b/tests/jerry/es2015/string-raw.js @@ -56,3 +56,9 @@ let str = String.raw({ assert(str === "foo5barJavaScriptbaz"); assert(String.raw({ raw: 'test' }, 0, 1, 2) === "t0e1s2t"); + +var get = []; +var raw = new Proxy({length: 2, 0: '', 1: ''}, { get: function(o, k) { get.push(k); return o[k]; }}); +var p = new Proxy({raw: raw}, { get: function(o, k) { get.push(k); return o[k]; }}); +String.raw(p); +assert(get + '' === "raw,length,0,1");