class RuboCop::Cop::Sorbet::ForbidTStruct
def initialize_method(indent, props)
def initialize_method(indent, props) # We sort optional keyword arguments after required ones sorted_props = props.sort_by { |prop| prop.default || prop.factory || prop.nilable? ? 1 : 0 } string = +"\n" line = "#{indent}sig { params(#{sorted_props.map(&:initialize_sig_param).join(", ")}).void }\n" if line.length <= max_line_length string << line else string << "#{indent}sig do\n" string << "#{indent} params(\n" sorted_props.each do |prop| string << "#{indent} #{prop.initialize_sig_param}" string << "," if prop != sorted_props.last string << "\n" end string << "#{indent} ).void\n" string << "#{indent}end\n" end line = "#{indent}def initialize(#{sorted_props.map(&:initialize_param).join(", ")})\n" if line.length <= max_line_length string << line else string << "#{indent}def initialize(\n" sorted_props.each do |prop| string << "#{indent} #{prop.initialize_param}" string << "," if prop != sorted_props.last string << "\n" end string << "#{indent})\n" end props.each do |prop| string << "#{indent} #{prop.initialize_assign}\n" end string << "#{indent}end\n" end