###### JerryScript revision
0d496966

###### Build platform
Linux-5.4.0-104-generic-x86_64-with-glibc2.29

###### Build steps
```
./tools/build.py --clean --debug --profile=es.next  --error-messages=ON --logging=ON
```

###### Test case
```javascript
"use strict";
function testDCE(){ if  (class { 0 = super 0 =  } ;}
```


###### Output
```text
ICE: Assertion 'context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL)' failed at jerryscript/jerry-core/parser/js/js-lexer.c(lexer_compare_literal_to_string):3544.
Error: JERRY_FATAL_FAILED_ASSERTION
AddressSanitizer:DEADLYSIGNAL
=================================================================
==3265841==ERROR: AddressSanitizer: ABRT on unknown address 0x03e90031d531 (pc 0x7f27e8efd03b bp 0x7ffdbdd53e30 sp 0x7ffdbdd53bc0 T0)
    #0 0x7f27e8efd03b in raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #1 0x7f27e8edc858 in abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:79:7
    #2 0x89ef3f in jerry_port_fatal jerryscript/jerry-port/common/jerry-port-process.c:29:5
    #3 0x66b742 in jerry_fatal jerryscript/jerry-core/jrt/jrt-fatals.c:63:3
    #4 0x66b4da in jerry_assert_fail jerryscript/jerry-core/jrt/jrt-fatals.c:83:3
    #5 0x826bee in lexer_compare_literal_to_string jerryscript/jerry-core/parser/js/js-lexer.c:3542:3
    #6 0x6e636f in scanner_primary_to_post_primary_expression jerryscript/jerry-core/parser/js/js-scanner.c:75:51
    #7 0x6d18d3 in scanner_scan_primary_expression jerryscript/jerry-core/parser/js/js-scanner.c:254:14
    #8 0x6c4428 in scanner_scan_all jerryscript/jerry-core/parser/js/js-scanner.c:2461:15
    #9 0x698fe5 in parser_parse_source jerryscript/jerry-core/parser/js/js-parser.c:2167:3
    #10 0x69629a in parser_parse_script jerryscript/jerry-core/parser/js/js-parser.c:3326:38
    #11 0x4ced00 in jerry_parse_common jerryscript/jerry-core/api/jerryscript.c:412:21
    #12 0x4ce473 in jerry_parse jerryscript/jerry-core/api/jerryscript.c:480:10
    #13 0x89cc1f in jerryx_source_parse_script jerryscript/jerry-ext/util/sources.c:52:26
    #14 0x89cd6e in jerryx_source_exec_script jerryscript/jerry-ext/util/sources.c:63:26
    #15 0x4c4d84 in main jerryscript/jerry-main/main-desktop.c:156:20
    #16 0x7f27e8ede0b2 in __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:308:16
    #17 0x41c53d in _start (jerryscript/build/bin/jerry+0x41c53d)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: ABRT /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 in raise
==3265841==ABORTING
```



