summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2024-04-11 15:54:40 -0400
committergit <svn-admin@ruby-lang.org>2024-04-12 14:10:20 +0000
commit4fc457e2b7fcaf78294d3315125926fb2e580f6d (patch)
tree44bcd3c0ec85edede2cbf0acf5b4011deb19cec8 /test
parent0924ff2d390084922fbcebada20b968fa3e8238c (diff)
[ruby/prism] Implement the void statement warning
https://github.com/ruby/prism/commit/802ff71cd4
Diffstat (limited to 'test')
-rw-r--r--test/prism/warnings_test.rb72
1 files changed, 67 insertions, 5 deletions
diff --git a/test/prism/warnings_test.rb b/test/prism/warnings_test.rb
index 5f1e746b52..ff9c306c99 100644
--- a/test/prism/warnings_test.rb
+++ b/test/prism/warnings_test.rb
@@ -24,15 +24,15 @@ module Prism
end
def test_equal_in_conditional
- assert_warning("if a = 1; end; a", "should be ==")
+ assert_warning("if a = 1; end; a = a", "should be ==")
end
def test_dot_dot_dot_eol
- assert_warning("foo...", "... at EOL")
+ assert_warning("_ = foo...", "... at EOL")
assert_warning("def foo(...) = bar ...", "... at EOL")
- assert_warning("foo... #", "... at EOL")
- assert_warning("foo... \t\v\f\n", "... at EOL")
+ assert_warning("_ = foo... #", "... at EOL")
+ assert_warning("_ = foo... \t\v\f\n", "... at EOL")
refute_warning("p foo...bar")
refute_warning("p foo... bar")
@@ -51,7 +51,7 @@ module Prism
end
def test_float_out_of_range
- assert_warning("1.0e100000", "out of range")
+ assert_warning("_ = 1.0e100000", "out of range")
end
def test_integer_in_flip_flop
@@ -125,6 +125,68 @@ module Prism
refute_warning("def foo; bar = 1; tap { baz = bar; baz }; end")
end
+ def test_void_statements
+ assert_warning("foo = 1; foo", "a variable in void")
+ assert_warning("@foo", "a variable in void")
+ assert_warning("@@foo", "a variable in void")
+ assert_warning("$foo", "a variable in void")
+ assert_warning("$+", "a variable in void")
+ assert_warning("$1", "a variable in void")
+
+ assert_warning("self", "self in void")
+ assert_warning("nil", "nil in void")
+ assert_warning("true", "true in void")
+ assert_warning("false", "false in void")
+
+ assert_warning("1", "literal in void")
+ assert_warning("1.0", "literal in void")
+ assert_warning("1r", "literal in void")
+ assert_warning("1i", "literal in void")
+ assert_warning(":foo", "literal in void")
+ assert_warning("\"foo\"", "literal in void")
+ assert_warning("\"foo\#{1}\"", "literal in void")
+ assert_warning("/foo/", "literal in void")
+ assert_warning("/foo\#{1}/", "literal in void")
+
+ assert_warning("Foo", "constant in void")
+ assert_warning("::Foo", ":: in void")
+ assert_warning("Foo::Bar", ":: in void")
+
+ assert_warning("1..2", ".. in void")
+ assert_warning("1..", ".. in void")
+ assert_warning("..2", ".. in void")
+ assert_warning("1...2", "... in void")
+ assert_warning("1...;", "... in void")
+ assert_warning("...2", "... in void")
+
+ assert_warning("defined?(foo)", "defined? in void")
+
+ assert_warning("1 + 1", "+ in void")
+ assert_warning("1 - 1", "- in void")
+ assert_warning("1 * 1", "* in void")
+ assert_warning("1 / 1", "/ in void")
+ assert_warning("1 % 1", "% in void")
+ assert_warning("1 | 1", "| in void")
+ assert_warning("1 ^ 1", "^ in void")
+ assert_warning("1 & 1", "& in void")
+ assert_warning("1 > 1", "> in void")
+ assert_warning("1 < 1", "< in void")
+
+ assert_warning("1 ** 1", "** in void")
+ assert_warning("1 <= 1", "<= in void")
+ assert_warning("1 >= 1", ">= in void")
+ assert_warning("1 != 1", "!= in void")
+ assert_warning("1 == 1", "== in void")
+ assert_warning("1 <=> 1", "<=> in void")
+
+ assert_warning("+foo", "+@ in void")
+ assert_warning("-foo", "-@ in void")
+
+ assert_warning("def foo; @bar; @baz; end", "variable in void")
+ refute_warning("def foo; @bar; end")
+ refute_warning("@foo", compare: false, scopes: [[]])
+ end
+
private
def assert_warning(source, message)