summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--parse.y4
-rw-r--r--test/ruby/test_syntax.rb6
2 files changed, 7 insertions, 3 deletions
diff --git a/parse.y b/parse.y
index 189731b45c..d7261a008d 100644
--- a/parse.y
+++ b/parse.y
@@ -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