Skip to content

[Feature] Allow parsing top-level yield in Ruby 3.3 #457

Open
@davidwessman

Description

@davidwessman

Hello, thank you for a great gem!

I am working on https://github.com/davidwessman/syntax_tree-erb and ran into some errors when upgrading to Ruby 3.3.

In ERB-template rendered by Rails calls to yield will not raise an error for top-level yield. Probably because Rails compile the templates somehow. When I parse the ruby-code in an ERB-template I parse each tag by itself.

This causes errors:

Ruby 3.2.4, syntax_tree 6.2.0

stree ast -e 'yield'
(program (statements ((yield nil))))

Ruby 3.3.1, syntax_tree 6.2.0

stree ast -e 'yield'  
Error: Invalid yield
> 1 | yield
    | ^

I am using the Ruby-api, SyntaxTree.parse("yield"), would there be anyway to add some support to allow the top-level yield?
Or do I need to wrap all the code I parse or something? That would make formatting much harder.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions