100 Commits

Author SHA1 Message Date
Mike Dalessio
2800d1fd37 [ruby/yarp] fix: unterminated % in arguments
https://github.com/ruby/yarp/commit/efb3102369
2023-08-18 12:51:14 +00:00
Takashi Kokubun
f50e814dae Resync YARP to https://github.com/ruby/yarp/commit/11ad3fb590 2023-08-17 10:01:57 -07:00
Takashi Kokubun
40002dd7dc Resync YARP 2023-08-17 09:58:56 -07:00
Takashi Kokubun
3873b1eb39 Resync YARP 2023-08-16 17:47:32 -07:00
HParker
a8c70ed2b4 [ruby/yarp] add a diagnostic for *rest in order after optional state
https://github.com/ruby/yarp/commit/908244ba12
2023-08-16 17:47:32 -07:00
Kevin Newton
bf723b21cc [ruby/yarp] More flip flop flags
Whenever you see a `not` or a `!`, the receiver of that method should
potentially be marked as a flip-flop.

https://github.com/ruby/yarp/commit/ba5977a40a
2023-08-16 17:47:32 -07:00
Kevin Newton
fb287fa425 [ruby/yarp] Support the flipflop flag
https://github.com/ruby/yarp/commit/6315890390
2023-08-16 17:47:32 -07:00
Jemma Issroff
86cc82a1ab [ruby/yarp] Improved comments, moved flags after type
https://github.com/ruby/yarp/commit/4815d77e82
2023-08-16 17:47:32 -07:00
Jemma Issroff
383c47f538 [ruby/yarp] Separate yp_node_flags_t from yp_node_type_t
Prior to this commit, we folded the flags into the type. This created
extra overhead when calculating the type and setting the flags. This
commit separates them.

https://github.com/ruby/yarp/commit/b783a5678c
2023-08-16 17:47:32 -07:00
Kevin Newton
89de544442 [ruby/yarp] Set constant path write node target type
https://github.com/ruby/yarp/commit/771f7ed789
2023-08-16 17:47:32 -07:00
Kevin Newton
ee885237f6 [ruby/yarp] Fix string concat parsing
https://github.com/ruby/yarp/commit/58f839a3eb
2023-08-16 17:47:32 -07:00
Kevin Newton
77e52735f0 [ruby/yarp] Fix warnings found from gcc-analyzer and clang-analyzer
https://github.com/ruby/yarp/commit/1f9a6e05c4
2023-08-16 17:47:32 -07:00
Thomas E. Enebo
96aebb4265 [ruby/yarp] Address PR comments
- odd whitespace
- a couple of name changes
- properly read uint32_t when not properly aligned

https://github.com/ruby/yarp/commit/3208ee3983
2023-08-16 17:47:32 -07:00
Kevin Newton
d6f9f3e498 [ruby/yarp] Rename RescueNode#exception to RescueNode#reference
https://github.com/ruby/yarp/commit/ad0eb4b2c3
2023-08-16 17:47:32 -07:00
Kevin Newton
a793260c15 [ruby/yarp] Also rework regexp lexer to check terminators properly
https://github.com/ruby/yarp/commit/4b157a8352
2023-08-16 17:47:32 -07:00
Kevin Newton
2ef54d3855 [ruby/yarp] Rework the list lexer to check terminators properly
https://github.com/ruby/yarp/commit/60315d0f13
2023-08-16 17:47:32 -07:00
Thomas E. Enebo
7257145320 [ruby/yarp] Clang beats gcc in pedantry
Accidentally declared int32_t and not uint32_t and it was caught
on macos.

https://github.com/ruby/yarp/commit/6581520793
2023-08-16 17:47:32 -07:00
Thomas E. Enebo
1e0749e032 [ruby/yarp] Addressed review comments.
Missing any tests and in fact this is untested so still a WIP.

