@@ -193,6 +193,7 @@ static void parser__restore_external_scanner(Parser *self, StackVersion version)
193193 const TSExternalTokenState * state = ts_stack_external_token_state (self -> stack , version );
194194 if (self -> lexer .last_external_token_state != state ) {
195195 LOG ("restore_external_scanner" );
196+ self -> lexer .last_external_token_state = state ;
196197 if (state ) {
197198 self -> language -> external_scanner .deserialize (
198199 self -> external_scanner_payload ,
@@ -293,6 +294,7 @@ static Tree *parser__lex(Parser *self, StackVersion version) {
293294 if (found_external_token ) {
294295 result -> has_external_tokens = true;
295296 result -> has_external_token_state = true;
297+ memset (result -> external_token_state , 0 , sizeof (TSExternalTokenState ));
296298 self -> language -> external_scanner .serialize (self -> external_scanner_payload , result -> external_token_state );
297299 self -> lexer .last_external_token_state = & result -> external_token_state ;
298300 }
@@ -360,8 +362,7 @@ static Tree *parser__get_lookahead(Parser *self, StackVersion version,
360362 continue ;
361363 }
362364
363- if (reusable_node -> tree -> first_leaf .lex_mode .external_lex_state != 0 &&
364- !ts_external_token_state_eq (
365+ if (!ts_external_token_state_eq (
365366 reusable_node -> preceding_external_token_state ,
366367 ts_stack_external_token_state (self -> stack , version ))) {
367368 LOG ("cant_reuse_external_tokens tree:%s, size:%u" ,
0 commit comments