Skip to content

Commit 34f9a76

Browse files
committed
good progress
1 parent bf2e8a9 commit 34f9a76

2 files changed

Lines changed: 140 additions & 22 deletions

File tree

core/module.rbs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1558,7 +1558,7 @@ class Module
15581558
# Returns a list of the public instance methods defined in *mod*. If the
15591559
# optional parameter is `false`, the methods of any ancestors are not included.
15601560
#
1561-
def public_instance_methods: (?boolish include_super) -> ::Array[Symbol]
1561+
def public_instance_methods: (?boolish include_super) -> Array[Symbol]
15621562

15631563
# <!--
15641564
# rdoc-file=vm_method.c
@@ -1640,7 +1640,7 @@ class Module
16401640
# 99
16411641
# nil
16421642
#
1643-
def remove_class_variable: (interned arg0) -> untyped
1643+
def remove_class_variable: (interned name) -> untyped
16441644

16451645
# <!--
16461646
# rdoc-file=object.c
@@ -1660,7 +1660,7 @@ class Module
16601660
# Removes the method identified by *symbol* from the current class. For an
16611661
# example, see Module#undef_method. String arguments are converted to symbols.
16621662
#
1663-
def remove_method: (*interned arg0) -> self
1663+
def remove_method: (*interned method_names) -> self
16641664

16651665
# <!--
16661666
# rdoc-file=vm_method.c

test/stdlib/Module_test.rb

Lines changed: 137 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -509,15 +509,15 @@ def test_autoload?
509509
def test_class_variable_defined?
510510
mod = Module.new
511511

512-
with_interned :@@module_test_class_variable_defined do |name|
512+
with_interned :@@module_test_class_variable_defined do |cvar|
513513
assert_send_type "(interned) -> bool",
514-
mod, :class_variable_defined?, name
514+
mod, :class_variable_defined?, cvar
515515
end
516516

517517
mod.class_variable_set :@@module_test_class_variable_defined, 12
518-
with_interned :@@module_test_class_variable_defined do |name|
518+
with_interned :@@module_test_class_variable_defined do |cvar|
519519
assert_send_type "(interned) -> bool",
520-
mod, :class_variable_defined?, name
520+
mod, :class_variable_defined?, cvar
521521
end
522522
end
523523

@@ -527,19 +527,19 @@ def test_class_variable_get
527527
# If it's not set it raises an exception
528528
mod.class_variable_set :@@module_test_class_variable_get, 12
529529

530-
with_interned :@@module_test_class_variable_get do |name|
530+
with_interned :@@module_test_class_variable_get do |cvar|
531531
assert_send_type "(interned) -> untyped",
532-
mod, :class_variable_get, name
532+
mod, :class_variable_get, cvar
533533
end
534534
end
535535

536536
def test_class_variable_set
537537
mod = Module.new
538538

539-
with_interned :@@module_test_class_variable_set do |name|
539+
with_interned :@@module_test_class_variable_set do |cvar|
540540
with_untyped do |value|
541541
assert_send_type "[T] (interned, T) -> T",
542-
mod, :class_variable_set, name, value
542+
mod, :class_variable_set, cvar, value
543543
end
544544
end
545545
end
@@ -678,16 +678,41 @@ def test_initialize_clone
678678
def test_instance_method
679679
mod = Module.new do
680680
def foo = 3
681+
private def bar = 4
681682
end
682683

683684
with_interned :foo do |name|
684685
assert_send_type '(interned) -> UnboundMethod',
685686
mod, :instance_method, name
686687
end
688+
689+
with_interned :bar do |name|
690+
assert_send_type '(interned) -> UnboundMethod',
691+
mod, :instance_method, name
692+
end
687693
end
688694

689695
def test_instance_methods
690-
omit 'todo'
696+
mod = Module.new do
697+
include Module.new {
698+
public def foo1 = 1
699+
private def foo2 = 1
700+
protected def foo3 = 1
701+
}
702+
public def bar1 = 1
703+
private def bar2 = 1
704+
protected def bar3 = 1
705+
end
706+
707+
assert_send_type '() -> Array[Symbol]',
708+
Module.new, :instance_methods
709+
assert_send_type '() -> Array[Symbol]',
710+
mod, :instance_methods
711+
712+
with_boolish do |include_super|
713+
assert_send_type '(boolish) -> Array[Symbol]',
714+
mod, :instance_methods, include_super
715+
end
691716
end
692717

693718
def test_method_defined?
@@ -737,7 +762,23 @@ def test_private_constant
737762
end
738763

