diff --git a/parse.y b/parse.y index fb3e846258a91a..667945013d7a94 100644 --- a/parse.y +++ b/parse.y @@ -1480,9 +1480,6 @@ static rb_ast_id_table_t *local_tbl(struct parser_params*); static VALUE reg_compile(struct parser_params*, rb_parser_string_t*, int); static void reg_fragment_setenc(struct parser_params*, rb_parser_string_t*, int); -int rb_parser_reg_fragment_check(struct parser_params*, rb_parser_string_t*, int, rb_parser_reg_fragment_error_func); -static void reg_fragment_error(struct parser_params *, VALUE); -#define reg_fragment_check(p, str, option) rb_parser_reg_fragment_check(p, str, option, reg_fragment_error) static int literal_concat0(struct parser_params *p, rb_parser_string_t *head, rb_parser_string_t *tail); static NODE *heredoc_dedent(struct parser_params*,NODE*); @@ -13190,16 +13187,13 @@ new_regexp(struct parser_params *p, NODE *node, int options, const YYLTYPE *loc) /* Check string is valid regex */ reg_compile(p, dreg->string, options); } - else if (dreg->string) { - reg_fragment_check(p, dreg->string, options); - } prev = node; for (list = dreg->nd_next; list; list = RNODE_LIST(list->nd_next)) { NODE *frag = list->nd_head; enum node_type type = nd_type(frag); if (type == NODE_STR || (type == NODE_DSTR && !RNODE_DSTR(frag)->nd_next)) { rb_parser_string_t *tail = RNODE_STR(frag)->string; - if (reg_fragment_check(p, tail, options) && prev && RNODE_DREGX(prev)->string) { + if (prev && RNODE_DREGX(prev)->string) { rb_parser_string_t *lit = prev == node ? dreg->string : RNODE_STR(RNODE_LIST(prev)->nd_head)->string; if (!literal_concat0(p, lit, tail)) { return NEW_NIL(loc); /* dummy node on error */ @@ -15381,30 +15375,6 @@ reg_fragment_setenc(struct parser_params* p, rb_parser_string_t *str, int option if (c) reg_fragment_enc_error(p, str, c); } -static void -reg_fragment_error(struct parser_params* p, VALUE err) -{ - compile_error(p, "%"PRIsVALUE, err); -} - -#ifndef RIPPER -int -rb_parser_reg_fragment_check(struct parser_params* p, rb_parser_string_t *str, int options, rb_parser_reg_fragment_error_func error) -{ - VALUE err, str2; - reg_fragment_setenc(p, str, options); - /* TODO */ - str2 = rb_str_new_parser_string(str); - err = rb_reg_check_preprocess(str2); - if (err != Qnil) { - err = rb_obj_as_string(err); - error(p, err); - return 0; - } - return 1; -} -#endif - #ifndef UNIVERSAL_PARSER typedef struct { struct parser_params* parser; @@ -15503,7 +15473,7 @@ reg_compile(struct parser_params* p, rb_parser_string_t *str, int options) if (NIL_P(re)) { VALUE m = rb_attr_get(rb_errinfo(), idMesg); rb_set_errinfo(err); - reg_fragment_error(p, m); + compile_error(p, "%"PRIsVALUE, m); return Qnil; } return re; diff --git a/test/.excludes-parsey/TestRubyLiteral.rb b/test/.excludes-parsey/TestRubyLiteral.rb deleted file mode 100644 index 853f23a3b9baf8..00000000000000 --- a/test/.excludes-parsey/TestRubyLiteral.rb +++ /dev/null @@ -1 +0,0 @@ -exclude(:test_dregexp, "https://bugs.ruby-lang.org/issues/20504")