1392 Commits
Author SHA1 Message Date
usa a6da4f8ac7 merge revision(s) 62872,62873: [Backport #14621]
parse.y: unindent continued line

	* parse.y (tokadd_string): stop at continued line in dedented here
	  documents, to dedent for each lines before removing escaped
	  newlines.  [ruby-core:86236] [Bug #14621]

	parse.y: terminator at continued line

	* parse.y (here_document): a continuing line is not the
	  terminator.  [ruby-core:86283] [Bug #14621]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@67147 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2019-02-28 14:52:06 +00:00
nagachika 31ccc99d62 merge revision(s) 61862: [Backport #14368]
parse.y (new_regexp): Fix SEGV of `/#{"\u3042"}#{'{U+3044}'}/` in non UTF-8

	Mixing other encoding string literals in one Regexp caused SEGV.
	This bug was found by CoverityScan.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62880 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-21 15:57:56 +00:00
nagachika fe2165c81e merge revision(s) 61346: [Backport #14206]
parse.y: end of script at newline

	* parse.y (parser_yylex): deal with end of script chars just after
	  ignored newline as other places.  [ruby-core:84349] [Bug #14206]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62847 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-19 16:59:47 +00:00
nagachika 4e9537bf33 merge revision(s) 60160: [Backport #13998]
parse.y: token info with BOM

	* parse.y (parser_prepare): set token_info_enabled flag first,
	  before returning at BOM.  [ruby-dev:50288] [Bug #13998]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62691 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-07 14:26:14 +00:00
nagachika 4828fe38d9 merge revision(s) 57733,57734: [Backport #13782]
kwrest arg name

	* compile.c (iseq_set_arguments_keywords): make keyword rest
	  argument name nd_vid consistently, regardless of whether other
	  keyword arguments are present.  [Fix GH-1529]

	* parse.y (new_args_tail_gen): ditto.

	fix nd_ainfo->kw_rest_arg

	[Fix GH-5129]
	Author:    fate0 <fate0@users.noreply.github.com>

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62444 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-16 16:40:57 +00:00
nagachika 737d15391a merge revision(s) 60213: [Backport #14032]
parse.y: indent at '#'

	* parse.y (parser_here_document): update indent at '#', which is
	  not a space.  [ruby-core:83368] [Bug #14032]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@62174 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-02-03 02:51:00 +00:00
nagachika 76940d8a76 merge revision(s) 60071: [Backport #13953] [Backport #13954] [Backport #13955] [Backport #13957]
ext: check if null byte is contained

	[ruby-dev:50267] [Bug #13953]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@61456 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-12-24 20:06:32 +00:00
nagachika 86bfcc2da0 merge revision(s) 58499,58500: [Backport #13181]
parse.y: fix line in rescue

	* parse.y (set_line_body, primary): fix line number of bodystmt as
	  the beginning of the block.  [ruby-core:79388] [Bug #13181]

	parse.y: set_line_body is not used in ripper

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@60626 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-03 01:46:59 +00:00
nagachika a59b02c6bc merge revision(s) 59375: [Backport #13756]
parse.y: empty hash in defined

	* parse.y (command): NODE_ARRAY with NULL is invalid.  traversal
	  in defined_expr0 is simplified than iseq_compile_each0.
	  [ruby-core:82113] [Bug #13756]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59841 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-11 17:27:01 +00:00
nagachika 78c8ac46fd merge revision(s) 59644: [Backport #13836]
parse.y: primary should not be 0

	* parse.y (primary): should not be 0, since it can be a receiver.
	  [ruby-core:82447] [Bug #13836]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59820 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-10 10:27:59 +00:00
nagachika f177c73edb merge revision(s) 58561: [Backport #13540]
parse.y: make shared string modifiable

	* parse.y (dedent_string): ensure that the string is modifiable,
	  not to set the length of shared string.
	  [ruby-core:80987] [Bug #13540]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59513 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-08-05 02:22:37 +00:00
nagachika fd2fca8395 merge revision(s) 58641: [Backport #13547]
parse.y: brace after literal arg

	* parse.y (symbol, dsym, parser_set_number_literal, parser_yylex):
	  set state to END too not only ENDARG and after a literal, so
	  that a left brace after it should be a primary block bound to
	  the literal, which causes syntax error.
	  [ruby-core:81037] [Bug #13547]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-23 08:59:07 +00:00
nagachika 524e628fd3 merge revision(s) 58638,58640: [Backport #11873]
test_syntax.rb: test_brace_after_local_variable

	* test/ruby/test_syntax.rb (test_brace_after_local_variable):
	  another test using braces.  [Bug #11873]
	parse.y: do after cmdarg in paren

	* parse.y (parser_yylex): set state to ENDARG after a string
	  literal, so that `do` after a literal should be `do_block` and
	  bound to the outer method, as well as a numeric/symbol literal.
	  [ruby-core:72482] [Bug #11873]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59406 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-23 08:15:57 +00:00
nagachika e9ef3cfdf8 merge revision(s) 59161: [Backport #13672]
parse.y: check multibyte char

	* parse.y (parser_precise_mbclen): check invalid multibyte char at
	  skipping strings following `?x` literal string, not to stuck in
	  a infinite loop.  [ruby-core:81746] [Bug #13672]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@59401 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-07-23 07:44:56 +00:00
naruse 1b60a978a2 merge revision(s) 57801: [Backport #13287]
parse.y: remove trace

	* parse.y (reg_named_capture_assign_iter): do not insert trace
	  instructions before local variable assinments.  putobject is
	  expected at first.  [ruby-core:79940] [Bug #13287]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57934 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-12 17:14:38 +00:00
naruse 0e05caace7 merge revision(s) 57717: [Backport #13253]
parse.y: indent at invalid identifier

	* parse.y (parser_heredoc_identifier): set indent only when valid
	  identifier, not to dedent non-existent contents later.
	  [ruby-core:79772] [Bug #13253]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57912 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-12 14:39:18 +00:00
naruse c093d46f4f merge revision(s) 57198: [Backport #13073]
parse.y: preserve cmdarg stack

	* parse.y (do_body): preserve cmdarg stack around do/end block.
	  [ruby-core:78837] [Bug #13073]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_4@57837 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-11 12:53:45 +00:00
nobu 9c89812664 fix r57089
* parse.y (parser_heredoc_identifier): fix multiline here document
  identifier condition.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-16 22:57:01 +00:00
nobu d25faa4ed2 multiline heredoc identifier
* parse.y (parser_heredoc_identifier): reject multiline here
  document identifier, which never matches single line.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57089 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-16 01:27:47 +00:00
nobu 2d6538a7c8 parse.y: newline in heredoc identifier
* parse.y (parser_heredoc_identifier): warn newline in here
  document identifier.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57085 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-15 12:58:59 +00:00
nobu b53456731e parse.y: one warning, one line [ci skip]
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57082 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-15 06:22:09 +00:00
nobu 07e7981d42 parse.y: curtail scanning
* parse.y (parser_yyerror): curtail scanning range, not to exceed
  the max margin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57075 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-14 07:30:41 +00:00
nobu bc44acb5a3 parse.y: fix yyerror message
* parse.y (parser_yyerror): show the error line even if the error
  is at the end.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57073 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-14 04:35:28 +00:00
nobu 7e8b910a56 parse.y: zero codepoints
* parse.y (parser_tokadd_utf8): relax restriction to allow zero or
  more codepoints.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57050 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-11 09:20:27 +00:00
nobu 510f0ec869 parse.y: ripper generic input
* parse.y (ripper_initialize): allow generic input as source, if
  it has #gets method.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@57022 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-08 00:45:13 +00:00
nobu 8130ee5c9d parse.y: simplify parsing utf-8 string
* parse.y (parser_tokadd_codepoint): move error checks and add
  char.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56964 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-02 03:33:54 +00:00
nobu 80045bc2a9 parse.y: relax spaces
* parse.y (parser_tokadd_utf8): relax restriction spaces inside
  "\u{...}".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56963 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-02 02:47:11 +00:00
nobu 74495cfa11 parse.y: reject invalid codepoint
* parse.y (parser_tokadd_codepoint): reject invalid codepoint,
  surrogate blocks and surrogate pair, as well as mruby.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56956 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-12-01 08:26:39 +00:00
nobu 88b745f0ca parse.y: refine error message
* parse.y (parser_tokadd_utf8): refine error message at bad char
  in unicode escape, "invalid" instead of "unterminated".

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 14:43:43 +00:00
nobu 5e4b845522 parse.y: parser_tokadd_codepoint
* parse.y (parser_tokadd_codepoint): extract from
  parser_tokadd_utf8.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56943 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 13:09:51 +00:00
nobu 94715bc666 parse.y: brace constants
* parse.y (parser_tokadd_utf8): make open/close braces constant.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56942 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 13:09:50 +00:00
nobu 22c0994bc8 parse.y: no warning for lambda
* parse.y (parser_yylex): do not warn parentheses of lambda
  argument list, because there is no name.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56940 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-30 01:40:11 +00:00
nobu 65e27c8b13 parse.y: ambiguous parentheses
* parse.y (parser_yylex): warn ambiguous parentheses after a space
  in method definitions.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56927 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-29 10:47:43 +00:00
nobu 4992c02095 parse.y: warn ? followed by a word
* parse.y (parse_qmark): warn `?` with unbalanced space, which is
  interpreted as a conditional operator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56877 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-22 23:32:44 +00:00
nobu 3c93545a16 Revert r56856
* parse.y: tCHAR can be concatenated.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56863 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 22:45:26 +00:00
nobu 41d9e6dd54 parse.y: tCHAR cannot be concatenated
* parse.y (strings): tCHAR is not a subject of string literal
  concatenation and string interpolation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56856 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-21 03:13:59 +00:00
nobu 04a4fd8957 parse.y: new_attr_op_assign in ripper needs symbol
* parse.y (command_asgn, arg): new_attr_op_assign in ripper
  expects a Symbol VALUE as the operator, not an ID, so convert
  literal IDs to Symbols.  [ruby-core:78069] [Bug #12916]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56692 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-10 07:47:44 +00:00
nobu 8a5512b4bf parse.y: fix restored cmdarg_stack
* parse.y (brace_body, do_body): since cmdarg_stack is saved in
  VALUE val, should restore from the same member.  on big-endian
  platforms where VALUE is larger than int, it restored 0 in the
  upper word.  [ruby-core:77920] [Bug #12900]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56574 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-11-05 05:17:22 +00:00
nobu e981862fc9 parse.y: !-operator warning
* parse.y (cond0): !-operator is a method call, no warning for
  literal in condition.  [ruby-core:77801] [Bug #12881]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-29 10:59:39 +00:00
nobu 2adba2dc5e parse.y: append to buffer
* parse.y (reg_compile_gen): always append error message to the
  error buffer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56475 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-22 14:33:58 +00:00
nobu 1b94420174 compile.c: literal range
* compile.c (iseq_compile_each): move numeric literal range
  optimization from fixup_nodes() in parse.y.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56316 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-10-01 13:17:51 +00:00
nobu 46bbb62bed parse.y: deferred_dots_gen
* parse.y (deferred_dots_gen): extract for tDOT2 and tDOT3.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56289 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-29 11:33:03 +00:00
nobu 3d2e45d319 parse.y: fix up r56198
* parse.y (symbol, dsym, parser_set_number_literal): set state to
  ENDARG, so that `do` after a literal should be `do_block` and
  bound to the outer method.  [ruby-core:72482] [Bug #11873]
* parse.y (parse_ident): revert r56198.
* parse.y (warn_balanced): the state of symbol and numeric
  literals is now EXPR_ENDARG, do not exclude it.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56273 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-27 14:22:33 +00:00
nobu f4ac0d75d9 parse.y: preserve cmdarg_stack
* parse.y (brace_body, do_body): preserve cmdarg_stack so that
  `do` after cmdarg in a block should be `do_block` and bound to
  the outer method.  [ruby-core:72482] [Bug #11873]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56199 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:47:35 +00:00
nobu c924e2db96 parse.y: do after cmdarg in paren
* parse.y: `do` after cmdarg in parentheses should be `do_block`
  and bound to the outer method.  [ruby-core:72482] [Bug #11873]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56198 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:38:46 +00:00
nobu b458aef0f0 parse.y: remove spaces [ci skip]
* parse.y (cmd_brace_block, do_block): remove spaces before tab in
  indent.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56197 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:36:32 +00:00
nobu 7b4b01bf05 parse.y: block bodies
* parse.y (brace_body, do_body): extract block bodies.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56195 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-09-21 04:32:03 +00:00
nobu 0783f55cf8 parse.y: heredoc token
* parse.y (parser_heredoc_identifier): gather branches by quote
  char.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56020 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 23:26:03 +00:00
nobu 70da28c185 parse.y: STR_TERM_END
* parse.y (parser_parse_string): store the end of string literal
  mark in nd_term instead of nd_func.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56016 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 15:11:32 +00:00
nobu 49b884941a parse.y: parser_string_term
* parse.y (parser_string_term): return the token of string or
  regexp literal terminator.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56014 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-26 15:07:51 +00:00