module T::Private::Sealed
def self.declare(mod, decl_file)
def self.declare(mod, decl_file) if !mod.is_a?(Module) raise "#{mod} is not a class or module and cannot be declared `sealed!`" end if sealed_module?(mod) raise "#{mod} was already declared `sealed!` and cannot be re-declared `sealed!`" end if T::Private::Final.final_module?(mod) raise "#{mod} was already declared `final!` and cannot be declared `sealed!`" end mod.extend(mod.is_a?(Class) ? NoInherit : NoIncludeExtend) if !decl_file raise "Couldn't determine declaration file for sealed class." end mod.instance_variable_set(:@sorbet_sealed_module_decl_file, decl_file) mod.instance_variable_set(:@sorbet_sealed_module_all_subclasses, []) end