diff options
| author | yui-knk <spiketeika@gmail.com> | 2023-10-10 21:06:54 +0900 |
|---|---|---|
| committer | Yuichiro Kaneko <spiketeika@gmail.com> | 2023-10-13 07:35:24 +0900 |
| commit | 2794a8fef65eb16767c2f46f8f5058c10b4591b9 (patch) | |
| tree | eb3c9acb6133587990cb10505c234809a6d6773f /test/ruby | |
| parent | dcee3cc6ce026707e2eb142b117de445b723eecc (diff) | |
[Bug #19919] Warn class variable assignment and constant declaration in condition
Diffstat (limited to 'test/ruby')
| -rw-r--r-- | test/ruby/test_parse.rb | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/test/ruby/test_parse.rb b/test/ruby/test_parse.rb index 959bfe8a5b..cc65f3b849 100644 --- a/test/ruby/test_parse.rb +++ b/test/ruby/test_parse.rb @@ -895,12 +895,14 @@ x = __ENCODING__ end def test_assign_in_conditional + # multiple assignment assert_warning(/`= literal' in conditional/) do eval <<-END, nil, __FILE__, __LINE__+1 (x, y = 1, 2) ? 1 : 2 END end + # instance variable assignment assert_warning(/`= literal' in conditional/) do eval <<-END, nil, __FILE__, __LINE__+1 if @x = true @@ -910,6 +912,71 @@ x = __ENCODING__ end END end + + # local variable assignment + assert_warning(/`= literal' in conditional/) do + eval <<-END, nil, __FILE__, __LINE__+1 + def m + if x = true + 1 + else + 2 + end + end + END + end + + # global variable assignment + assert_separately([], <<-RUBY) + assert_warning(/`= literal' in conditional/) do + eval <<-END, nil, __FILE__, __LINE__+1 + if $x = true + 1 + else + 2 + end + END + end + RUBY + + # dynamic variable assignment + assert_warning(/`= literal' in conditional/) do + eval <<-END, nil, __FILE__, __LINE__+1 + y = 1 + + 1.times do + if y = true + 1 + else + 2 + end + end + END + end + + # class variable assignment + assert_warning(/`= literal' in conditional/) do + eval <<-END, nil, __FILE__, __LINE__+1 + c = Class.new + class << c + if @@a = 1 + end + end + END + end + + # constant declaration + assert_separately([], <<-RUBY) + assert_warning(/`= literal' in conditional/) do + eval <<-END, nil, __FILE__, __LINE__+1 + if Const = true + 1 + else + 2 + end + END + end + RUBY end def test_literal_in_conditional |
