class RuboCop::Cop::Sorbet::SignatureBuildOrder
def on_signature(node)
def on_signature(node) calls = call_chain(node.children[2]).map(&:method_name) return if calls.empty? # While the developer is typing, we may have an incomplete call statement, which means `ORDER[call]` will # return `nil`. In that case, invoking `sort_by` will raise return if calls.any? { |call| ORDER[call].nil? } expected_order = calls.sort_by { |call| ORDER[call] } return if expected_order == calls message = "Sig builders must be invoked in the following order: #{expected_order.join(", ")}." unless can_autocorrect? message += " For autocorrection, add the `unparser` gem to your project." end add_offense( node.children[2], message: message, ) node end