Skip to content

Commit

Permalink
Merge pull request #1978 from Shopify/ba-fix-arr-compiler
Browse files Browse the repository at this point in the history
Add a sig with no args for ActiveRecordRelations builder methods
  • Loading branch information
bitwise-aiden authored Aug 6, 2024
2 parents e0cb492 + e774391 commit e3708e0
Show file tree
Hide file tree
Showing 2 changed files with 13 additions and 0 deletions.
5 changes: 5 additions & 0 deletions lib/tapioca/dsl/compilers/active_record_relations.rb
Original file line number Diff line number Diff line change
Expand Up @@ -1004,6 +1004,11 @@ def create_common_methods
method.add_opt_param("attributes", "nil")
method.add_block_param("block")

method.add_sig do |sig|
sig.add_param("block", "T.nilable(T.proc.params(object: #{constant_name}).void)")
sig.return_type = constant_name
end

# `T.untyped` matches `T::Array[T.untyped]` so the array signature
# must be defined first for Sorbet to pick it, if valid.
method.add_sig do |sig|
Expand Down
8 changes: 8 additions & 0 deletions spec/tapioca/dsl/compilers/active_record_relations_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -97,6 +97,7 @@ def any?(&block); end
sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
def average(column_name); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def build(attributes = nil, &block); end
Expand All @@ -108,10 +109,12 @@ def calculate(operation, column_name); end
sig { params(column_name: NilClass, block: T.proc.params(object: ::Post).void).returns(Integer) }
def count(column_name = nil, &block); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def create(attributes = nil, &block); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def create!(attributes = nil, &block); end
Expand Down Expand Up @@ -232,6 +235,7 @@ def member?(record); end
sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
def minimum(column_name); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def new(attributes = nil, &block); end
Expand Down Expand Up @@ -799,6 +803,7 @@ def any?(&block); end
sig { params(column_name: T.any(String, Symbol)).returns(T.any(Integer, Float, BigDecimal)) }
def average(column_name); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def build(attributes = nil, &block); end
Expand All @@ -810,10 +815,12 @@ def calculate(operation, column_name); end
sig { params(column_name: NilClass, block: T.proc.params(object: ::Post).void).returns(Integer) }
def count(column_name = nil, &block); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def create(attributes = nil, &block); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def create!(attributes = nil, &block); end
Expand Down Expand Up @@ -939,6 +946,7 @@ def member?(record); end
sig { params(column_name: T.any(String, Symbol)).returns(T.untyped) }
def minimum(column_name); end
sig { params(block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
sig { params(attributes: T::Array[T.untyped], block: T.nilable(T.proc.params(object: ::Post).void)).returns(T::Array[::Post]) }
sig { params(attributes: T.untyped, block: T.nilable(T.proc.params(object: ::Post).void)).returns(::Post) }
def new(attributes = nil, &block); end
Expand Down

0 comments on commit e3708e0

Please sign in to comment.