diff options
| author | Earlopain <14981592+Earlopain@users.noreply.github.com> | 2026-04-22 21:29:13 +0200 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2026-04-27 14:01:26 +0000 |
| commit | 558c10413990cb08b7750895b572b0b59eed0d28 (patch) | |
| tree | 2e9c20d13ab810b78c51aef2aff65dcefd7c6660 /test | |
| parent | e7de4b3d755febfc48be3bda07559ca3121f15ae (diff) | |
[ruby/prism] Reject `END { break }` for Ruby 4.0
For [Bug #20409]
https://github.com/ruby/prism/commit/4848eb344e
Diffstat (limited to 'test')
| -rw-r--r-- | test/prism/errors/4.1/end_block_exit.txt | 5 | ||||
| -rw-r--r-- | test/prism/errors_test.rb | 9 | ||||
| -rw-r--r-- | test/prism/fixtures/3.3-4.0/end_block_exit.txt | 7 | ||||
| -rw-r--r-- | test/prism/fixtures/end_block_exit.txt | 3 |
4 files changed, 23 insertions, 1 deletions
diff --git a/test/prism/errors/4.1/end_block_exit.txt b/test/prism/errors/4.1/end_block_exit.txt new file mode 100644 index 0000000000..f8fc59d1a3 --- /dev/null +++ b/test/prism/errors/4.1/end_block_exit.txt @@ -0,0 +1,5 @@ +END { + break + ^~~~~ Invalid break +} + diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb index 9a54203f74..9dd7fbe3fe 100644 --- a/test/prism/errors_test.rb +++ b/test/prism/errors_test.rb @@ -9,6 +9,11 @@ module Prism base = File.expand_path("errors", __dir__) filepaths = Dir[ENV.fetch("FOCUS", "**/*.txt"), base: base] + PARSE_Y_EXCLUDES = [ + # https://bugs.ruby-lang.org/issues/20409 + "#{base}/4.1/end_block_exit.txt" + ] + filepaths.each do |filepath| ruby_versions_for(filepath).each do |version| define_method(:"test_#{version}_#{File.basename(filepath, ".txt")}") do @@ -111,7 +116,9 @@ module Prism expected = File.read(filepath, binmode: true, external_encoding: Encoding::UTF_8) source = expected.lines.grep_v(/^\s*\^/).join.gsub(/\n*\z/, "") - refute_valid_syntax(source) if CURRENT_MAJOR_MINOR == version + if CURRENT_MAJOR_MINOR == version && !PARSE_Y_EXCLUDES.include?(filepath) + refute_valid_syntax(source) + end result = Prism.parse(source, version: version) errors = result.errors diff --git a/test/prism/fixtures/3.3-4.0/end_block_exit.txt b/test/prism/fixtures/3.3-4.0/end_block_exit.txt new file mode 100644 index 0000000000..53afa1e2f4 --- /dev/null +++ b/test/prism/fixtures/3.3-4.0/end_block_exit.txt @@ -0,0 +1,7 @@ +END { + return +} + +END { + break +} diff --git a/test/prism/fixtures/end_block_exit.txt b/test/prism/fixtures/end_block_exit.txt new file mode 100644 index 0000000000..1f64dcb6ed --- /dev/null +++ b/test/prism/fixtures/end_block_exit.txt @@ -0,0 +1,3 @@ +END { + next +} |
