summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorHaldun Bayhantopcu <haldun@github.com>2024-02-01 08:09:56 +0100
committergit <svn-admin@ruby-lang.org>2024-02-01 16:48:09 +0000
commit67c5690a6d29e861fcb8522dc4213f9d26d3aab6 (patch)
tree52c282a733a26d57be236b34b63513355b9c3ac5 /test
parentf36c61d27fcdc47d4aa34e8a3b52590aac08bb69 (diff)
[ruby/prism] Check literals for receiver
https://github.com/ruby/prism/commit/56441b08e7
Diffstat (limited to 'test')
-rw-r--r--test/prism/errors_test.rb46
1 files changed, 46 insertions, 0 deletions
diff --git a/test/prism/errors_test.rb b/test/prism/errors_test.rb
index 62e72ea16a..c65fff5167 100644
--- a/test/prism/errors_test.rb
+++ b/test/prism/errors_test.rb
@@ -2087,6 +2087,52 @@ module Prism
assert_errors expression(source), source, errors, compare_ripper: false
end
+ def test_singleton_method_for_literals
+ source = <<~'RUBY'
+ def (1).g; end
+ def ((a; 1)).foo; end
+ def ((return; 1)).bar; end
+ def (((1))).foo; end
+ def (__FILE__).foo; end
+ def (__ENCODING__).foo; end
+ def (__LINE__).foo; end
+ def ("foo").foo; end
+ def (3.14).foo; end
+ def (3.14i).foo; end
+ def (:foo).foo; end
+ def (:'foo').foo; end
+ def (:'f{o}').foo; end
+ def ('foo').foo; end
+ def ("foo").foo; end
+ def ("#{fo}o").foo; end
+ def (/foo/).foo; end
+ def (/f#{oo}/).foo; end
+ def ([1]).foo; end
+ RUBY
+ errors = [
+ ["cannot define singleton method for literals", 5..6],
+ ["cannot define singleton method for literals", 24..25],
+ ["cannot define singleton method for literals", 51..52],
+ ["cannot define singleton method for literals", 71..72],
+ ["cannot define singleton method for literals", 90..98],
+ ["cannot define singleton method for literals", 114..126],
+ ["cannot define singleton method for literals", 142..150],
+ ["cannot define singleton method for literals", 166..171],
+ ["cannot define singleton method for literals", 187..191],
+ ["cannot define singleton method for literals", 207..212],
+ ["cannot define singleton method for literals", 228..232],
+ ["cannot define singleton method for literals", 248..254],
+ ["cannot define singleton method for literals", 270..277],
+ ["cannot define singleton method for literals", 293..298],
+ ["cannot define singleton method for literals", 314..319],
+ ["cannot define singleton method for literals", 335..343],
+ ["cannot define singleton method for literals", 359..364],
+ ["cannot define singleton method for literals", 380..388],
+ ["cannot define singleton method for literals", 404..407]
+ ]
+ assert_errors expression(source), source, errors, compare_ripper: false
+ end
+
private
def assert_errors(expected, source, errors, compare_ripper: RUBY_ENGINE == "ruby")