###### Backtrace
```text
bt
#0  [33m__GI_raise[m ([36msig=sig@entry[m=6) at [32m../sysdeps/unix/sysv/linux/raise.c[m:50
#1  [34m0x00007ffff7c33859[m in [33m__GI_abort[m () at [32mabort.c[m:79
#2  [34m0x000000000089ef40[m in [33mjerry_port_fatal[m ([36mcode[m=JERRY_FATAL_FAILED_ASSERTION) at [32mjerryscript/jerry-port/common/jerry-port-process.c[m:29
#3  [34m0x000000000066b743[m in [33mjerry_fatal[m ([36mcode[m=JERRY_FATAL_FAILED_ASSERTION) at [32mjerryscript/jerry-core/jrt/jrt-fatals.c[m:63
#4  [34m0x000000000066b4db[m in [33mjerry_assert_fail[m ([36massertion[m=0x926900 <str> "context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL)", [36mfile[m=0x9256a0 <str> "jerryscript/jerry-core/parser/js/js-lexer.c", [36mfunction[m=0x9269e0 <__func__.lexer_compare_literal_to_string> "lexer_compare_literal_to_string", [36mline[m=3544) at [32mjerryscript/jerry-core/jrt/jrt-fatals.c[m:83
#5  [34m0x0000000000826bef[m in [33mlexer_compare_literal_to_string[m ([36mcontext_p[m=0x7fffffffcd20, [36mstring_p[m=0x8fd480 <str> "static", [36mstring_length[m=6) at [32mjerryscript/jerry-core/parser/js/js-lexer.c[m:3542
#6  [34m0x00000000006e6370[m in [33mscanner_primary_to_post_primary_expression[m ([36mcontext_p[m=0x7fffffffcd20, [36mscanner_context_p[m=0x7fffffffbf80) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:75
#7  [34m0x00000000006d18d4[m in [33mscanner_scan_primary_expression[m ([36mcontext_p[m=0x7fffffffcd20, [36mscanner_context_p[m=0x7fffffffbf80, [36mtype[m=LEXER_KEYW_SUPER, [36mstack_top[m=SCAN_STACK_CLASS_FIELD_INITIALIZER) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:254
#8  [34m0x00000000006c4429[m in [33mscanner_scan_all[m ([36mcontext_p[m=0x7fffffffcd20) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:2461
#9  [34m0x0000000000698fe6[m in [33mparser_parse_source[m ([36msource_p[m=0x7fffffffd3a0, [36mparse_opts[m=0, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/parser/js/js-parser.c[m:2167
#10 [34m0x000000000069629b[m in [33mparser_parse_script[m ([36msource_p[m=0x7fffffffd3a0, [36mparse_opts[m=0, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/parser/js/js-parser.c[m:3326
#11 [34m0x00000000004ced01[m in [33mjerry_parse_common[m ([36msource_p[m=0x7fffffffd3a0, [36moptions_p[m=0x7fffffffd4d0, [36mparse_opts[m=0) at [32mjerryscript/jerry-core/api/jerryscript.c[m:412
#12 [34m0x00000000004ce474[m in [33mjerry_parse[m ([36msource_p[m=0x626000000100 "\"use strict\"    ;     let   logOfFour   = Math   . log    ( 4     )     ;     let   validInputTestCases   = [ [ \"undefined\"    , \"NaN\"     ]    , [ \"null\"    , \"-Infinity\"     ]    , [ \"0\"    , \"-Infi"..., [36msource_size[m=10247, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/api/jerryscript.c[m:480
#13 [34m0x000000000089cc20[m in [33mjerryx_source_parse_script[m ([36mpath_p[m=0x7fffffffde36 "/run/user/1001/fuzzinator/3261026/3265826-FileWriterDecorator-45b0efaa73a346e780b061aaaa5aea5d/0.js") at [32mjerryscript/jerry-ext/util/sources.c[m:52
#14 [34m0x000000000089cd6f[m in [33mjerryx_source_exec_script[m ([36mpath_p[m=0x7fffffffde36 "/run/user/1001/fuzzinator/3261026/3265826-FileWriterDecorator-45b0efaa73a346e780b061aaaa5aea5d/0.js") at [32mjerryscript/jerry-ext/util/sources.c[m:63
#15 [34m0x00000000004c4d85[m in [33mmain[m ([36margc[m=2, [36margv[m=0x7fffffffdb08) at [32mjerryscript/jerry-main/main-desktop.c[m:156
```


<sup>Found by [Fuzzinator](http://fuzzinator.readthedocs.io/) with [grammarinator](https://github.com/renatahodovan/grammarinator). </sup>
Assertion context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL) in lexer_compare_literal_to_string
This is a GitHub Issue
repo:jerryscript
owner:jerryscript-project
Title : Assertion context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL) in lexer_compare_literal_to_string
Issue date:

--- start body ---
###### JerryScript revision
0d496966

###### Build platform
Linux-5.4.0-104-generic-x86_64-with-glibc2.29

###### Build steps
```
./tools/build.py --clean --debug --profile=es.next  --error-messages=ON --logging=ON
```

###### Test case
```javascript
"use strict";
function testDCE(){ if  (class { 0 = super 0 =  } ;}
```


