diff options
-rw-r--r-- | parse.y | 4 | ||||
-rw-r--r-- | test/ruby/test_syntax.rb | 6 |
2 files changed, 7 insertions, 3 deletions
@@ -11758,6 +11758,7 @@ cond0(struct parser_params *p, NODE *node, enum cond_type type, const YYLTYPE *l break; case NODE_DSYM: + warn_symbol: SWITCH_BY_COND_TYPE(type, warning, "symbol ") break; @@ -11770,6 +11771,9 @@ cond0(struct parser_params *p, NODE *node, enum cond_type type, const YYLTYPE *l node->nd_lit == Qfalse) { /* booleans are OK, e.g., while true */ } + else if (SYMBOL_P(node->nd_lit)) { + goto warn_symbol; + } else { SWITCH_BY_COND_TYPE(type, warning, "") } diff --git a/test/ruby/test_syntax.rb b/test/ruby/test_syntax.rb index bf59ee5379..667eb205dc 100644 --- a/test/ruby/test_syntax.rb +++ b/test/ruby/test_syntax.rb @@ -1061,16 +1061,16 @@ eom end def test_warning_literal_in_condition - assert_warn(/literal in condition/) do + assert_warn(/string literal in condition/) do eval('1 if ""') end - assert_warn(/literal in condition/) do + assert_warn(/regex literal in condition/) do eval('1 if //') end assert_warning(/literal in condition/) do eval('1 if 1') end - assert_warning(/literal in condition/) do + assert_warning(/symbol literal in condition/) do eval('1 if :foo') end assert_warning(/symbol literal in condition/) do |