https://github.com/ruby/yarp/commit/5411abd651
2023-08-16 17:47:32 -07:00
Kevin Newton
0004565a91 [ruby/yarp] Use yp_memchr in regexp parsing
https://github.com/ruby/yarp/commit/08081dd24f
2023-08-16 17:47:32 -07:00
Kevin Newton
3f64defe13 [ruby/yarp] Make sure lexing ? does not read off the end
https://github.com/ruby/yarp/commit/d694e3ebf2
2023-08-16 17:47:32 -07:00
Kevin Newton
1ea9e444ec [ruby/yarp] Fix memory leak from constant write node creation
https://github.com/ruby/yarp/commit/0071bee0bb
2023-08-16 17:47:32 -07:00
Kevin Newton
e66e60cf69 [ruby/yarp] Handle invalid multiple parameters
https://github.com/ruby/yarp/commit/2f83265653
2023-08-16 17:47:32 -07:00
Kevin Newton
7a1c497426 [ruby/yarp] Add constant write node
https://github.com/ruby/yarp/commit/a62f2f0153
2023-08-16 17:47:32 -07:00
Kevin Newton
9c61e0c831 [ruby/yarp] Ensure token cannot begin an expression
https://github.com/ruby/yarp/commit/837522217c
2023-08-16 17:47:32 -07:00
Kevin Newton
3d032cf3e8 [ruby/yarp] Simplify creation of numerics
https://github.com/ruby/yarp/commit/e5f6ffa23a
2023-08-16 17:47:32 -07:00
Benoit Daloze
b6f26c2e4a [ruby/yarp] Use common fields for yp_string_t
* Otherwise it is undefined behavior to access the field of another `.as`.
* Accessing the right `.as` field according mode would be extra overhead.

https://github.com/ruby/yarp/commit/7dc41ee803
2023-08-16 17:47:32 -07:00
Kevin Newton
31960a9627 [ruby/yarp] Handle missing block parameters
https://github.com/ruby/yarp/commit/bc9049418d
2023-08-16 17:47:32 -07:00
Kevin Newton
eca3b93437 [ruby/yarp] **nil can be a STAR_STAR token
https://github.com/ruby/yarp/commit/33b06f252c
2023-08-16 17:47:32 -07:00
Kevin Newton
e56da35637 [ruby/yarp] Handle invalid regexps more gracefully
https://github.com/ruby/yarp/commit/584a49f123
2023-08-16 17:47:32 -07:00
Kevin Newton
4c4e75c0de [ruby/yarp] Add error cases for ustar appearing in infix position
https://github.com/ruby/yarp/commit/8736c17359
2023-08-16 17:47:32 -07:00
Kevin Newton
cededf73dc [ruby/yarp] For errored % characters, use TOKEN_PERCENT and not TOKEN_STRING_BEGIN
https://github.com/ruby/yarp/commit/2ec671fe1e
2023-08-16 17:47:32 -07:00
Kevin Newton
242f3c3a77 [ruby/yarp] Don't read off the end when parsing % literals
https://github.com/ruby/yarp/commit/aff40871e6
2023-08-16 17:47:32 -07:00
Kevin Newton
45efbadba5 [ruby/yarp] Enable all of -wconversion
https://github.com/ruby/yarp/commit/638163f6c6
2023-08-16 17:47:32 -07:00
Kevin Newton
41e8ba01ae [ruby/yarp] Mark locations in the tree where newlines can occur
https://github.com/ruby/yarp/commit/479e835756
2023-08-16 17:47:32 -07:00
Kevin Newton
86b32dac92 [ruby/yarp] Handle pound terminator in isolation
https://github.com/ruby/yarp/commit/1cfce46107
2023-08-16 17:47:32 -07:00
Thomas E. Enebo
ede55edbd5 [ruby/yarp] Remove trailing whitespace
https://github.com/ruby/yarp/commit/04de272383
2023-08-16 17:47:32 -07:00
Thomas E. Enebo
76c77b5eca [ruby/yarp] WIP - Introduce contextually parsing programs vs evals
This is more or less the code I used in my POC in JRuby
to parse evals.  Evals depend on parent variable scopes
and will produce a different syntax tree.

