summaryrefslogtreecommitdiff
path: root/parse.y
AgeCommit message (Collapse)Author
2019-08-30Add back missing warning for duplicate keys in splatted hashesJeremy Evans
This reverts the changes to parse.y in a5b37262524ac39d2af13eea174486370a581c23 as they are not actually needed and cause the warning for duplicate hash keys to not be emitted. Notes: Merged: https://github.com/ruby/ruby/pull/2395
2019-08-30Make ripper support **nil syntaxJeremy Evans
The on_params hook will use :nil as the keyword rest argument. There is a new on_nokw_param hook as well. This fixes a type issue in the previous code, where an ID was passed where a VALUE was the declared type. The symbol :nil is passed instead of the id. Notes: Merged: https://github.com/ruby/ruby/pull/2395
2019-08-30Support **nil syntax for specifying a method does not accept keyword argumentsJeremy Evans
This syntax means the method should be treated as a method that uses keyword arguments, but no specific keyword arguments are supported, and therefore calling the method with keyword arguments will raise an ArgumentError. It is still allowed to double splat an empty hash when calling the method, as that does not pass any keyword arguments. Notes: Merged: https://github.com/ruby/ruby/pull/2395
2019-08-30Separate keyword arguments from positional argumentsYusuke Endoh
And, allow non-symbol keys as a keyword arugment Notes: Merged: https://github.com/ruby/ruby/pull/2395
2019-08-29Refined warnings against literal in flip-flopNobuyoshi Nakada
2019-08-29Revert "Add pipeline operator [Feature #15799]"Nobuyoshi Nakada
This reverts commits: * d365fd5a024254d7c105a62a015a7ea29ccf3e5d * d780c3662484d6072b3a6945b840049de72c2096 * aa7211836b769231a2a8ef6b6ec2fd0ec882ef29 * 043f010c28e82ea38978bf8ed885416f133b5b75 * bb4dd7c6af05c7821d572e2592ea3d0cc748d81f * 043f010c28e82ea38978bf8ed885416f133b5b75 * f169043d81524b5b529f2c1e9c35437ba5bc3a7a http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/94645
2019-08-27Directly mark compile options from the AST objectAaron Patterson
`rb_ast_t` holds a reference to this object, so it should mark the object. Currently it is relying on the `mark_ary` on `node_buffer` to ensure that the object stays alive. But since the array internals can move, this could cause a segv if compaction impacts the array.
2019-08-24Fix typosKazuhiro NISHIYAMA
2019-08-24Named numbered parameter indexesNobuyoshi Nakada
2019-08-09Fix parsing of mutiple assignment with rescue modifierJeremy Evans
Single assignment with rescue modifier applies rescue to the RHS: a = raise rescue 1 # a = (raise rescue 1) Previously, multiple assignment with rescue modifier applied rescue to the entire expression: a, b = raise rescue [1, 2] # (a, b = raise) rescue [1, 2] This makes multiple assignment with rescue modifier consistent with single assignment with rescue modifier, applying rescue to the RHS: a, b = raise rescue [1, 2] # a, b = (raise rescue [1, 2]) Implements [Feature #8239] Fixes [Bug #8279]
2019-08-04Revert "Revert "Fix dangling path name from fstring""Takashi Kokubun
This reverts commit 326c00b6f89e1c86e6fe29ab60da593eb6883a88. We also confirmed that test_gced_eval_location fails without the changes: https://travis-ci.org/ruby/ruby/builds/567417818 https://rubyci.org/logs/rubyci.s3.amazonaws.com/arch/ruby-master/log/20190804T000003Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/ubuntu1604/ruby-master/log/20190804T003005Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/icc-x64/ruby-master/log/20190804T000007Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/unstable10x/ruby-master/log/20190804T001806Z.fail.html.gz https://rubyci.org/logs/rubyci.s3.amazonaws.com/debian9/ruby-master/log/20190804T003005Z.fail.html.gz
2019-08-04Revert "Fix dangling path name from fstring"Takashi Kokubun
This reverts commit 5931857281ce45c1c277aa86d1588119ab00a955 temporarily, leaving `TestEval#test_gced_eval_location` to see the impact for missing the changes. That's because too many CIs are failing for `require` behaviors: http://rubyci.s3.amazonaws.com/freebsd11zfs/ruby-master/log/20190803T063004Z.fail.html.gz http://rubyci.s3.amazonaws.com/unstable10x/ruby-master/log/20190803T051806Z.fail.html.gz http://rubyci.s3.amazonaws.com/unstable11x/ruby-master/log/20190803T052406Z.fail.html.gz http://rubyci.s3.amazonaws.com/unstable10s/ruby-master/log/20190803T111909Z.fail.html.gz http://rubyci.s3.amazonaws.com/unstable11s/ruby-master/log/20190803T062506Z.fail.html.gz http://rubyci.s3.amazonaws.com/solaris11s-sunc/ruby-master/log/20190803T052505Z.fail.html.gz https://app.wercker.com/ruby/ruby/runs/mjit-test1/5d4512c921ca08000857936a?step=5d451305c2809c0008a3da76 https://app.wercker.com/ruby/ruby/runs/mjit-test2/5d4512c921ca080008579371?step=5d4513000421020007ca122d http://ci.rvm.jp/results/trunk_gcc4@silicon-docker/2177591 http://ci.rvm.jp/results/trunk_gcc6@silicon-docker/2177596 http://ci.rvm.jp/results/trunk_clang_60@silicon-docker/2178802 http://ci.rvm.jp/results/trunk-theap-asserts@silicon-docker/2177555 http://ci.rvm.jp/results/trunk-mjit-wait@silicon-docker/2178747 Mostly `TestRequire#test_race_exception` failures, but in ci.rvm.jp `require` inside rubyspec hangs very often.
2019-08-03Fix dangling path name from fstringNobuyoshi Nakada
* parse.y (yycompile): make sure in advance that the `__FILE__` object shares a fstring, to get rid of dangling path name. Fixed up 53e9908d8afc7f03109b0aafd1698ab35f512b05. [Bug #16041] * vm_eval.c (eval_make_iseq): ditto.
2019-08-03Show the location of `eval` which uses `__FILE__`/`__LINE__`Nobuyoshi Nakada
2019-08-02parse.y: make a warning for __FILE__ in eval by defaultYusuke Endoh
[Bug #4352]
2019-08-01Use predefined idOrNobuyoshi Nakada
2019-07-19Ripper#validate_object: check if the object is hiddenNobuyoshi Nakada
2019-07-19Moved RIPPER_DEBUG methods to Ripper from KernelNobuyoshi Nakada
2019-07-19Fixed build error with RIPPER_DEBUGNobuyoshi Nakada
2019-07-19Use Qnull instead of 0 and QundefNobuyoshi Nakada
2019-07-17Adjust indent [ci skip]Nobuyoshi Nakada
2019-07-15parse.y (here_document): remove dead codeYusuke Endoh
str is always zero when evaluating the branch. Found by Coverity Scan.
2019-07-15Add a /* fall through */ commentYusuke Endoh
2019-07-14Add a /* fall through */ commentYusuke Endoh
2019-07-11Revert "parse.y: Deprecate flip-flops"Nobuyoshi Nakada
This reverts commit bae638ad5b782c44c80efe33834cb9039279af46. [Feature #5400]
2019-07-10Removed duplicate assignmentNobuyoshi Nakada
This `last_state` is set to `lex.state` just before the `switch` statement, and `token_flush` nor `nextc` never change the state.
2019-07-08Check indent of `end` against `else` if presentNobuyoshi Nakada
2019-07-07Message to pipe should end with a newlineNobuyoshi Nakada
2019-07-07Enable indentation warning against `if` just after `else`Nobuyoshi Nakada
```ruby if false puts 'false' else if true puts 'true' end # -:5: warning: mismatched indentations at 'end' with 'if' at 3 end ``` [Feature #15990]
2019-07-07Renamed column in token_info to indentNobuyoshi Nakada
2019-07-05Multiple codepoints are not allowed at single character literalNobuyoshi Nakada
It has unintentionally passed since 2.5.
2019-07-05Fix a typoKazuhiro NISHIYAMA
2019-07-04Do not dispatch a nil token in ripperNobuyoshi Nakada
As a comment token includes the newline, so delayed newline token just follows it should not be dispatched. [Bug #11485] Co-Authored-By: Jeremy Evans <code@jeremyevans.net>
2019-06-30Hoisted out f_rest_margNobuyoshi Nakada
* parse.y (f_rest_marg): extract named and unnamed rest parameter in parenthesized method arguments, and should not be warned as unused.
2019-06-29Should not warn massign parameters as unusedNobuyoshi Nakada
2019-06-27Omit `EXPR_` prefix to show lex_stateNobuyoshi Nakada
2019-06-27Fix ripper fatalNobuyoshi Nakada
* parse.y (parser_yylex): return END_OF_INPUT at unterminated here document instead of an error. [Bug #15962]
2019-06-17Fix wrong "void value expression" errorNobuyoshi Nakada
* parse.y (value_expr_check): `then` or `else` only `if` is not a void value expression, as the counterpart is evaluated as `nil`. [Bug #15932]
2019-06-17Fix wrong "void value expression" errorNobuyoshi Nakada
* parse.y (value_expr_check): if either of `then` or `else` statements is not a void value expression, the whole `if` is not also a void value expression. [Bug #15932]
2019-06-17Support Bison 3Nobuyoshi Nakada
2019-06-16Fix memory leakNobuyoshi Nakada
* string.c (str_replace_shared_without_enc): free previous buffer before replaced. * parse.y (gettable): make sure in advance that the `__FILE__` object shares a fstring, to get rid of replacement with the fstring later. TODO: this hack may be needed in other places. [Bug #15916] Co-Authored-By: luke-gru (Luke Gruber) <luke.gru@gmail.com>
2019-06-15Revert github/pull/2230, commit missNobuyoshi Nakada
2019-06-15Prefer `enum yytokentype` to intNobuyoshi Nakada
2019-06-15Multiline method chain with leading dot works for blank linesJosh Cheek
2019-06-15Remove blank line I accidentally addedJosh Cheek
2019-06-15Rename LINEND to EMPTYLNJosh Cheek
2019-06-15Omg, it works!Josh Cheek
I'll rename it and squash this commit later, just wanted to make sure I couldn't lose it (took a long time to come up with).
2019-06-14An operator is not allowed just after `|>`Nobuyoshi Nakada
https://twitter.com/yukihiro_matz/status/1139454774640726019
2019-06-13Continue to the next line beginning with a pipelineNobuyoshi Nakada
2019-06-13parse.y: moved pipeline to exprNobuyoshi Nakada
To allow arguments without parentheses.