class RuboCop::Cop::Sorbet::ForbidIncludeConstLiteral
“‘
include Polaris::Engine.helpers
“`ruby
or
“`
include Rails.application.routes.url_helpers
“`ruby
Multiple occurences of this can be found in Shopify’s code base like:
“‘
end
include send_expr
class MyClass
“`ruby
following form:
Sorbet, the static checker, is not (yet) able to support constructs on the
Correct `send` expressions in include statements by constant literals.
def neither_const_nor_self?(node)
def neither_const_nor_self?(node) !node.type?(:const, :self) end
def on_send(node)
def on_send(node) dynamic_inclusion?(node) do |inclusion_method, included| return unless within_onymous_module?(node) add_offense(node, message: format(MSG, inclusion_method: inclusion_method)) do |corrector| corrector.replace(node, "T.unsafe(self).#{inclusion_method} #{included.source}") end end end
def within_onymous_module?(node)
def within_onymous_module?(node) parent = node.parent parent = parent.parent while parent&.type?(:begin, :block) parent&.type?(:module, :class, :sclass) end