summaryrefslogtreecommitdiff
path: root/test/ripper
diff options
context:
space:
mode:
authorNobuyoshi Nakada <nobu@ruby-lang.org>2019-05-29 21:39:45 +0900
committerNobuyoshi Nakada <nobu@ruby-lang.org>2019-05-29 21:42:58 +0900
commit1da5c73932b2dcf2a089f125df1fe7cc4ab9fafd (patch)
tree4a72831408f73475346c6afb65cf3ab612f82d3b /test/ripper
parent83e905eb4e6d1e8a7ebe88e3b1a6d7efa67ba01c (diff)
parse.y: fix state after ivar/cvar
* parse.y (parse_atmark): return EXPR_END or EXPR_ENDFN, depending on the previous state, even incomplete names consistently.
Diffstat (limited to 'test/ripper')
-rw-r--r--test/ripper/test_lexer.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/ripper/test_lexer.rb b/test/ripper/test_lexer.rb
index 48110857f8..30b85eff89 100644
--- a/test/ripper/test_lexer.rb
+++ b/test/ripper/test_lexer.rb
@@ -95,4 +95,22 @@ class TestRipper::Lexer < Test::Unit::TestCase
assert_equal "string\#{nil}\n",
Ripper.slice(%(<<HERE\nstring\#{nil}\nHERE), "heredoc_beg .*? nl $(.*?) heredoc_end", 1)
end
+
+ def state(name)
+ Ripper::Lexer::State.new(Ripper.const_get(name))
+ end
+
+ def test_state_after_ivar
+ assert_equal [[1,0],:on_ivar,"@a",state(:EXPR_END)], Ripper.lex("@a").last
+ assert_equal [[1,1],:on_ivar,"@a",state(:EXPR_ENDFN)], Ripper.lex(":@a").last
+ assert_equal [[1,0],:on_ivar,"@1",state(:EXPR_END)], Ripper.lex("@1").last
+ assert_equal [[1,1],:on_ivar,"@1",state(:EXPR_ENDFN)], Ripper.lex(":@1").last
+ end
+
+ def test_state_after_cvar
+ assert_equal [[1,0],:on_cvar,"@@a",state(:EXPR_END)], Ripper.lex("@@a").last
+ assert_equal [[1,1],:on_cvar,"@@a",state(:EXPR_ENDFN)], Ripper.lex(":@@a").last
+ assert_equal [[1,0],:on_cvar,"@@1",state(:EXPR_END)], Ripper.lex("@@1").last
+ assert_equal [[1,1],:on_cvar,"@@1",state(:EXPR_ENDFN)], Ripper.lex(":@@1").last
+ end
end