@@ -18852,12 +18852,12 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
18852
18852
switch (keyword.type) {
18853
18853
case PM_TOKEN_KEYWORD_BREAK: {
18854
18854
pm_node_t *node = (pm_node_t *) pm_break_node_create(parser, &keyword, arguments.arguments);
18855
- parse_block_exit(parser, node);
18855
+ if (!parser->partial_script) parse_block_exit(parser, node);
18856
18856
return node;
18857
18857
}
18858
18858
case PM_TOKEN_KEYWORD_NEXT: {
18859
18859
pm_node_t *node = (pm_node_t *) pm_next_node_create(parser, &keyword, arguments.arguments);
18860
- parse_block_exit(parser, node);
18860
+ if (!parser->partial_script) parse_block_exit(parser, node);
18861
18861
return node;
18862
18862
}
18863
18863
case PM_TOKEN_KEYWORD_RETURN: {
@@ -18905,7 +18905,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
18905
18905
}
18906
18906
18907
18907
pm_node_t *node = (pm_node_t *) pm_yield_node_create(parser, &keyword, &arguments.opening_loc, arguments.arguments, &arguments.closing_loc);
18908
- if (!parser->parsing_eval) parse_yield(parser, node);
18908
+ if (!parser->parsing_eval && !parser->partial_script ) parse_yield(parser, node);
18909
18909
18910
18910
return node;
18911
18911
}
@@ -19574,7 +19574,7 @@ parse_expression_prefix(pm_parser_t *parser, pm_binding_power_t binding_power, b
19574
19574
parser_lex(parser);
19575
19575
19576
19576
pm_node_t *node = (pm_node_t *) pm_redo_node_create(parser, &parser->previous);
19577
- parse_block_exit(parser, node);
19577
+ if (!parser->partial_script) parse_block_exit(parser, node);
19578
19578
19579
19579
return node;
19580
19580
}
@@ -21899,6 +21899,7 @@ pm_parser_init(pm_parser_t *parser, const uint8_t *source, size_t size, const pm
21899
21899
.explicit_encoding = NULL,
21900
21900
.command_line = 0,
21901
21901
.parsing_eval = false,
21902
+ .partial_script = false,
21902
21903
.command_start = true,
21903
21904
.recovering = false,
21904
21905
.encoding_locked = false,
@@ -21962,6 +21963,9 @@ pm_parser_init(pm_parser_t *parser, const uint8_t *source, size_t size, const pm
21962
21963
// version option
21963
21964
parser->version = options->version;
21964
21965
21966
+ // partial_script
21967
+ parser->partial_script = options->partial_script;
21968
+
21965
21969
// scopes option
21966
21970
parser->parsing_eval = options->scopes_count > 0;
21967
21971
if (parser->parsing_eval) parser->warn_mismatched_indentation = false;
0 commit comments