summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorEarlopain <14981592+Earlopain@users.noreply.github.com>2026-04-22 21:29:13 +0200
committergit <svn-admin@ruby-lang.org>2026-04-27 14:01:26 +0000
commit558c10413990cb08b7750895b572b0b59eed0d28 (patch)
tree2e9c20d13ab810b78c51aef2aff65dcefd7c6660 /test
parente7de4b3d755febfc48be3bda07559ca3121f15ae (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.txt5
-rw-r--r--test/prism/errors_test.rb9
-rw-r--r--test/prism/fixtures/3.3-4.0/end_block_exit.txt7
-rw-r--r--test/prism/fixtures/end_block_exit.txt3
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
+}