summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-22 06:24:59 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2019-01-22 06:24:59 +0000
commit59a6215af65b3bfade13836681cbacc3294e6e78 ()
tree079beee90581601803f22fb45381a6cef3dbe8d0
parent5e7d03531e109269e3aff7d9865bdf11f3308e67 (diff)
parse.y: enclose keyword token names by quotes
* parse.y (rb_yytnamerr): strip enclosing double-quotes, same as the default yytnamerr except for that single-quotes matching back-quotes do not stop stripping. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@66903 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--parse.y176
-rw-r--r--test/ruby/test_syntax.rb2
2 files changed, 128 insertions, 50 deletions
@@ -609,6 +609,12 @@ rb_strterm_mark(VALUE obj)
}
#endif
#define TOKEN2ID(tok) ( \
tTOKEN_LOCAL_BEGIN<(tok)&&(tok)<tTOKEN_LOCAL_END ? TOKEN2LOCALID(tok) : \
tTOKEN_INSTANCE_BEGIN<(tok)&&(tok)<tTOKEN_INSTANCE_END ? TOKEN2INSTANCEID(tok) : \
@@ -776,55 +782,55 @@ static void token_info_warn(struct parser_params *p, const char *token, token_in
}
%token <id>
- keyword_class "class"
- keyword_module "module"
- keyword_def "def"
- keyword_undef "undef"
- keyword_begin "begin"
- keyword_rescue "rescue"
- keyword_ensure "ensure"
- keyword_end "end"
- keyword_if "if"
- keyword_unless "unless"
- keyword_then "then"
- keyword_elsif "elsif"
- keyword_else "else"
- keyword_case "case"
- keyword_when "when"
- keyword_while "while"
- keyword_until "until"
- keyword_for "for"
- keyword_break "break"
- keyword_next "next"
- keyword_redo "redo"
- keyword_retry "retry"
- keyword_in "in"
- keyword_do "do"
- keyword_do_cond "do (for condition)"
- keyword_do_block "do (for block)"
- keyword_do_LAMBDA "do (for lambda)"
- keyword_return "return"
- keyword_yield "yield"
- keyword_super "super"
- keyword_self "self"
- keyword_nil "nil"
- keyword_true "true"
- keyword_false "false"
- keyword_and "and"
- keyword_or "or"
- keyword_not "not"
- modifier_if "if (modifier)"
- modifier_unless "unless (modifier)"
- modifier_while "while (modifier)"
- modifier_until "until (modifier)"
- modifier_rescue "rescue (modifier)"
- keyword_alias "alias"
- keyword_defined "defined?"
- keyword_BEGIN "BEGIN"
- keyword_END "END"
- keyword__LINE__ "__LINE__"
- keyword__FILE__ "__FILE__"
- keyword__ENCODING__ "__ENCODING__"
%token <id> tIDENTIFIER "local variable or method"
%token <id> tFID "method"
@@ -11177,6 +11183,78 @@ parser_compile_error(struct parser_params *p, const char *fmt, ...)
p->enc, fmt, ap);
va_end(ap);
}
#endif
#ifdef RIPPER
@@ -995,7 +995,7 @@ eom
end
def test_parenthesised_statement_argument
- assert_syntax_error("foo(bar rescue nil)", /unexpected rescue \(modifier\)/)
assert_valid_syntax("foo (bar rescue nil)")
end