[Bug #20219] gettable
returns NULL on error
This commit is contained in:
parent
5f733a1ae7
commit
23b8337cd1
5
parse.y
5
parse.y
@ -5879,7 +5879,10 @@ p_var_ref : '^' tIDENTIFIER
|
||||
{
|
||||
/*%%%*/
|
||||
NODE *n = gettable(p, $2, &@$);
|
||||
if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
|
||||
if (!n) {
|
||||
n = NEW_ERROR(&@$);
|
||||
}
|
||||
else if (!(nd_type_p(n, NODE_LVAR) || nd_type_p(n, NODE_DVAR))) {
|
||||
compile_error(p, "%"PRIsVALUE": no such local variable", rb_id2str($2));
|
||||
}
|
||||
$$ = n;
|
||||
|
@ -381,6 +381,7 @@ class TestSyntax < Test::Unit::TestCase
|
||||
assert_syntax_error("def foo(var: var) var end", message)
|
||||
assert_syntax_error("def foo(var: bar(var)) var end", message)
|
||||
assert_syntax_error("def foo(var: bar {var}) var end", message)
|
||||
assert_syntax_error("def foo(var: (1 in ^var)); end", message)
|
||||
|
||||
o = Object.new
|
||||
assert_warn("") do
|
||||
@ -446,6 +447,7 @@ class TestSyntax < Test::Unit::TestCase
|
||||
assert_syntax_error("def foo(var = bar {var}) var end", message)
|
||||
assert_syntax_error("def foo(var = (def bar;end; var)) var end", message)
|
||||
assert_syntax_error("def foo(var = (def self.bar;end; var)) var end", message)
|
||||
assert_syntax_error("def foo(var = (1 in ^var)); end", message)
|
||||
|
||||
o = Object.new
|
||||
assert_warn("") do
|
||||
|
Loading…
x
Reference in New Issue
Block a user