0

我正在尝试使用 T::Struct 来避免类中的一些样板:

https://github.com/andyw8/codeclimate-engine-rb/pull/13/commits/d1fd72e22a4b9737ef2fe759215fb1c73c25e3bb

srb tc不报告任何错误,但是当我运行测试时它失败了:

ArgumentError:
  Attempted to redefine prop :check_name that's already defined without specifying :override => true: {:type=>String, :type_is_custom_type=>nil, :type_is_serializable=>nil, :type_is_array_of_serializable=>false, :type_is_hash_of_serializable_values=>false, :type_is_hash_of_custom_type_keys=>false, :type_object=>#<T::Types::Simple:0x00007fc611266e78 @raw_type=String>, :type_needs_clone=>false, :accessor_key=>:@check_name, :sensitivity=>nil, :pii=>nil, :extra=>nil, :serialized_form=>"check_name", :fully_optional=>false, :need_nil_read_check=>nil}
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/props/decorator.rb:56:in `add_prop_definition'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:126:in `call'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:126:in `validate_call'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:186:in `block in create_validator_slow'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/props/optional.rb:48:in `add_prop_definition'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/props/serializable.rb:311:in `add_prop_definition'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/props/decorator.rb:490:in `prop_defined'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:126:in `call'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:126:in `validate_call'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/private/methods/call_validation.rb:186:in `block in create_validator_slow'
# /Users/awaite/.rvm/gems/ruby-2.4.4/gems/sorbet-runtime-0.5.5188/lib/types/props/_props.rb:109:in `prop'
# ./lib/cc_engine/issue.rb:8:in `<class:Issue>'

如果我重新订购道具,我会得到同样的错误,但description相反。

是不是因为我使用了一个结构,但也在上面定义了方法?我知道 RubyStruct支持这一点,但我不确定 Sorbet 的T::Struct.

4

1 回答 1

0

已解决:我必须添加一个依赖项require "cc_engine/location"(尽管我还不明白为什么它会导致该特定错误消息)。

于 2020-01-04T19:37:24.250 回答