1306 Commits
Author SHA1 Message Date
usa 2d0062bcf5 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_3@62938 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-28 04:49:41 +00:00
usa 091f98cf8c merge revision(s) 53573: [Backport #11989]
* parse.y (parser_here_document): an escaped newline is not an
	  actual newline, and the rest part should not be dedented.
	  [ruby-core:72855] [Bug #11989]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@62826 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-18 15:29:37 +00:00
usa c17242100c 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_3@62822 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-03-18 15:16:52 +00:00
usa 3d6510c514 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_3@62140 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2018-01-31 13:38:59 +00:00
usa d69b1e3b30 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_3@60947 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-11-30 14:38:15 +00:00
usa ac6f2894ea 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_3@59884 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14 04:32:54 +00:00
usa 9b3e0ca63c 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_3@59881 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-09-14 04:21:43 +00:00
usa 5974191113 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_3@59241 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-06-30 13:05:58 +00:00
usa 6aac76353a * parse.y (parser_parse_string): set the mark of term to nd_func
because in this version `u2.id` is not used for this purpose.
  fixed failure of ruby/spec introduced at r58518.
  see also [Backport #13363]



git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@58522 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-30 21:39:04 +00:00
usa c884cbd810 merge revision(s) 58080,58138: [Backport #13363]
keep line number after unterminated string literal

	* parse.y (parser_parse_string): keep line number even after an
	  unterminated string literal.  it does not matter in the parser,
	  ripper needs this value after this error.
	parse.y: unterminated content token

	* parse.y (parser_parse_string): defer the end token to next
	  reading, to yield tSTRING_CONTENT with the unterminated content.
	  [Bug #13363]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@58518 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-04-30 13:59:21 +00:00
nagachika ddd7dd0f8c merge revision(s) 56020,57717: [Backport #13253]
parse.y: heredoc token

	* parse.y (parser_heredoc_identifier): gather branches by quote
	  char.
	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_3@58061 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2017-03-22 14:26:42 +00:00
nagachika bb6e171adb merge revision(s) 53424,55509: [Backport #12517]
* test/coverage/test_coverage.rb: ignored test when enabled to coverage.
	  It lead to crash with `make test-all`.

	* compile.c (ADD_TRACE): ignore trace instruction on non-positive
	  line.

	* parse.y (coverage): get rid of ArgumentError when the starting
	  line number is not positive.  [ruby-core:76141] [Bug #12517]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@55917 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-08-16 03:00:20 +00:00
nagachika fe0fb03316 merge revision(s) 54893: [Backport #10763]
* parse.y (new_if_gen): set newline flag to NODE_IF to trace all
	  if/elsif statements.  [ruby-core:67720] [Bug #10763]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@55382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-06-11 17:26:02 +00:00
nagachika b7c90baf07 merge revision(s) 53753,54131: [Backport #8851]
lex.c.blt: update

	* lex.c.blt: follows r52429, not removing casts to int.
	* defs/keywords (alias, undef): symbol literals are allowed.

	* parse.y (parse_percent): should parse symbol literals for alias
	  and undef.  [ruby-dev:47681] [Bug #8851]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54642 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-18 17:12:34 +00:00
nagachika b118f5d82f merge revision(s) 53834,53835,53836: [Backport #12073]
parse.y: simplify local ID condition

	* parse.y (tokenize_ident, parse_ident): ident in tokenize_ident()
  can be a local id only when called from parse_ident(), but never
  from parse_gvar() and parse_atmark().
	* parse.y (parse_ident): allow keyword arguments just after a
	  method where the same name local variable is defined.
	  [ruby-core:73816] [Bug#12073]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54618 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-04-16 19:43:02 +00:00
naruse 4563669d7c merge revision(s) 54185: [Backport #12197]
parse.y: mark debug_buffer

	* parse.y (parser_mark): mark debug_buffer.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54414 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 16:17:36 +00:00
naruse a61019eee3 merge revision(s) 53541,53555,53570: [Backport #11990]
* parse.y (string1): reset heredoc indent fore each string leteral
	  so that concatenated string would not be dedented.
	  [ruby-core:72857] [Bug #11990]

	* parse.y (xstring): reset heredoc indent after dedenting,
	  so that following string literal would not be dedented.
	  [ruby-core:72857] [Bug #11990]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 12:26:12 +00:00
naruse ba02d4b03b merge revision(s) 53398: [Backport #11871]
* parse.y (parser_here_document): update indent for each line in
	  indented here document with single-quotes.
	  [ruby-core:72479] [Bug #11871]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 12:21:52 +00:00
naruse ba57632186 merge revision(s) 54172: [Backport #12192]
* parse.y (parse_numvar): NTH_REF must be less than a half of
	  INT_MAX, as it is left-shifted to be ORed with back-ref flag.
	  [ruby-core:74444] [Bug#12192] [Fix GH-1296]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54382 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 07:53:43 +00:00
naruse 1238d358f1 merge revision(s) 53411,53425: [Backport #11932]
* parse.y (regexp): set_yylval_num sets u1, should use nd_tag
	  instead of nd_state.  [ruby-core:72638] [Bug #11932]

	* parse.y (set_yylval_num): should be used as nd_state, set to u3.
	  [ruby-core:72638] [Bug #11932]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_2_3@54350 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-03-29 04:38:20 +00:00
kazu 2fd34fa328 fix typos
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53283 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-24 14:30:13 +00:00
nobu 94090b0502 deprecate exposed internal functions
* error.c (rb_compile_error_with_enc, rb_compile_error),
  (rb_compile_bug): deprecate internal functions.
* parse.y (parser_yyerror): construct exception message with
  source code and carret.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53279 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-24 09:43:22 +00:00
nobu 26984290eb preserve source file name encoding
* compile.c (append_compile_error), parse.y (compile_error):
  preserve encoding of source file name in exceptions.
* error.c (rb_compile_error_str, rb_compile_bug_str): add.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53278 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-24 08:25:44 +00:00
nobu 9d5abbff97 parse.y: labeled heredoc
* parse.y (parser_yylex): allow here documents in labeled
  argument.  [ruby-core:72396] [Bug #11849]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-20 02:43:34 +00:00
nobu bfd34365b6 parse.y: fix block_call&.call
* parse.y (block_command, block_call): fix `&.` calls after
  block_call.  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53138 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-16 01:49:42 +00:00
nobu fcb4ab8d1c ytab.sed: for bison 2
* tool/ytab.sed: substitute `fprintf`s used directory in
  yy_reduce_print by bison 2.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53108 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-14 06:36:50 +00:00
nobu 430082c013 parse.y: suppress warnings
* parse.y (SET_LEX_STATE): explicit cast to suppress sign-compare
  warnings in the case restoring from saved num in the parser
  stack and getting from kwtable state.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53106 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-14 04:47:37 +00:00
nobu d2e19fdc42 ytab.sed: replace argument
* tool/ytab.sed: substitute the first argument of YYFPRINTF, instead
  of substitution by preprocessor, not to redefine stderr.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53100 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 16:54:43 +00:00
nobu a7b67cc82e ytab.sed: work around
* tool/ytab.sed: work around for platforms where vairadic macro is
  not available.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53099 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 15:50:44 +00:00
nobu 9d34ea9e35 parse.y: reset buffer
* parse.y (rb_parser_printf): reset debug_buffer after print out.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53097 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 15:20:20 +00:00
nobu 0f076affb6 parse.y: lex_state trace by yydebug
* parse.y (trace_lex_state): trace lex_state changes if yydebug is
  set, and send the messages to rb_stdout.
* parse.y (rb_parser_printf): store YYPRINTF messages per lines
  so that lex_state traces do not mix.
* tool/ytab.sed: add parser argument to yy_stack_print too.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53095 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 14:46:09 +00:00
nobu ada76728f6 parse.y: lex_state bits
* parse.y (build_lex_state_name, trace_lex_state): lex_state is
  now bit flags and can be set 2 bits or more.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53094 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 11:41:14 +00:00
yugui 99ac392284 * parse.y (parse_percent): Allow %-literals in labeled arg as
r51624 did for parentheses.
  Fixes [ruby-core:72084] [Bug #11812].

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53092 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 11:17:18 +00:00
yugui af64b09514 * parse.y (lex_state_name): Make it return the correct names.
Add new names to follow r51617; Indices ffs(2) returns are 1-origin.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53088 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 10:37:52 +00:00
yugui 4e4a76e8f4 * parse.y: debug output of lex_state transition if PARSER_DEBUG
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53087 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-13 10:37:25 +00:00
ko1 2f5b8f0529 * *.c (*_memsize): do not check ptr.
NULL checking is finished Before call of memsize functions.
  See r52979.




git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52986 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-09 00:38:32 +00:00
nobu 9a28a29b87 parse.y: indented hereoc
* parse.y: add heredoc <<~ syntax.  [Feature #9098]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52916 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-07 14:39:52 +00:00
nobu a73f0f2cae parse.y: TAB_WIDTH
* parse.y (TAB_WIDTH, token_info_get_column): add constant for
  column calcuation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52825 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-01 01:25:13 +00:00
nobu 794fb41099 parse.y: dispatch heredoc end
* parse.y (ripper_dispatch_heredoc_end): at the end of here
  document, the terminator always should present.  has_scan_event
  is true.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52794 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-30 08:11:17 +00:00
nobu 448d1d147d parse.y: last content of heredoc
* parse.y (parser_here_document): store dispatched result of
  on_tstring_content at the last fragment of a here document.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52777 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-28 10:33:58 +00:00
nobu 6c0cf1848e parse.y: reduce ifdefs
* parse.y (dispatch_ignored_scan_event, has_delayed_token): more
  macros to reduce ifdefs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52763 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-27 02:22:57 +00:00
nobu b0fb3ff1b2 parse.y: ripper for warnings
* parse.y (parser_yylex): deal with magic comment warnings also in
  ripper.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52734 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-24 07:12:56 +00:00
nobu 70d2b335f2 parse.y: fix dispatch_scan_event
* parse.y (dispatch_scan_event): fix wrong macro at r52547.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52733 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-24 07:12:43 +00:00
nobu 7dc4929214 compile.c: move logop DCE
* compile.c (iseq_peephole_optimize): remove unreachable code
  chunk after jump/leave.
* parse.y: move dead code elimination of logical operation to
  compile.c.  not to warn logical operation of literal constants.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52711 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-22 07:53:37 +00:00
nobu aa4ab1814d parse.y: optimize condition for unless
* parse.y (new_unless): optimize constant condition for `unless`
  as well as `if`.  [Fix GH-1092]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52553 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-13 01:36:42 +00:00
nobu d674e6dfec parse.y: exact magic comment name
* parse.y (parser_magic_comment): should match exactly.
  [ruby-core:71460] [Bug #11679]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52550 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-12 09:44:29 +00:00
nobu 68e16ddd79 parse.y: ANDDOT fluent interface
* parse.y (parser_yylex): ANDDOT at the head of the line denote
  line continuation from previous one to support fluent interface,
  as well as single dot.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52548 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-12 05:17:06 +00:00
nobu 88edab89f4 parse.y: simplify
* parse.y (parser_yylex): reduce RIPPER ifdefs.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52547 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-12 05:16:03 +00:00
nobu a01b6453eb Rename DOTQ to ANDDOT
* defs/id.def, parse.y: Switch internal token name to reflect
  current form of safe-call operator.  [Fix GH-1090]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52525 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-10 09:42:27 +00:00
nobu 837babd564 change DOTQ
* defs/id.def (token_ops), parse.y (parser_yylex): change DOTQ
  from ".?" to "&.".  [ruby-core:71363] [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52462 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-06 03:39:23 +00:00