diff options
| author | Kevin Newton <kddnewton@gmail.com> | 2024-04-11 15:54:40 -0400 |
|---|---|---|
| committer | git <svn-admin@ruby-lang.org> | 2024-04-12 14:10:20 +0000 |
| commit | 4fc457e2b7fcaf78294d3315125926fb2e580f6d (patch) | |
| tree | 44bcd3c0ec85edede2cbf0acf5b4011deb19cec8 /test | |
| parent | 0924ff2d390084922fbcebada20b968fa3e8238c (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.rb | 72 |
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) |
