lib/tapioca/dsl/compilers/protobuf.rb in tapioca-0.11.0 vs lib/tapioca/dsl/compilers/protobuf.rb in tapioca-0.11.1
- old
+ new
@@ -143,11 +143,13 @@
# The workaround is to create an initialize that takes a **kwargs instead.
kwargs_parameter = create_kw_rest_param("fields", type: "T.untyped")
klass.create_method("initialize", parameters: [kwargs_parameter], return_type: "void")
end
else
- raise TypeError, "Unexpected descriptor class: #{descriptor.class.name}"
+ add_error(<<~MSG.strip)
+ Unexpected descriptor class `#{descriptor.class.name}` for `#{constant}`
+ MSG
end
end
end
end
@@ -160,10 +162,20 @@
enum_modules = ObjectSpace.each_object(Google::Protobuf::EnumDescriptor).map do |desc|
T.cast(desc, Google::Protobuf::EnumDescriptor).enummodule
end
- results = T.cast(ObjectSpace.each_object(marker).to_a, T::Array[Module]).concat(enum_modules)
+ results = if Google::Protobuf.const_defined?(:AbstractMessage)
+ abstract_message_const = ::Google::Protobuf.const_get(:AbstractMessage)
+ descendants_of(abstract_message_const) - [abstract_message_const]
+ else
+ T.cast(
+ ObjectSpace.each_object(marker).to_a,
+ T::Array[Module],
+ )
+ end
+
+ results = results.concat(enum_modules)
results.any? ? results + [Google::Protobuf::RepeatedField, Google::Protobuf::Map] : []
end
end
private