diff --git a/core/module.rbs b/core/module.rbs new file mode 100644 index 0000000..d5bc92f --- /dev/null +++ b/core/module.rbs @@ -0,0 +1,2 @@ +class Module < Object +end diff --git a/core/object.rbs b/core/object.rbs index f0a8776..b41c297 100644 --- a/core/object.rbs +++ b/core/object.rbs @@ -30,9 +30,8 @@ class Object < BasicObject def block_given?: () -> bool - # TODO: Module - def kind_of?: (Class) -> bool - def self.kind_of?: (Class) -> bool + def kind_of?: (Class | Module) -> bool + def self.kind_of?: (Class | Module) -> bool alias is_a? kind_of? alias self.is_a? self.kind_of? @@ -62,12 +61,11 @@ class Object < BasicObject # TODO: Symbol # def self.attr_accessor: (*Symbol names) -> void - # TODO: Module - # def include: (*Module mods) -> void - # def self.include: (*Module mods) -> void - # - # alias extend include - # alias self.extend include + def include: (Module, *Module mods) -> void + def self.include: (Module, *Module mods) -> void + + alias extend include + alias self.extend self.include # TODO: Array, Symbol # def self.constants: (?bool inherit) -> Array[Symbol] diff --git a/test/module.rb b/test/module.rb new file mode 100644 index 0000000..0f4f360 --- /dev/null +++ b/test/module.rb @@ -0,0 +1,9 @@ +# frozen_string_literal: true + +# @type const Mod: Mod +module Mod + # @type method method: () -> void + def self.method + puts + end +end diff --git a/test/object.rb b/test/object.rb index 2a828a3..7914663 100644 --- a/test/object.rb +++ b/test/object.rb @@ -7,6 +7,11 @@ # rubocop:disable Style/ClassCheck # rubocop:disable Style/FormatString # rubocop:disable Style/RedundantFormat +# rubocop:disable Style/MixinGrouping +# rubocop:disable Layout/EmptyLinesAroundAccessModifier + +# @type const TestMod: Module +module TestMod end object = Object.new @@ -43,10 +48,14 @@ object.block_given? object.kind_of? Object +object.kind_of? TestMod Object.kind_of? Object +Object.kind_of? TestMod object.is_a? Object +object.is_a? TestMod Object.is_a? Object +Object.is_a? TestMod object.nil? Object.nil? @@ -71,8 +80,17 @@ object.raise object.raise 'error' -# @type const A: A +# @type const A: Class class A + # @type const TestMod: Module + module TestMod end + + include TestMod + include TestMod, TestMod, TestMod + + extend TestMod + extend TestMod, TestMod, TestMod + public private @@ -80,6 +98,12 @@ class A protected end +Object.include TestMod +Object.include TestMod, TestMod, TestMod + +Object.extend TestMod +Object.extend TestMod, TestMod, TestMod + sprintf "%d\n", 123 printf "%d\n", 123