[prism] Update to use new options APIs
This commit is contained in:
parent
aab2a6a8a3
commit
ec86b2eb39
15
common.mk
15
common.mk
@ -97,6 +97,7 @@ PRISM_FILES = prism/api_node.$(OBJEXT) \
|
|||||||
prism/enc/pm_windows_31j.$(OBJEXT) \
|
prism/enc/pm_windows_31j.$(OBJEXT) \
|
||||||
prism/extension.$(OBJEXT) \
|
prism/extension.$(OBJEXT) \
|
||||||
prism/node.$(OBJEXT) \
|
prism/node.$(OBJEXT) \
|
||||||
|
prism/options.$(OBJEXT) \
|
||||||
prism/pack.$(OBJEXT) \
|
prism/pack.$(OBJEXT) \
|
||||||
prism/prettyprint.$(OBJEXT) \
|
prism/prettyprint.$(OBJEXT) \
|
||||||
prism/regexp.$(OBJEXT) \
|
prism/regexp.$(OBJEXT) \
|
||||||
@ -3214,6 +3215,7 @@ compile.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
compile.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
compile.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
compile.$(OBJEXT): $(top_srcdir)/prism/node.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
compile.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
compile.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
compile.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
compile.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
compile.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -8267,6 +8269,7 @@ iseq.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/node.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
iseq.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
iseq.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
iseq.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -11335,6 +11338,7 @@ prism/api_node.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
|||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism/api_node.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -11528,6 +11532,7 @@ prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
|||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism/api_pack.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -11833,6 +11838,7 @@ prism/extension.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
|||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/extension.c
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/extension.c
|
||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/extension.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism/extension.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -12021,6 +12027,7 @@ prism/node.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/node.$(OBJEXT): $(top_srcdir)/prism/prism.h
|
prism/node.$(OBJEXT): $(top_srcdir)/prism/prism.h
|
||||||
@ -12037,6 +12044,10 @@ prism/node.$(OBJEXT): $(top_srcdir)/prism/util/pm_strpbrk.h
|
|||||||
prism/node.$(OBJEXT): {$(VPATH)}config.h
|
prism/node.$(OBJEXT): {$(VPATH)}config.h
|
||||||
prism/node.$(OBJEXT): {$(VPATH)}prism/ast.h
|
prism/node.$(OBJEXT): {$(VPATH)}prism/ast.h
|
||||||
prism/node.$(OBJEXT): {$(VPATH)}prism/node.c
|
prism/node.$(OBJEXT): {$(VPATH)}prism/node.c
|
||||||
|
prism/options.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
||||||
|
prism/options.$(OBJEXT): $(top_srcdir)/prism/options.c
|
||||||
|
prism/options.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
|
prism/options.$(OBJEXT): $(top_srcdir)/prism/util/pm_string.h
|
||||||
prism/pack.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
prism/pack.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
||||||
prism/pack.$(OBJEXT): $(top_srcdir)/prism/pack.c
|
prism/pack.$(OBJEXT): $(top_srcdir)/prism/pack.c
|
||||||
prism/pack.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/pack.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
@ -12058,6 +12069,7 @@ prism/prism.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/prism.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism/prism.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -12097,6 +12109,7 @@ prism/serialize.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism/serialize.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -12191,6 +12204,7 @@ prism_init.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
|||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/extension.h
|
||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/node.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
prism_init.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
prism_init.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
@ -15323,6 +15337,7 @@ ruby.$(OBJEXT): $(top_srcdir)/prism/defines.h
|
|||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/diagnostic.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/enc/pm_encoding.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/node.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/node.h
|
||||||
|
ruby.$(OBJEXT): $(top_srcdir)/prism/options.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/pack.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/parser.h
|
||||||
ruby.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
ruby.$(OBJEXT): $(top_srcdir)/prism/prettyprint.h
|
||||||
|
25
iseq.c
25
iseq.c
@ -1414,34 +1414,34 @@ iseqw_s_compile_prism(int argc, VALUE *argv, VALUE self)
|
|||||||
Check_Type(file, T_STRING);
|
Check_Type(file, T_STRING);
|
||||||
|
|
||||||
rb_iseq_t *iseq = iseq_alloc();
|
rb_iseq_t *iseq = iseq_alloc();
|
||||||
|
int start_line = NUM2INT(line);
|
||||||
|
|
||||||
|
pm_options_t options = { 0 };
|
||||||
|
pm_options_filepath_set(&options, RSTRING_PTR(file));
|
||||||
|
pm_options_line_set(&options, start_line);
|
||||||
|
|
||||||
pm_parser_t parser;
|
pm_parser_t parser;
|
||||||
size_t len = RSTRING_LEN(src);
|
pm_parser_init(&parser, (const uint8_t *) RSTRING_PTR(src), RSTRING_LEN(src), &options);
|
||||||
VALUE name = rb_fstring_lit("<compiled>");
|
|
||||||
|
|
||||||
pm_parser_init(&parser, (const uint8_t *) RSTRING_PTR(src), len, "");
|
|
||||||
|
|
||||||
pm_node_t *node = pm_parse(&parser);
|
pm_node_t *node = pm_parse(&parser);
|
||||||
|
|
||||||
int first_lineno = NUM2INT(line);
|
|
||||||
pm_line_column_t start_loc = pm_newline_list_line_column(&parser.newline_list, node->location.start);
|
pm_line_column_t start_loc = pm_newline_list_line_column(&parser.newline_list, node->location.start);
|
||||||
pm_line_column_t end_loc = pm_newline_list_line_column(&parser.newline_list, node->location.end);
|
pm_line_column_t end_loc = pm_newline_list_line_column(&parser.newline_list, node->location.end);
|
||||||
|
|
||||||
rb_code_location_t node_location;
|
rb_code_location_t node_location;
|
||||||
node_location.beg_pos.lineno = (int)start_loc.line;
|
node_location.beg_pos.lineno = (int) start_loc.line;
|
||||||
node_location.beg_pos.column = (int)start_loc.column;
|
node_location.beg_pos.column = (int) start_loc.column;
|
||||||
node_location.end_pos.lineno = (int)end_loc.line;
|
node_location.end_pos.lineno = (int) end_loc.line;
|
||||||
node_location.end_pos.column = (int)end_loc.column;
|
node_location.end_pos.column = (int) end_loc.column;
|
||||||
|
|
||||||
int node_id = 0;
|
int node_id = 0;
|
||||||
|
|
||||||
rb_iseq_t *parent = NULL;
|
rb_iseq_t *parent = NULL;
|
||||||
enum rb_iseq_type iseq_type = ISEQ_TYPE_TOP;
|
enum rb_iseq_type iseq_type = ISEQ_TYPE_TOP;
|
||||||
rb_compile_option_t option;
|
rb_compile_option_t option;
|
||||||
|
|
||||||
make_compile_option(&option, opt);
|
make_compile_option(&option, opt);
|
||||||
|
|
||||||
prepare_iseq_build(iseq, name, file, path, first_lineno, &node_location, node_id,
|
VALUE name = rb_fstring_lit("<compiled>");
|
||||||
|
prepare_iseq_build(iseq, name, file, path, start_line, &node_location, node_id,
|
||||||
parent, 0, (enum rb_iseq_type)iseq_type, Qnil, &option);
|
parent, 0, (enum rb_iseq_type)iseq_type, Qnil, &option);
|
||||||
|
|
||||||
pm_scope_node_t scope_node;
|
pm_scope_node_t scope_node;
|
||||||
@ -1451,6 +1451,7 @@ iseqw_s_compile_prism(int argc, VALUE *argv, VALUE self)
|
|||||||
finish_iseq_build(iseq);
|
finish_iseq_build(iseq);
|
||||||
pm_node_destroy(&parser, node);
|
pm_node_destroy(&parser, node);
|
||||||
pm_parser_free(&parser);
|
pm_parser_free(&parser);
|
||||||
|
pm_options_free(&options);
|
||||||
|
|
||||||
return iseqw_new(iseq);
|
return iseqw_new(iseq);
|
||||||
}
|
}
|
||||||
|
@ -15,12 +15,12 @@ VALUE rb_cPrismParseError;
|
|||||||
VALUE rb_cPrismParseWarning;
|
VALUE rb_cPrismParseWarning;
|
||||||
VALUE rb_cPrismParseResult;
|
VALUE rb_cPrismParseResult;
|
||||||
|
|
||||||
ID id_filepath;
|
ID rb_option_id_filepath;
|
||||||
ID id_encoding;
|
ID rb_option_id_encoding;
|
||||||
ID id_line;
|
ID rb_option_id_line;
|
||||||
ID id_frozen_string_literal;
|
ID rb_option_id_frozen_string_literal;
|
||||||
ID id_suppress_warnings;
|
ID rb_option_id_suppress_warnings;
|
||||||
ID id_scopes;
|
ID rb_option_id_scopes;
|
||||||
|
|
||||||
/******************************************************************************/
|
/******************************************************************************/
|
||||||
/* IO of Ruby code */
|
/* IO of Ruby code */
|
||||||
@ -119,17 +119,17 @@ build_options_i(VALUE key, VALUE value, VALUE argument) {
|
|||||||
pm_options_t *options = (pm_options_t *) argument;
|
pm_options_t *options = (pm_options_t *) argument;
|
||||||
ID key_id = SYM2ID(key);
|
ID key_id = SYM2ID(key);
|
||||||
|
|
||||||
if (key_id == id_filepath) {
|
if (key_id == rb_option_id_filepath) {
|
||||||
if (!NIL_P(value)) pm_options_filepath_set(options, check_string(value));
|
if (!NIL_P(value)) pm_options_filepath_set(options, check_string(value));
|
||||||
} else if (key_id == id_encoding) {
|
} else if (key_id == rb_option_id_encoding) {
|
||||||
if (!NIL_P(value)) pm_options_encoding_set(options, rb_enc_name(rb_to_encoding(value)));
|
if (!NIL_P(value)) pm_options_encoding_set(options, rb_enc_name(rb_to_encoding(value)));
|
||||||
} else if (key_id == id_line) {
|
} else if (key_id == rb_option_id_line) {
|
||||||
if (!NIL_P(value)) pm_options_line_set(options, NUM2UINT(value));
|
if (!NIL_P(value)) pm_options_line_set(options, NUM2UINT(value));
|
||||||
} else if (key_id == id_frozen_string_literal) {
|
} else if (key_id == rb_option_id_frozen_string_literal) {
|
||||||
if (!NIL_P(value)) pm_options_frozen_string_literal_set(options, value == Qtrue);
|
if (!NIL_P(value)) pm_options_frozen_string_literal_set(options, value == Qtrue);
|
||||||
} else if (key_id == id_suppress_warnings) {
|
} else if (key_id == rb_option_id_suppress_warnings) {
|
||||||
if (!NIL_P(value)) pm_options_suppress_warnings_set(options, value == Qtrue);
|
if (!NIL_P(value)) pm_options_suppress_warnings_set(options, value == Qtrue);
|
||||||
} else if (key_id == id_scopes) {
|
} else if (key_id == rb_option_id_scopes) {
|
||||||
if (!NIL_P(value)) build_options_scopes(options, value);
|
if (!NIL_P(value)) build_options_scopes(options, value);
|
||||||
} else {
|
} else {
|
||||||
rb_raise(rb_eArgError, "unknown keyword: %"PRIsVALUE, key);
|
rb_raise(rb_eArgError, "unknown keyword: %"PRIsVALUE, key);
|
||||||
@ -940,12 +940,12 @@ Init_prism(void) {
|
|||||||
|
|
||||||
// Intern all of the options that we support so that we don't have to do it
|
// Intern all of the options that we support so that we don't have to do it
|
||||||
// every time we parse.
|
// every time we parse.
|
||||||
id_filepath = rb_intern_const("filepath");
|
rb_option_id_filepath = rb_intern_const("filepath");
|
||||||
id_encoding = rb_intern_const("encoding");
|
rb_option_id_encoding = rb_intern_const("encoding");
|
||||||
id_line = rb_intern_const("line");
|
rb_option_id_line = rb_intern_const("line");
|
||||||
id_frozen_string_literal = rb_intern_const("frozen_string_literal");
|
rb_option_id_frozen_string_literal = rb_intern_const("frozen_string_literal");
|
||||||
id_suppress_warnings = rb_intern_const("suppress_warnings");
|
rb_option_id_suppress_warnings = rb_intern_const("suppress_warnings");
|
||||||
id_scopes = rb_intern_const("scopes");
|
rb_option_id_scopes = rb_intern_const("scopes");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The version of the prism library.
|
* The version of the prism library.
|
||||||
|
22
ruby.c
22
ruby.c
@ -2335,17 +2335,20 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (dump & (DUMP_BIT(prism_parsetree))) {
|
if (dump & (DUMP_BIT(prism_parsetree))) {
|
||||||
pm_parser_t parser;
|
|
||||||
if (opt->e_script) {
|
|
||||||
size_t len = RSTRING_LEN(opt->e_script);
|
|
||||||
pm_parser_init(&parser, (const uint8_t *) RSTRING_PTR(opt->e_script), len, "-e");
|
|
||||||
} else {
|
|
||||||
pm_string_t input;
|
pm_string_t input;
|
||||||
char *filepath = RSTRING_PTR(opt->script_name);
|
pm_options_t options = { 0 };
|
||||||
pm_string_mapped_init(&input, filepath);
|
|
||||||
pm_parser_init(&parser, pm_string_source(&input), pm_string_length(&input), filepath);
|
if (opt->e_script) {
|
||||||
|
pm_string_constant_init(&input, RSTRING_PTR(opt->e_script), RSTRING_LEN(opt->e_script));
|
||||||
|
pm_options_filepath_set(&options, "-e");
|
||||||
|
} else {
|
||||||
|
pm_string_mapped_init(&input, RSTRING_PTR(opt->script_name));
|
||||||
|
pm_options_filepath_set(&options, RSTRING_PTR(opt->script_name));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pm_parser_t parser;
|
||||||
|
pm_parser_init(&parser, pm_string_source(&input), pm_string_length(&input), &options);
|
||||||
|
|
||||||
pm_node_t *node = pm_parse(&parser);
|
pm_node_t *node = pm_parse(&parser);
|
||||||
pm_buffer_t output_buffer = { 0 };
|
pm_buffer_t output_buffer = { 0 };
|
||||||
|
|
||||||
@ -2356,6 +2359,9 @@ process_options(int argc, char **argv, ruby_cmdline_options_t *opt)
|
|||||||
pm_buffer_free(&output_buffer);
|
pm_buffer_free(&output_buffer);
|
||||||
pm_node_destroy(&parser, node);
|
pm_node_destroy(&parser, node);
|
||||||
pm_parser_free(&parser);
|
pm_parser_free(&parser);
|
||||||
|
|
||||||
|
pm_string_free(&input);
|
||||||
|
pm_options_free(&options);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dump & (DUMP_BIT(parsetree)|DUMP_BIT(parsetree_with_comment))) {
|
if (dump & (DUMP_BIT(parsetree)|DUMP_BIT(parsetree_with_comment))) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user