[ruby/rdoc] Skip parentheses on singleton class declaration
https://github.com/ruby/rdoc/commit/b6c6d4f978
This commit is contained in:
parent
88b1d21dbb
commit
cbd54cba03
@ -399,6 +399,29 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|||||||
return [container, name_t, given_name, new_modules]
|
return [container, name_t, given_name, new_modules]
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Skip opening parentheses and yield the block.
|
||||||
|
# Skip closing parentheses too when exists.
|
||||||
|
|
||||||
|
def skip_parentheses(&block)
|
||||||
|
left_tk = peek_tk
|
||||||
|
|
||||||
|
if :on_lparen == left_tk[:kind]
|
||||||
|
get_tk
|
||||||
|
|
||||||
|
ret = skip_parentheses(&block)
|
||||||
|
|
||||||
|
right_tk = peek_tk
|
||||||
|
if :on_rparen == right_tk[:kind]
|
||||||
|
get_tk
|
||||||
|
end
|
||||||
|
|
||||||
|
ret
|
||||||
|
else
|
||||||
|
yield
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
##
|
##
|
||||||
# Return a superclass, which can be either a constant of an expression
|
# Return a superclass, which can be either a constant of an expression
|
||||||
|
|
||||||
@ -833,7 +856,7 @@ class RDoc::Parser::Ruby < RDoc::Parser
|
|||||||
cls = parse_class_regular container, declaration_context, single,
|
cls = parse_class_regular container, declaration_context, single,
|
||||||
name_t, given_name, comment
|
name_t, given_name, comment
|
||||||
elsif name_t[:kind] == :on_op && name_t[:text] == '<<'
|
elsif name_t[:kind] == :on_op && name_t[:text] == '<<'
|
||||||
case name = get_class_specification
|
case name = skip_parentheses { get_class_specification }
|
||||||
when 'self', container.name
|
when 'self', container.name
|
||||||
read_documentation_modifiers cls, RDoc::CLASS_MODIFIERS
|
read_documentation_modifiers cls, RDoc::CLASS_MODIFIERS
|
||||||
parse_statements container, SINGLE
|
parse_statements container, SINGLE
|
||||||
|
@ -4345,4 +4345,17 @@ end
|
|||||||
assert_equal 'Hello', meth.comment.text
|
assert_equal 'Hello', meth.comment.text
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_parenthesized_cdecl
|
||||||
|
util_parser <<-RUBY
|
||||||
|
module DidYouMean
|
||||||
|
class << (NameErrorCheckers = Object.new)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
RUBY
|
||||||
|
|
||||||
|
@parser.scan
|
||||||
|
|
||||||
|
refute_predicate @store.find_class_or_module('DidYouMean'), :nil?
|
||||||
|
refute_predicate @store.find_class_or_module('DidYouMean::NameErrorCheckers'), :nil?
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
Loading…
x
Reference in New Issue
Block a user