Skip to content

Commit cd69070

Browse files
committed
Fix async function call parsing.
The "async" identifier processing is delayed until it is detected that it cannot be part of an arrow expression. The "async" identifier should be processed at this point, but it was not happened in this case. JerryScript-DCO-1.0-Signed-off-by: Zoltan Herczeg [email protected]
1 parent 5bcb784 commit cd69070

File tree

2 files changed

+26
-0
lines changed

2 files changed

+26
-0
lines changed

jerry-core/parser/js/js-scanner-ops.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -242,6 +242,12 @@ scanner_check_arrow_arg (parser_context_t *context_p, /**< context */
242242
scanner_pop_literal_pool (context_p, scanner_context_p);
243243

244244
parser_stack_pop_uint8 (context_p);
245+
246+
if (context_p->stack_top_uint8 == SCAN_STACK_USE_ASYNC)
247+
{
248+
scanner_add_async_literal (context_p, scanner_context_p);
249+
}
250+
245251
parser_stack_push_uint8 (context_p, SCAN_STACK_PAREN_EXPRESSION);
246252

247253
if (process_arrow)
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright JS Foundation and other contributors, http://js.foundation
2+
//
3+
// Licensed under the Apache License, Version 2.0 (the "License");
4+
// you may not use this file except in compliance with the License.
5+
// You may obtain a copy of the License at
6+
//
7+
// http://www.apache.org/licenses/LICENSE-2.0
8+
//
9+
// Unless required by applicable law or agreed to in writing, software
10+
// distributed under the License is distributed on an "AS IS" BASIS
11+
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12+
// See the License for the specific language governing permissions and
13+
// limitations under the License.
14+
15+
try {
16+
eval("async(a,b+)")
17+
assert(false)
18+
} catch (e) {
19+
assert(e instanceof SyntaxError)
20+
}

0 commit comments

Comments
 (0)