739764
def test_private_instance_methods
740-
omit 'todo'
765+
mod = Module.new do
766+
include Module.new {
767+
private def bar = 4
768+
}
769+
770+
private def foo = 3
771+
end
772+
773+
assert_send_type '() -> Array[Symbol]',
774+
Module.new, :private_instance_methods
775+
assert_send_type '() -> Array[Symbol]',
776+
mod, :private_instance_methods
777+
778+
with_boolish do |include_super|
779+
assert_send_type '(boolish) -> Array[Symbol]',
780+
mod, :private_instance_methods, include_super
781+
end
741782
end
742783

743784
def test_private_method_defined?
@@ -785,7 +826,23 @@ def test_private_method_defined?
785826
end
786827

787828
def test_protected_instance_methods
788-
omit 'todo'
829+
mod = Module.new do
830+
include Module.new {
831+
protected def bar = 4
832+
}
833+
834+
protected def foo = 3
835+
end
836+
837+
assert_send_type '() -> Array[Symbol]',
838+
Module.new, :protected_instance_methods
839+
assert_send_type '() -> Array[Symbol]',
840+
mod, :protected_instance_methods
841+
842+
with_boolish do |include_super|
843+
assert_send_type '(boolish) -> Array[Symbol]',
844+
mod, :protected_instance_methods, include_super
845+
end
789846
end
790847

791848
def test_protected_method_defined?
@@ -837,11 +894,34 @@ def test_public_constant
837894
end
838895

839896
def test_public_instance_method
840-
omit 'todo'
897+
mod = Module.new do
898+
def foo = 3
899+
end
900+
901+
with_interned :foo do |name|
902+
assert_send_type '(interned) -> UnboundMethod',
903+
mod, :instance_method, name
904+
end
841905
end
842906

843907
def test_public_instance_methods
844-
omit 'todo'
908+
mod = Module.new do
909+
include Module.new {
910+
def bar = 4
911+
}
912+
913+
def foo = 3
914+
end
915+
916+
assert_send_type '() -> Array[Symbol]',
917+
Module.new, :public_instance_methods
918+
assert_send_type '() -> Array[Symbol]',
919+
mod, :public_instance_methods
920+
921+
with_boolish do |include_super|
922+
assert_send_type '(boolish) -> Array[Symbol]',
923+
mod, :public_instance_methods, include_super
924+
end
845925
end
846926

847927
def test_public_method_defined?
@@ -889,23 +969,61 @@ def test_public_method_defined?
889969
end
890970

891971
def test_remove_class_variable
892-
omit 'todo'
972+
with_interned :@@module_test_remove_class_variable do |cvar|
973+
mod = Module.new do
974+
class_variable_set(:@@module_test_remove_class_variable, 123)
975+
end
976+
977+
assert_send_type '(interned) -> untyped',
978+
mod, :remove_class_variable, cvar
979+
end
893980
end
894981

895982
def test_remove_method
896-
omit 'todo'
983+
assert_send_type '() -> Module',
984+
Module.new, :remove_method
985+
986+
with_interned :foo do |foo|
987+
assert_send_type '(interned) -> Module',
988+
Module.new { def foo = 3 }, :remove_method, foo
989+
with_interned :bar do |bar|
990+
assert_send_type '(*interned) -> Module',
991+
Module.new { def foo = 3; def bar = 4 }, :remove_method, foo, bar
992+
end
993+
end
897994
end
898995

899-
def test_singleton_class
900-
omit 'todo'
996+
def test_singleton_class?
997+
assert_send_type '() -> bool',
998+
Module, :singleton_class?
999+
assert_send_type '() -> bool',
1000+
Module.singleton_class, :singleton_class?
9011001
end
9021002

9031003
def test_undef_method
904-
omit 'todo'
1004+
assert_send_type '() -> Module',
1005+
Module.new, :undef_method
1006+
1007+
with_interned :foo do |foo|
1008+
assert_send_type '(interned) -> Module',
1009+
Module.new { def foo = 3 }, :undef_method, foo
1010+
with_interned :bar do |bar|
1011+
assert_send_type '(*interned) -> Module',
1012+
Module.new { def foo = 3; def bar = 4 }, :undef_method, foo, bar
1013+
end
1014+
end
9051015
end
9061016

9071017
def test_undefined_instance_methods
908-
omit 'todo'
1018+
mod = Module.new do
1019+
def foo = 4
1020+
undef foo
1021+
end
1022+
1023+
assert_send_type '() -> Array[Symbol]',
1024+
Module.new, :undefined_instance_methods
1025+
assert_send_type '() -> Array[Symbol]',
1026+
mod, :undefined_instance_methods
9091027
end
9101028

9111029
def test_append_features

0 commit comments

Comments
 (0)