Skip to content

Commit a7df8f3

Browse files
committed
Merge remote-tracking branch 'upstream/master' into fix-postfix-if-after-escaped-newline
2 parents 8dac3fd + 17ae77a commit a7df8f3

File tree

3 files changed

+27
-1
lines changed

3 files changed

+27
-1
lines changed

lib/rdoc/parser/ruby.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1508,6 +1508,7 @@ def parse_method_or_yield_parameters(method = nil,
15081508
end
15091509
tk = get_tk
15101510
end
1511+
@scanner.first_in_method_statement = true
15111512

15121513
get_tkread_clean(/\s+/, ' ')
15131514
end

lib/rdoc/ruby_lex.rb

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ class Error < RDoc::Error
4545

4646
attr_accessor :continue
4747
attr_accessor :lex_state
48+
attr_accessor :first_in_method_statement
4849
attr_reader :reader
4950

5051
class << self
@@ -113,6 +114,7 @@ def initialize(content, options)
113114
@lex_state = :EXPR_BEG
114115
@space_seen = false
115116
@escaped_nl = false
117+
@first_in_method_statement = false
116118
@after_question = false
117119

118120
@continue = false
@@ -354,6 +356,7 @@ def token
354356
begin
355357
tk = @OP.match(self)
356358
@space_seen = tk.kind_of?(TkSPACE)
359+
@first_in_method_statement = false if !@space_seen && @first_in_method_statement
357360
rescue SyntaxError => e
358361
raise Error, "syntax error: #{e.message}" if
359362
@exception_on_syntax_error
@@ -741,7 +744,7 @@ def lex_int2
741744
if :EXPR_FNAME == @lex_state or :EXPR_DOT == @lex_state
742745
@lex_state = :EXPR_ARG
743746
Token(TkId, op)
744-
elsif @lex_state == :EXPR_BEG || @lex_state == :EXPR_MID
747+
elsif @lex_state == :EXPR_BEG || @lex_state == :EXPR_MID || @first_in_method_statement
745748
identify_string(op)
746749
elsif peek(0) == '='
747750
getc

test/test_rdoc_parser_ruby.rb

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2528,6 +2528,28 @@ def blah()
25282528
assert_equal markup_code, expected
25292529
end
25302530

2531+
def test_parse_statements_method_oneliner_with_regexp
2532+
util_parser <<RUBY
2533+
class Foo
2534+
def blah() /bar/ end
2535+
end
2536+
RUBY
2537+
2538+
expected = <<EXPTECTED
2539+
<span class="ruby-keyword">def</span> <span class="ruby-identifier">blah</span>() <span class="ruby-regexp">/bar/</span> <span class="ruby-keyword">end</span>
2540+
EXPTECTED
2541+
expected = expected.rstrip
2542+
2543+
@parser.scan
2544+
2545+
foo = @top_level.classes.first
2546+
assert_equal 'Foo', foo.full_name
2547+
2548+
blah = foo.method_list.first
2549+
markup_code = blah.markup_code.sub(/^.*\n/, '')
2550+
assert_equal expected, markup_code
2551+
end
2552+
25312553
def test_parse_statements_embdoc_in_document
25322554
@filename = 'file.rb'
25332555
util_parser <<RUBY

0 commit comments

Comments
 (0)