Questions:
  1. How does MRI compile evals currently?  I cannot find anything.
  2. This passes in a char * of data.  It does not encode the
     variables we pass in because the system calling this already
     knows.  Is this adequate though?
  3. Can I get guidance on how best to test this?

https://github.com/ruby/yarp/commit/f441b6fd2c
2023-08-16 17:47:32 -07:00
Aaron Patterson
abce8583e2 [ruby/yarp] Fix heredocs inside %W and %w lists
The problem was that we were treating heredoc bodies as part of the %W
list because we didn't push the scanning cursor past the heredoc after
lexing out the here doc.  To fix this, we changed the whitespace
scanning function to quit scanning when it reaches a newline but only in
the case that a heredoc is present.

Additionally, we need to prevent double counting newlines in the case of
a heredoc.  For example:

```ruby
%W(<<foo 123)
foo
```

The newline after the `)` is counted as part of scanning the heredoc, so
we added logic to prevent double counting the newline when scanning the
rest of the %W list.

https://github.com/ruby/yarp/commit/eb090d8126

Co-authored-by: Jemma Issroff <jemmaissroff@gmail.com>
2023-07-20 14:58:11 +00:00
Jemma Issroff
84b5274143
[ruby/yarp] Resync YARP (#8098) 2023-07-19 16:15:01 -04:00
Jemma Issroff
a02f5eb56a
YARP resync (#8059) 2023-07-12 12:46:38 -04:00
Jemma Issroff
d62328251d [ruby/yarp] Remove yp_location_for_node in preference of yp_newline_list_line_column
https://github.com/ruby/yarp/commit/55aa813909
2023-07-11 15:49:42 +00:00
Jemma Issroff
53c5601565
[ruby/yarp] Fix endless method definitions binding power to accept args (#8051) 2023-07-10 10:54:12 -04:00
Jemma Issroff
9e3a5cc54f [ruby/yarp] Add a yp_location_for_node function to the C API
yp_location_for_node takes a parser and a node and returns the
location in a way that can be punned into ruby/ruby types

https://github.com/ruby/yarp/commit/75e06016a7
2023-07-07 17:46:47 +00:00
Jemma Issroff
06c2d3e0a0
Resync YARP (#8036)
It got out of sync again. After this re-sync, it should happen
cherry-picking automatically.
2023-07-06 13:26:26 -04:00
Jemma Issroff
bfb933371d Manual YARP resync 2023-07-05 16:58:55 -04:00
Takashi Kokubun
711cabec26 Sync ruby/yarp to 89a00203af 2023-06-22 09:23:07 -07:00
Jemma Issroff
e8fb84265c [ruby/yarp] Allow for block statements after elsif and else
https://github.com/ruby/yarp/commit/4560cab235
2023-06-22 09:20:40 -07:00
Kevin Newton
b879528e24 [ruby/yarp] Do not leak memory from lex modes
https://github.com/ruby/yarp/commit/df6661740c
2023-06-22 09:19:36 -07:00
Jemma Issroff
b0a3a6ade0 [ruby/yarp] Fix invalid unescape sequence error for lower w
https://github.com/ruby/yarp/commit/5a2c78367a
2023-06-21 18:40:25 +00:00
Jemma Issroff
cc7f765f2c [Feature #19741] Sync all files in yarp
This commit is the initial sync of all files from ruby/yarp
into ruby/ruby. Notably, it does the following:

* Sync all ruby/yarp/lib/ files to ruby/ruby/lib/yarp
* Sync all ruby/yarp/src/ files to ruby/ruby/yarp/
* Sync all ruby/yarp/test/ files to ruby/ruby/test/yarp
2023-06-21 11:25:39 -07:00