Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion lib/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments.rb
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,8 @@ def visit_def_node(node)
@rewriter << Source::Replace.new(
header.end_offset,
node.location.end_offset - 1,
if node.name.end_with?("=") || (node.parameters && !node.rparen_loc)
if node.name.end_with?("=") || (node.parameters && !node.rparen_loc) ||
header.end_line != node.name_loc.start_line
indent = " " * node.location.start_column
"#{header_comment}\n#{indent} super\n#{indent}end"
else
Expand Down
26 changes: 26 additions & 0 deletions test/spoom/sorbet/translate/sorbet_sigs_to_rbs_comments_test.rb
Original file line number Diff line number Diff line change
Expand Up @@ -195,6 +195,32 @@ def value= value # Keep the setter comment
assert_equal(42, instance.value)
end

def test_translate_to_rbs_abstract_method_with_multiline_parameters
contents = <<~RB
class Foo
sig { abstract.params(query: Integer, options: String).returns(Integer) }
def find(
query:,
options:
) # Keep the header comment
end
end
RB

assert_equal(<<~RBS, sorbet_sigs_to_rbs_comments(contents))
class Foo
# @abstract
#: (query: Integer, options: String) -> Integer
def find(
query:,
options:
) # Keep the header comment
super
end
end
RBS
end

def test_translate_to_rbs_skips_abstract_methods_without_runtime
contents = <<~RB
class Foo
Expand Down
Loading