Earlopain
5874b12d56
Bump prism version
2026-06-23 11:27:54 -04:00
Takashi Kokubun
d282e76fb6
Bump Prism to v1.5.2
...
[Backport #21187 ]
2025-12-08 15:30:35 -08:00
Takashi Kokubun
9c65da0145
Bump Prism version to 1.5.1 ( #14549 )
2025-09-13 20:53:54 -07:00
Takashi Kokubun
52b3f006cb
Bump Prism version to 1.5.0
2025-09-12 14:30:16 -07:00
Alan Wu
b97a159dd9
Bump PRISM version number to avoid collision with RubyGems version
2025-08-27 09:07:32 -07:00
Aaron Patterson
1f421d092b
When reading from stdin, put a wrapper around the IO object
...
The purpose of this commit is to fix Bug #21188 . We need to detect when
stdin has run in to an EOF case. Unfortunately we can't _call_ the eof
function on IO because it will block.
Here is a short script to demonstrate the issue:
```ruby
x = STDIN.gets
puts x
puts x.eof?
```
If you run the script, then type some characters (but _NOT_ a newline),
then hit Ctrl-D twice, it will print the input string. Unfortunately,
calling `eof?` will try to read from STDIN again causing us to need a
3rd Ctrl-D to exit the program.
Before introducing the EOF callback to Prism, the input loop looked
kind of like this:
```ruby
loop do
str = STDIN.gets
process(str)
if str.nil?
p :DONE
end
end
```
Which required 3 Ctrl-D to exit. If we naively changed it to something
like this:
```ruby
loop do
str = STDIN.gets
process(str)
if STDIN.eof?
p :DONE
end
end
```
It would still require 3 Ctrl-D because `eof?` would block. In this
patch, we're wrapping the IO object, checking the buffer for a newline
and length, and then using that to simulate a non-blocking eof? method.
This commit wraps STDIN and emulates a non-blocking `eof` function.
[Backport #21188 ]
2025-08-27 09:07:32 -07:00
1e3d24a0f4
[ruby/prism] Accept a newline after the defined? keyword [Backport #21197 ] ( #13327 )
...
* [ruby/prism] Accept a newline after the defined? keyword
[Bug #21197 ]
https://github.com/ruby/prism/commit/22be955ce9
* Fix a compilation error
Co-authored-by: Stan Lo <stan001212@gmail.com >
---------
Co-authored-by: Kevin Newton <kddnewton@gmail.com >
Co-authored-by: Stan Lo <stan001212@gmail.com >
2025-07-09 14:51:32 -07:00
Takashi Kokubun
1c23c30953
Revert "merge revision(s) 052794bfe1: [Backport #21197 ]"
...
This reverts commit e630a0f7ae .
2025-04-14 16:29:03 +09:00
Takashi Kokubun
e630a0f7ae
merge revision(s) 052794bfe1: [Backport #21197 ]
...
[ruby/prism] Accept a newline after the defined? keyword
[Bug #21197 ]
https://github.com/ruby/prism/commit/22be955ce9
2025-04-14 16:18:37 +09:00
Takashi Kokubun
d3fc56dcfa
merge revision(s) 127325a4ba: [Backport #21117 ]
...
[ruby/prism] No writing to numbered parameters
Fixes [Bug #21117 ]
https://github.com/ruby/prism/commit/19d4bab5a0
2025-02-13 21:17:04 -08:00
Takashi Kokubun
c989d90754
merge revision(s) 117d6e145a: [Backport #21027 ]
...
[ruby/prism] Fix `not` receiver
`not foo` should be `!foo`
`not()` should be `!nil`
Fixes [Bug #21027 ]
https://github.com/ruby/prism/commit/871ed4b462
2025-02-13 17:54:41 -08:00
Kevin Newton
8eaa976cbe
[ruby/prism] Fix up regression in ruby parser translation
...
https://github.com/ruby/prism/commit/b283a72c88
2024-12-16 10:51:22 -05:00
Kevin Newton
2ab1b07b84
[ruby/prism] Simplify srange_find in parser compiler
...
https://github.com/ruby/prism/commit/34efacc618
2024-12-16 10:51:22 -05:00
Kevin Newton
cc967a470b
[ruby/prism] Add do keyword tracking for While/Until
...
https://github.com/ruby/prism/commit/9686897290
2024-12-16 10:51:22 -05:00
Kevin Newton
737d674120
[ruby/prism] Bump to v1.2.0
...
https://github.com/ruby/prism/commit/817a8e39d9
2024-12-16 10:51:22 -05:00
Kevin Newton
4931220cbf
[ruby/prism] Bump to v1.1.0
...
https://github.com/ruby/prism/commit/f80026883d
2024-12-16 10:51:22 -05:00
Kevin Newton
34e68548d4
[ruby/prism] Bump typechecking deps
...
https://github.com/ruby/prism/commit/230c8b8a48
2024-12-11 19:50:20 +00:00
Benoit Daloze
6c123649cd
[ruby/prism] Use RbConfig to locate libprism and headers when it is a default gem
...
* This is notably necessary on TruffleRuby, which is updating to Ruby 3.3 which introduces Prism as a default gem.
* Using the existing path is not an option as it would end up in truffleruby/lib/build/libprism.so and
"truffleruby/lib/include/#{header}" which are not good places for such files.
https://github.com/ruby/prism/commit/5d16473e69
2024-11-12 14:20:39 +00:00
Kevin Newton
550ae745f6
[ruby/prism] Relocation
...
https://github.com/ruby/prism/commit/5ea6042408
2024-10-16 15:56:01 +00:00
Kevin Newton
5f62522d5b
[ruby/prism] Prism::StringQuery
...
Introduce StringQuery to provide methods to access some metadata
about the Ruby lexer.
https://github.com/ruby/prism/commit/d3f55b67b9
2024-10-11 19:34:57 +00:00
Kevin Newton
7a198af7cd
[ruby/prism] Prism::CodeUnitsCache
...
Calculating code unit offsets for a source can be very expensive,
especially when the source is large. This commit introduces a new
class that wraps the source and desired encoding into a cache that
reuses pre-computed offsets. It performs quite a bit better.
There are still some problems with this approach, namely character
boundaries and the fact that the cache is unbounded, but both of
these may be addressed in subsequent commits.
https://github.com/ruby/prism/commit/2e3e1a4d4d
2024-10-10 18:02:27 +00:00
Kevin Newton
e39e582594
[ruby/prism] Attempt to assume binary is UTF-8
...
https://github.com/ruby/prism/commit/343197e4ff
2024-10-09 15:42:23 +00:00
Vinicius Stock and Kevin Newton
e50754fcfa
[ruby/prism] Avoid breaking code units offset on binary encoding
...
https://github.com/ruby/prism/commit/25a4cf6794
Co-authored-by: Kevin Newton <kddnewton@users.noreply.github.com >
2024-10-09 14:07:10 +00:00
Earlopain
66124cdb17
[ruby/prism] Use partial_script for the parser translators
...
Followup to https://github.com/ruby/prism/pull/3079
https://github.com/ruby/prism/commit/68f434e356
2024-10-03 12:52:02 +00:00
Kevin Newton
b97ff7dfda
[ruby/prism] Fix up lex difference when ~ heredoc with 0 dedent and line continuation
...
https://github.com/ruby/prism/commit/84a9251915
2024-09-25 18:35:05 +00:00
Kevin Newton
414a848cc6
[ruby/prism] Accept version shorthand like 3.4
...
https://github.com/ruby/prism/commit/098f1c4607
2024-09-24 13:21:36 +00:00
Benoit Daloze
ed4a55fc4d
[ruby/prism] Accept all 3.3.x and 3.4.x Ruby versions for Prism.parse
...
https://github.com/ruby/prism/commit/a4fcd5339a
2024-09-24 12:24:19 +00:00
Koichi ITO
75ed086348
[ruby/prism] Fix kDO_LAMBDA token incompatibility for Prism::Translation::Parser::Lexer
...
## Summary
This PR fixes `kDO_LAMBDA` token incompatibility between Parser gem and `Prism::Translation::Parser` for lambda `do` block.
### Parser gem (Expected)
Returns `kDO_LAMBDA` token:
```console
$ bundle exec ruby -Ilib -rparser/ruby33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "-> do end"; p Parser::Ruby33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 0...2>]], [:kDO_LAMBDA, ["do", #<Parser::Source::Range example.rb 3...5>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 6...9>]]]
```
### `Prism::Translation::Parser` (Actual)
Previously, the parser returned `kDO` token when parsing the following:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "-> do end"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 0...2>]], [:kDO, ["do", #<Parser::Source::Range example.rb 3...5>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 6...9>]]]
```
After the update, the parser now returns `kDO_LAMBDA` token for the same input:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "-> do end"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 0...2>]], [:kDO_LAMBDA, ["do", #<Parser::Source::Range example.rb 3...5>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 6...9>]]]
```
## Additional Information
Unfortunately, this kind of edge case doesn't work as expected; `kDO` is returned instead of `kDO_LAMBDA`.
However, since `kDO` is already being returned in this case, there is no change in behavior.
### Parser gem
Returns `tLAMBDA` token:
```console
$ bundle exec ruby -Ilib -rparser/ruby33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "-> (foo = -> (bar) {}) do end"; p Parser::Ruby33.new.tokenize(buf)[2]'
ruby 3.3.5 (2024-09-03 revision https://github.com/ruby/prism/commit/ef084cc8f4 ) [x86_64-darwin23]
[[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 0...2>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 3...4>]],
[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 4...7>]], [:tEQL, ["=", #<Parser::Source::Range example.rb 8...9>]],
[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 10...12>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 13...14>]],
[:tIDENTIFIER, ["bar", #<Parser::Source::Range example.rb 14...17>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 17...18>]],
[:tLAMBEG, ["{", #<Parser::Source::Range example.rb 19...20>]], [:tRCURLY, ["}", #<Parser::Source::Range example.rb 20...21>]],
[:tRPAREN, [")", #<Parser::Source::Range example.rb 21...22>]], [:kDO_LAMBDA, ["do", #<Parser::Source::Range example.rb 23...25>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 26...29>]]]
```
### `Prism::Translation::Parser`
Returns `kDO` token:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "-> (foo = -> (bar) {}) do end"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.3.5 (2024-09-03 revision https://github.com/ruby/prism/commit/ef084cc8f4 ) [x86_64-darwin23]
[[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 0...2>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 3...4>]],
[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 4...7>]], [:tEQL, ["=", #<Parser::Source::Range example.rb 8...9>]],
[:tLAMBDA, ["->", #<Parser::Source::Range example.rb 10...12>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 13...14>]],
[:tIDENTIFIER, ["bar", #<Parser::Source::Range example.rb 14...17>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 17...18>]],
[:tLAMBEG, ["{", #<Parser::Source::Range example.rb 19...20>]], [:tRCURLY, ["}", #<Parser::Source::Range example.rb 20...21>]],
[:tRPAREN, [")", #<Parser::Source::Range example.rb 21...22>]], [:kDO, ["do", #<Parser::Source::Range example.rb 23...25>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 26...29>]]]
```
As the intention is not to address such special cases at this point, a comment has been left indicating that this case still returns `kDO`.
In other words, `kDO_LAMBDA` will now be returned except for edge cases after this PR.
https://github.com/ruby/prism/commit/2ee480654c
2024-09-20 17:17:21 +00:00
Kevin Newton
f515a1ab4b
[ruby/prism] Introduce partial_script option
...
https://github.com/ruby/prism/commit/b28877fa4f
2024-09-20 15:42:12 +00:00
Kevin Newton
2ea1950510
[ruby/prism] Do not leak explicit encoding
...
Fixes [Bug #20744 ]
https://github.com/ruby/prism/commit/f1b8b1b2a2
2024-09-16 18:57:54 +00:00
Kevin Newton
f85efc9748
[ruby/prism] Expose main_script in serialization API
...
https://github.com/ruby/prism/commit/0b527ca93f
2024-09-13 19:13:21 +00:00
Kevin Newton
38ba15beed
[ruby/prism] Check errno for parsing directory
...
https://github.com/ruby/prism/commit/d68ea29d04
2024-09-12 13:43:04 -04:00
Koichi ITO
7a65334528
[ruby/prism] Fix a token incompatibility for Prism::Translation::Parser::Lexer
...
This PR fixes a token incompatibility between Parser gem and `Prism::Translation::Parser` for double splat argument.
## Parser gem (Expected)
Returns `tDSTAR` token:
```console
$ bundle exec ruby -Ilib -rparser/ruby33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "def f(**foo) end"; p Parser::Ruby33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:kDEF, ["def", #<Parser::Source::Range example.rb 0...3>]], [:tIDENTIFIER, ["f", #<Parser::Source::Range example.rb 4...5>]],
[:tLPAREN2, ["(", #<Parser::Source::Range example.rb 5...6>]], [:tDSTAR, ["**", #<Parser::Source::Range example.rb 6...8>]],
[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 8...11>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 11...12>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 13...16>]]]
```
## `Prism::Translation::Parser` (Actual)
Previously, the parser returned `tPOW` token when parsing the following:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "def f(**foo) end"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:kDEF, ["def", #<Parser::Source::Range example.rb 0...3>]], [:tIDENTIFIER, ["f", #<Parser::Source::Range example.rb 4...5>]],
[:tLPAREN2, ["(", #<Parser::Source::Range example.rb 5...6>]], [:tPOW, ["**", #<Parser::Source::Range example.rb 6...8>]],
[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 8...11>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 11...12>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 13...16>]]]
```
After the update, the parser now returns `tDSTAR` token for the same input:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "def f(**foo) end"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:kDEF, ["def", #<Parser::Source::Range example.rb 0...3>]], [:tIDENTIFIER, ["f", #<Parser::Source::Range example.rb 4...5>]],
[:tLPAREN2, ["(", #<Parser::Source::Range example.rb 5...6>]], [:tDSTAR, ["**", #<Parser::Source::Range example.rb 6...8>]],
[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 8...11>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 11...12>]],
[:kEND, ["end", #<Parser::Source::Range example.rb 13...16>]]]
```
With this change, the following code could be removed from test/prism/ruby/parser_test.rb:
```diff
- when :tPOW
- actual_token[0] = expected_token[0] if expected_token[0] == :tDSTAR
```
`tPOW` is the token type for the behavior of `a ** b`, and its behavior remains unchanged:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "a ** b"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tIDENTIFIER, ["a", #<Parser::Source::Range example.rb 0...1>]], [:tPOW, ["**", #<Parser::Source::Range example.rb 2...4>]],
[:tIDENTIFIER, ["b", #<Parser::Source::Range example.rb 5...6>]]]
```
https://github.com/ruby/prism/commit/66bde35a44
2024-09-09 19:01:30 +00:00
Koichi ITO
4774284124
[ruby/prism] Fix a token incompatibility for Prism::Translation::Parser::Lexer
...
This PR fixes a token incompatibility between Parser gem and `Prism::Translation::Parser` for left parenthesis.
## Parser gem (Expected)
Returns `tLPAREN2` token:
```console
$ bundle exec ruby -Ilib -rparser/ruby33 \
-ve 'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "foo(:bar)"; p Parser::Ruby33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 0...3>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 3...4>]],
[:tSYMBOL, ["bar", #<Parser::Source::Range example.rb 4...8>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 8...9>]]]
```
## `Prism::Translation::Parser` (Actual)
Previously, the parser returned `tLPAREN` token when parsing the following:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "foo(:bar)"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 0...3>]], [:tLPAREN, ["(", #<Parser::Source::Range example.rb 3...4>]],
[:tSYMBOL, ["bar", #<Parser::Source::Range example.rb 4...8>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 8...9>]]]
```
After the update, the parser now returns `tLPAREN2` token for the same input:
```console
$ bundle exec ruby -Ilib -rprism -rprism/translation/parser33 -ve \
'buf = Parser::Source::Buffer.new("example.rb"); buf.source = "foo(:bar)"; p Prism::Translation::Parser33.new.tokenize(buf)[2]'
ruby 3.4.0dev (2024-09-01T11:00:13Z master https://github.com/ruby/prism/commit/eb144ef91e ) [x86_64-darwin23]
[[:tIDENTIFIER, ["foo", #<Parser::Source::Range example.rb 0...3>]], [:tLPAREN2, ["(", #<Parser::Source::Range example.rb 3...4>]],
[:tSYMBOL, ["bar", #<Parser::Source::Range example.rb 4...8>]], [:tRPAREN, [")", #<Parser::Source::Range example.rb 8...9>]]]
```
The `PARENTHESIS_LEFT` token in Prism is classified as either `tLPAREN` or `tLPAREN2` in the Parser gem.
The tokens that were previously all classified as `tLPAREN` are now also classified to `tLPAREN2`.
With this change, the following code could be removed from `test/prism/ruby/parser_test.rb`:
```diff
- when :tLPAREN
- actual_token[0] = expected_token[0] if expected_token[0] == :tLPAREN2
```
https://github.com/ruby/prism/commit/04d6f3478d
2024-09-07 22:36:38 +00:00
ydah
dbb8f97eaa
[ruby/prism] essentialy ==> essentially
...
https://github.com/ruby/prism/commit/9c68c01bcd
2024-09-04 13:13:37 +00:00
Koichi ITO
af65b41e07
[ruby/prism] Remove deprecated lib/prism/translation/parser/rubocop.rb file
...
Follow up https://github.com/ruby/prism/pull/2558 .
This PR removes deprecated lib/prism/translation/parser/rubocop.rb file.
The file was a workaround to allow setting `TargetRubyVersion: 80_82_73_83_77.xx` until Prism (`Prism::Translation::Parser`) is integrated into RuboCop.
RuboCop already supports Prism (`Prism::Translation::Parser`) as of https://github.com/rubocop/rubocop/pull/12724 .
It has been several months since the file was deprecated in ruby/prism#2558 .
And, yesterday, Prism 1.0.0 was released, but perhaps the file should have been removed before then.
Although this might be seen as incompatible with semver 1.0.0, I think there is no longer a reason to keep the file.
https://github.com/ruby/prism/commit/646a10270e
2024-08-29 20:04:55 +00:00
Kevin Newton
ad737a8d0f
[PRISM] Sync version update
2024-08-28 15:43:32 -04:00
Kevin Newton
45f32e3a50
[ruby/prism] Reverse-sync ruby/ruby and deprecate old fields
...
https://github.com/ruby/prism/commit/bc21c9f3ee
2024-08-28 19:07:16 +00:00
Kevin Newton
417bb8d4fd
[PRISM] Field renaming
...
Rename some fields that do not quite make sense.
* CaseMatchNode#consequent -> CaseMatchNode#else_clause
* CaseNode#consequent -> CaseNode#else_clause
* IfNode#consequent -> IfNode#subsequent
* RescueNode#consequent -> RescueNode#subsequent
* UnlessNode#consequent -> UnlessNode#else_clause
2024-08-28 15:06:53 -04:00
Koichi ITO
88954a0e9a
[ruby/prism] Tweak inspect representation of Prism::Location
...
This PR tweaks inspect representation of `Prism::Location`.
## Before
During debugging, the meaning of `@location=https://github.com/ruby/prism/commit/21474836481 ` was unclear:
```console
$ ruby -Ilib -rprism -e 'p Prism.lex("puts :hi").value.map(&:first)[1]'
#<Prism::Token:0x000000010cd74e40 @source=#<Prism::ASCIISource:0x000000010cb5f808 @source="puts :hi", @start_line=1, @offsets=[0]>,
@type=:SYMBOL_BEGIN, @value=":", @location=https://github.com/ruby/prism/commit/21474836481 >
```
## After
This PR clarifies the contents of the location object, aligning with what I think user expects:
```console
$ ruby -Ilib -rprism -e 'p Prism.lex("puts :hi").value.map(&:first)[1]'
#<Prism::Token:0x000000010e174d50 @source=#<Prism::ASCIISource:0x000000010df5efe8 @source="puts :hi", @start_line=1, @offsets=[0]>,
@type=:SYMBOL_BEGIN, @value=":", @location=#<Prism::Location @start_offset=5 @length=1 start_line=1>>
```
Although it is uncertain whether Prism will accept this change in the inspect representation, it is submitted here as a suggestion.
https://github.com/ruby/prism/commit/e7421ce1c5
2024-08-14 16:28:43 +00:00
Kevin Newton
21b4c14971
[ruby/prism] (ruby_parser) Handle bare string in implicit concat
...
https://github.com/ruby/prism/commit/afc7c9344a
2024-07-11 19:46:50 +00:00
Kevin Newton
3c3be9c6b2
[ruby/prism] (ruby_parser) Match match3 nodes for regular expressions
...
https://github.com/ruby/prism/commit/47cb73ce69
2024-07-11 19:46:50 +00:00
Kevin Newton
4c696597b7
[ruby/prism] (ruby_parser) Reverse associativity of and and or nodes
...
https://github.com/ruby/prism/commit/073e8ba307
2024-07-11 19:46:49 +00:00
Kevin Newton
aa473489a2
[ruby/prism] Various cleanup for initializers and typechecks
...
https://github.com/ruby/prism/commit/86cf82794a
2024-07-11 14:25:54 -04:00
Kevin Newton
2bf9ae3fa1
[ruby/prism] Add node ids to nodes
...
https://github.com/ruby/prism/commit/bf16ade7f9
2024-07-11 14:25:54 -04:00
Kevin Newton
39dcfe26ee
[ruby/prism] Move Node#type and Node::type documentation
...
https://github.com/ruby/prism/commit/08a71f6259
2024-07-11 14:25:54 -04:00
Kevin Newton
687be43c79
[ruby/prism] Expose flags on every node type
...
https://github.com/ruby/prism/commit/9f12a56fd6
2024-07-11 14:25:54 -04:00
Kevin Newton
ca48fb76fb
[ruby/prism] Move location to second position for node initializers
...
https://github.com/ruby/prism/commit/4cc0eda4ca
2024-07-11 14:25:54 -04:00
Kevin Newton
678dd769e5
[ruby/prism] Reconfigure error tests
...
https://github.com/ruby/prism/commit/fb7e1ebb7f
2024-07-11 14:25:54 -04:00
Kevin Newton
24f48382bc
[ruby/prism] (parser) Fix up tokens for empty symbol
...
https://github.com/ruby/prism/commit/5985ab7687
2024-06-18 21:18:39 -04:00