###### Output
```text
ICE: Assertion 'context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL)' failed at jerryscript/jerry-core/parser/js/js-lexer.c(lexer_compare_literal_to_string):3544.
Error: JERRY_FATAL_FAILED_ASSERTION
AddressSanitizer:DEADLYSIGNAL
=================================================================
==3265841==ERROR: AddressSanitizer: ABRT on unknown address 0x03e90031d531 (pc 0x7f27e8efd03b bp 0x7ffdbdd53e30 sp 0x7ffdbdd53bc0 T0)
    #0 0x7f27e8efd03b in raise /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
    #1 0x7f27e8edc858 in abort /build/glibc-sMfBJT/glibc-2.31/stdlib/abort.c:79:7
    #2 0x89ef3f in jerry_port_fatal jerryscript/jerry-port/common/jerry-port-process.c:29:5
    #3 0x66b742 in jerry_fatal jerryscript/jerry-core/jrt/jrt-fatals.c:63:3
    #4 0x66b4da in jerry_assert_fail jerryscript/jerry-core/jrt/jrt-fatals.c:83:3
    #5 0x826bee in lexer_compare_literal_to_string jerryscript/jerry-core/parser/js/js-lexer.c:3542:3
    #6 0x6e636f in scanner_primary_to_post_primary_expression jerryscript/jerry-core/parser/js/js-scanner.c:75:51
    #7 0x6d18d3 in scanner_scan_primary_expression jerryscript/jerry-core/parser/js/js-scanner.c:254:14
    #8 0x6c4428 in scanner_scan_all jerryscript/jerry-core/parser/js/js-scanner.c:2461:15
    #9 0x698fe5 in parser_parse_source jerryscript/jerry-core/parser/js/js-parser.c:2167:3
    #10 0x69629a in parser_parse_script jerryscript/jerry-core/parser/js/js-parser.c:3326:38
    #11 0x4ced00 in jerry_parse_common jerryscript/jerry-core/api/jerryscript.c:412:21
    #12 0x4ce473 in jerry_parse jerryscript/jerry-core/api/jerryscript.c:480:10
    #13 0x89cc1f in jerryx_source_parse_script jerryscript/jerry-ext/util/sources.c:52:26
    #14 0x89cd6e in jerryx_source_exec_script jerryscript/jerry-ext/util/sources.c:63:26
    #15 0x4c4d84 in main jerryscript/jerry-main/main-desktop.c:156:20
    #16 0x7f27e8ede0b2 in __libc_start_main /build/glibc-sMfBJT/glibc-2.31/csu/../csu/libc-start.c:308:16
    #17 0x41c53d in _start (jerryscript/build/bin/jerry+0x41c53d)

AddressSanitizer can not provide additional info.
SUMMARY: AddressSanitizer: ABRT /build/glibc-sMfBJT/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1 in raise
==3265841==ABORTING
```



