lib/tapioca/rbi_ext/model.rb in tapioca-0.12.0 vs lib/tapioca/rbi_ext/model.rb in tapioca-0.13.0

- old
+ new

@@ -86,24 +86,56 @@ comments: T::Array[RBI::Comment], ).void end def create_method(name, parameters: [], return_type: "T.untyped", class_method: false, visibility: RBI::Public.new, comments: []) + sig = create_sig(parameters: parameters, return_type: return_type) + create_method_with_sigs( + name, + sigs: [sig], + parameters: parameters.map(&:param), + class_method: class_method, + visibility: visibility, + comments: comments, + ) + end + + sig do + params( + name: String, + sigs: T::Array[RBI::Sig], + parameters: T::Array[RBI::Param], + class_method: T::Boolean, + visibility: RBI::Visibility, + comments: T::Array[RBI::Comment], + ).void + end + def create_method_with_sigs(name, sigs:, parameters: [], class_method: false, visibility: RBI::Public.new, + comments: []) return unless Tapioca::RBIHelper.valid_method_name?(name) - sig = RBI::Sig.new(return_type: return_type) method = RBI::Method.new( name, - sigs: [sig], + sigs: sigs, + params: parameters, is_singleton: class_method, visibility: visibility, comments: comments, ) - parameters.each do |param| - method << param.param - sig << RBI::SigParam.new(param.param.name, param.type) - end self << method + end + + sig do + params( + parameters: T::Array[RBI::TypedParam], + return_type: String, + ).returns(RBI::Sig) + end + def create_sig(parameters: [], return_type: "T.untyped") + params = parameters.map do |param| + RBI::SigParam.new(param.param.name, param.type) + end + RBI::Sig.new(params: params, return_type: return_type) end private sig { returns(T::Hash[String, RBI::Node]) }