Граф коммитов

1291 Коммитов

Автор SHA1 Сообщение Дата
nobu 123313e205 parse.y: use nd_tag
* parse.y (regexp): set_yylval_num sets u1, should use nd_tag
  instead of nd_state.  [ruby-core:72638] [Bug #11932]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53411 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-02 05:44:41 +00:00
naruse 9c54107903 Revert r53409 "parse.y: yylval.num should be u3"
It introduces SEGV

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53410 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-02 04:39:56 +00:00
nobu 10c2251add parse.y: yylval.num should be u3
* 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/trunk@53409 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2016-01-02 02:11:09 +00:00
nobu b1796737cf parse.y: single-quote indented heredoc
* 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/trunk@53398 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-31 20:06:22 +00:00
nobu aaf99a7607 parse.y: show_bitstack
* parse.y (show_bitstack): trace stack_type value if yydebug.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@53326 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-12-27 02:03:36 +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
nobu dfa75017be parse.y: fix segv after invalid keyword argument
* parse.y (kwd_append): fix segv after invalid keyword argument,
  preceding keyword list is NULL when syntax error is there.
  [ruby-core:71356] [Bug #11663]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52461 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-06 00:01:29 +00:00
nobu fcd1535232 parse.y: CALL_Q_P
* parse.y (CALL_Q_P): extract common condition for safe-call
  token.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52457 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-05 01:24:18 +00:00
nobu a3ee54f8a6 parse.y: revert lbracket
* parse.y (lbracket): remove .? before aref.  [Feature #11537]
  revert r52422 and r52424

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52430 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-03 00:27:04 +00:00
ngoto 71c972c05b * parse.y (NO_QCALL): fix type mismatch of operands that causes
compile error with Oracle Solaris Studio on Solaris.
  [Bug #11645] [ruby-dev:49327]


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52424 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-02 17:10:38 +00:00
nobu dbf73f6fc2 parse.y: lbracket
* parse.y (lbracket): support .? before aref.  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52422 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-02 11:07:13 +00:00
nobu 7484d07ca7 parse.y: invalid symbol
* parse.y (parser_yylex): ':' separated by a comment and a newline
  is not valid as symbol.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52418 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-11-01 00:12:12 +00:00
nobu 9d64a54209 internal.h: RUBY_DTRACE_HOOK
* internal.h (RUBY_DTRACE_HOOK): extract from
  RUBY_DTRACE_CREATE_HOOK for other type hooks.

* gc.c (RUBY_DTRACE_GC_HOOK): ditto.

* parse.y (RUBY_DTRACE_PARSE_HOOK): ditto.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52399 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-31 01:02:29 +00:00
nobu 107b0dc8cd parse.y: fix op_assign type
* parse.y (new_attr_op_assign): fix op_assign type, which is
  already an ID since r52284.  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52318 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-28 04:29:41 +00:00
nobu 506e50b430 parse.y: fix ripper
* parse.y (call_op, call_op2): fix values on ripper.  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52284 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-26 08:11:55 +00:00
nobu 603b000dd0 parse.y: call_op2
* parse.y (call_op2): separate from call_op and also allow "::",
  while dot_or_colon should not allow ".?".  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52282 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-26 03:55:08 +00:00
nobu 11ec42e377 parse.y: canonical name
* parse.y (parser_magic_comment): intern canonical name.
  InstructionSequence.compile_options are case-sensitive while
  pragma names are case-insensitive.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52260 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 22:41:06 +00:00
nobu 0b7d473734 safe navigation attrset
* compile.c (iseq_compile_each): support safe navigation of simple
  attribute assignment.  [Feature #11537]
* parse.y (mlhs_node, lhs, attrset_gen): ditto.  keep mid
  non-attrset as the sign of safe navigation.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52234 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-23 01:49:38 +00:00
nobu a356fe1c35 Safe navigation operator
* compile.c (iseq_peephole_optimize): peephole optimization for
  branchnil jumps.
* compile.c (iseq_compile_each): generate save navigation operator
  code.
* insns.def (branchnil): new opcode to pop the tos and branch if
  it is nil.
* parse.y (NEW_QCALL, call_op, parser_yylex): parse token '.?'.
  [Feature #11537]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52214 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-22 06:30:12 +00:00
nobu a76fdea9fc parse.y: magic comment w/o indicators
* parse.y (parser_magic_comment): allow a sole magic comment without
  indicators, neither other non-space comments.  [Feature #8976]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52208 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-21 09:34:09 +00:00
nobu e21f1875b7 parse.y: fix ripper warnings
* parse.y (parser_nextc): send a warning to ripper, not to STDERR
  always.
* parse.y (rb_warn1, rb_warning1): move argument conversions to
  callers.  PRIsVALUE is not valid in String#%.

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@52122 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
2015-10-14 04:58:47 +00:00