###### Backtrace
```text
bt
#0  [33m__GI_raise[m ([36msig=sig@entry[m=6) at [32m../sysdeps/unix/sysv/linux/raise.c[m:50
#1  [34m0x00007ffff7c33859[m in [33m__GI_abort[m () at [32mabort.c[m:79
#2  [34m0x000000000089ef40[m in [33mjerry_port_fatal[m ([36mcode[m=JERRY_FATAL_FAILED_ASSERTION) at [32mjerryscript/jerry-port/common/jerry-port-process.c[m:29
#3  [34m0x000000000066b743[m in [33mjerry_fatal[m ([36mcode[m=JERRY_FATAL_FAILED_ASSERTION) at [32mjerryscript/jerry-core/jrt/jrt-fatals.c[m:63
#4  [34m0x000000000066b4db[m in [33mjerry_assert_fail[m ([36massertion[m=0x926900 <str> "context_p->token.type == LEXER_LITERAL && (context_p->token.lit_location.type == LEXER_IDENT_LITERAL || context_p->token.lit_location.type == LEXER_STRING_LITERAL)", [36mfile[m=0x9256a0 <str> "jerryscript/jerry-core/parser/js/js-lexer.c", [36mfunction[m=0x9269e0 <__func__.lexer_compare_literal_to_string> "lexer_compare_literal_to_string", [36mline[m=3544) at [32mjerryscript/jerry-core/jrt/jrt-fatals.c[m:83
#5  [34m0x0000000000826bef[m in [33mlexer_compare_literal_to_string[m ([36mcontext_p[m=0x7fffffffcd20, [36mstring_p[m=0x8fd480 <str> "static", [36mstring_length[m=6) at [32mjerryscript/jerry-core/parser/js/js-lexer.c[m:3542
#6  [34m0x00000000006e6370[m in [33mscanner_primary_to_post_primary_expression[m ([36mcontext_p[m=0x7fffffffcd20, [36mscanner_context_p[m=0x7fffffffbf80) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:75
#7  [34m0x00000000006d18d4[m in [33mscanner_scan_primary_expression[m ([36mcontext_p[m=0x7fffffffcd20, [36mscanner_context_p[m=0x7fffffffbf80, [36mtype[m=LEXER_KEYW_SUPER, [36mstack_top[m=SCAN_STACK_CLASS_FIELD_INITIALIZER) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:254
#8  [34m0x00000000006c4429[m in [33mscanner_scan_all[m ([36mcontext_p[m=0x7fffffffcd20) at [32mjerryscript/jerry-core/parser/js/js-scanner.c[m:2461
#9  [34m0x0000000000698fe6[m in [33mparser_parse_source[m ([36msource_p[m=0x7fffffffd3a0, [36mparse_opts[m=0, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/parser/js/js-parser.c[m:2167
#10 [34m0x000000000069629b[m in [33mparser_parse_script[m ([36msource_p[m=0x7fffffffd3a0, [36mparse_opts[m=0, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/parser/js/js-parser.c[m:3326
#11 [34m0x00000000004ced01[m in [33mjerry_parse_common[m ([36msource_p[m=0x7fffffffd3a0, [36moptions_p[m=0x7fffffffd4d0, [36mparse_opts[m=0) at [32mjerryscript/jerry-core/api/jerryscript.c[m:412
#12 [34m0x00000000004ce474[m in [33mjerry_parse[m ([36msource_p[m=0x626000000100 "\"use strict\"    ;     let   logOfFour   = Math   . log    ( 4     )     ;     let   validInputTestCases   = [ [ \"undefined\"    , \"NaN\"     ]    , [ \"null\"    , \"-Infinity\"     ]    , [ \"0\"    , \"-Infi"..., [36msource_size[m=10247, [36moptions_p[m=0x7fffffffd4d0) at [32mjerryscript/jerry-core/api/jerryscript.c[m:480
#13 [34m0x000000000089cc20[m in [33mjerryx_source_parse_script[m ([36mpath_p[m=0x7fffffffde36 "/run/user/1001/fuzzinator/3261026/3265826-FileWriterDecorator-45b0efaa73a346e780b061aaaa5aea5d/0.js") at [32mjerryscript/jerry-ext/util/sources.c[m:52
#14 [34m0x000000000089cd6f[m in [33mjerryx_source_exec_script[m ([36mpath_p[m=0x7fffffffde36 "/run/user/1001/fuzzinator/3261026/3265826-FileWriterDecorator-45b0efaa73a346e780b061aaaa5aea5d/0.js") at [32mjerryscript/jerry-ext/util/sources.c[m:63
#15 [34m0x00000000004c4d85[m in [33mmain[m ([36margc[m=2, [36margv[m=0x7fffffffdb08) at [32mjerryscript/jerry-main/main-desktop.c[m:156
```


<sup>Found by [Fuzzinator](http://fuzzinator.readthedocs.io/) with [grammarinator](https://github.com/renatahodovan/grammarinator). </sup>
--- end body ---

An assertion failure in the JerryScript lexer indicates a potential vulnerability that could be exploited to cause a Denial of Service (DoS) through crafted JavaScript code. The assertion failure occurs when the lexer encounters unexpected token types, leading to an abort of the program. This could be leveraged by an attacker to crash the JerryScript engine by providing specially crafted input that triggers this assertion.