aboutsummaryrefslogtreecommitdiffstats
path: root/parse.y
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-12 04:23:17 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-03-12 04:23:17 +0000
commitb6468b01f7288789ef2e9bf548d81cdadb8ef053 (patch)
treecb92645db1dcc873aff0aa9a0c3f9e45afacd6f3 /parse.y
parent60bddf589fb518c6b84515749775dc78458aeaad (diff)
downloadruby-b6468b01f7288789ef2e9bf548d81cdadb8ef053.tar.gz
Show unkwon regexp option line
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67226 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'parse.y')
-rw-r--r--parse.y13
1 files changed, 11 insertions, 2 deletions
diff --git a/parse.y b/parse.y
index 42f1ff3fe5..e42aa9b595 100644
--- a/parse.y
+++ b/parse.y
@@ -5633,9 +5633,18 @@ regx_options(struct parser_params *p)
options |= kopt;
pushback(p, c);
if (toklen(p)) {
+ static const char mesg[] = "unknown regexp options";
+ static const char sep[] = " - ";
+ const int mlen = (int)(sizeof(mesg) - 1 - (toklen(p) == 1));
+ const int seplen = (int)(sizeof(sep) - 1);
+ YYLTYPE loc;
+ RUBY_SET_YYLLOC(loc);
tokfix(p);
- compile_error(p, "unknown regexp option%s - %*s",
- toklen(p) > 1 ? "s" : "", toklen(p), tok(p));
+ tokspace(p, toklen(p) + mlen + seplen);
+ memmove(tok(p) + mlen + seplen, tok(p), toklen(p) + 1);
+ memcpy(tok(p), mesg, mlen);
+ memcpy(tok(p) + mlen, sep, seplen);
+ yyerror1(&loc, tok(p));
}
return options | RE_OPTION_ENCODING(kcode);
}