Skip to content

Commit ef2cfbc

Browse files
authored
Merge pull request #493 from aycabta/fix-symbol-handling-in-args-of-yield
Fix symbol handle in args of yield/super/defined?
2 parents e752c73 + bbd4cf6 commit ef2cfbc

File tree

2 files changed

+28
-3
lines changed

2 files changed

+28
-3
lines changed

lib/rdoc/ruby_token.rb

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -303,8 +303,8 @@ def Token(token, value = nil)
303303
[:TkIN, TkKW, "in", :EXPR_BEG],
304304
[:TkDO, TkKW, "do", :EXPR_BEG],
305305
[:TkRETURN, TkKW, "return", :EXPR_MID],
306-
[:TkYIELD, TkKW, "yield", :EXPR_END],
307-
[:TkSUPER, TkKW, "super", :EXPR_END],
306+
[:TkYIELD, TkKW, "yield", :EXPR_ARG],
307+
[:TkSUPER, TkKW, "super", :EXPR_ARG],
308308
[:TkSELF, TkKW, "self", :EXPR_END],
309309
[:TkNIL, TkKW, "nil", :EXPR_END],
310310
[:TkTRUE, TkKW, "true", :EXPR_END],
@@ -317,7 +317,7 @@ def Token(token, value = nil)
317317
[:TkWHILE_MOD, TkKW],
318318
[:TkUNTIL_MOD, TkKW],
319319
[:TkALIAS, TkKW, "alias", :EXPR_FNAME],
320-
[:TkDEFINED, TkKW, "defined?", :EXPR_END],
320+
[:TkDEFINED, TkKW, "defined?", :EXPR_ARG],
321321
[:TklBEGIN, TkKW, "BEGIN", :EXPR_END],
322322
[:TklEND, TkKW, "END", :EXPR_END],
323323
[:Tk__LINE__, TkKW, "__LINE__", :EXPR_END],

test/test_rdoc_ruby_lex.rb

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,31 @@ def x
101101
assert_equal expected, tokens
102102
end
103103

104+
def test_class_tokenize_reserved_keyword_with_args
105+
tokens = RDoc::RubyLex.tokenize <<-'RUBY', nil
106+
yield :foo
107+
super :bar
108+
defined? :baz
109+
RUBY
110+
111+
expected = [
112+
@TK::TkYIELD .new( 0, 1, 0, "yield"),
113+
@TK::TkSPACE .new( 5, 1, 5, " "),
114+
@TK::TkSYMBOL .new( 6, 1, 6, ":foo"),
115+
@TK::TkNL .new(10, 1, 10, "\n"),
116+
@TK::TkSUPER .new(11, 2, 0, "super"),
117+
@TK::TkSPACE .new(16, 2, 5, " "),
118+
@TK::TkSYMBOL .new(17, 2, 6, ":bar"),
119+
@TK::TkNL .new(21, 2, 11, "\n"),
120+
@TK::TkDEFINED.new(22, 3, 0, "defined?"),
121+
@TK::TkSPACE .new(30, 3, 8, " "),
122+
@TK::TkSYMBOL .new(31, 3, 9, ":baz"),
123+
@TK::TkNL .new(35, 3, 22, "\n")
124+
]
125+
126+
assert_equal expected, tokens
127+
end
128+
104129
def test_class_tokenize_hash_symbol
105130
tokens = RDoc::RubyLex.tokenize '{ class:"foo" }', nil
106131

0 commit comments

Comments
 (0)