diff --git a/lib/tapioca/dsl/compilers/active_record_relations.rb b/lib/tapioca/dsl/compilers/active_record_relations.rb index 3c536f518..bed31c4f7 100644 --- a/lib/tapioca/dsl/compilers/active_record_relations.rb +++ b/lib/tapioca/dsl/compilers/active_record_relations.rb @@ -372,7 +372,12 @@ def create_group_chain_methods(klass) return_type: "T.self_type", ) - (CALCULATION_METHODS + [:size]).each do |method_name| + klass.create_method( + "size", + return_type: "Integer", + ) + + CALCULATION_METHODS.each do |method_name| case method_name when :average, :maximum, :minimum klass.create_method( @@ -400,9 +405,9 @@ def create_group_chain_methods(klass) ], return_type: "T::Hash[T.untyped, Integer]", ) - when :sum, :size + when :sum klass.create_method( - method_name.to_s, + "sum", parameters: [ create_opt_param("column_name", type: "T.nilable(T.any(String, Symbol))", default: "nil"), create_block_param("block", type: "T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))"), diff --git a/spec/tapioca/dsl/compilers/active_record_relations_spec.rb b/spec/tapioca/dsl/compilers/active_record_relations_spec.rb index f15e8fce1..40b228fdc 100644 --- a/spec/tapioca/dsl/compilers/active_record_relations_spec.rb +++ b/spec/tapioca/dsl/compilers/active_record_relations_spec.rb @@ -660,8 +660,8 @@ def maximum(column_name); end sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) } def minimum(column_name); end - sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } - def size(column_name = nil, &block); end + sig { returns(Integer) } + def size; end sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } def sum(column_name = nil, &block); end @@ -765,8 +765,8 @@ def maximum(column_name); end sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) } def minimum(column_name); end - sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } - def size(column_name = nil, &block); end + sig { returns(Integer) } + def size; end sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } def sum(column_name = nil, &block); end @@ -1386,8 +1386,8 @@ def maximum(column_name); end sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) } def minimum(column_name); end - sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } - def size(column_name = nil, &block); end + sig { returns(Integer) } + def size; end sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } def sum(column_name = nil, &block); end @@ -1491,8 +1491,8 @@ def maximum(column_name); end sig { params(column_name: T.any(String, Symbol)).returns(T::Hash[T.untyped, T.untyped]) } def minimum(column_name); end - sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } - def size(column_name = nil, &block); end + sig { returns(Integer) } + def size; end sig { params(column_name: T.nilable(T.any(String, Symbol)), block: T.nilable(T.proc.params(record: T.untyped).returns(T.untyped))).returns(T::Hash[T.untyped, T.any(Integer, Float, BigDecimal)]) } def sum(column_name = nil, &block); end