diff options
author | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-05-29 21:39:45 +0900 |
---|---|---|
committer | Nobuyoshi Nakada <nobu@ruby-lang.org> | 2019-05-29 21:42:58 +0900 |
commit | 1da5c73932b2dcf2a089f125df1fe7cc4ab9fafd (patch) | |
tree | 4a72831408f73475346c6afb65cf3ab612f82d3b /test/ripper | |
parent | 83e905eb4e6d1e8a7ebe88e3b1a6d7efa67ba01c (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.rb | 18 |
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 |