Skip to content

Commit 00c67fc

Browse files
committed
[GR-19220] Enable tests for Module#used_refinements (#3097)
PullRequest: truffleruby/3864
2 parents 67b5614 + fe64b72 commit 00c67fc

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

spec/truffleruby.next-specs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,3 +32,4 @@ spec/ruby/core/sizedqueue/shift_spec.rb
3232

3333
spec/ruby/core/module/refinements_spec.rb
3434
spec/ruby/core/refinement/refined_class_spec.rb
35+
spec/ruby/core/module/used_refinements_spec.rb

src/main/java/org/truffleruby/core/module/ModuleNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2210,7 +2210,7 @@ public abstract static class UsedRefinementsNode extends CoreMethodArrayArgument
22102210
protected RubyArray usedRefinements() {
22112211
final Frame frame = getContext().getCallStack().getCallerFrame(FrameAccess.READ_ONLY);
22122212
final DeclarationContext declarationContext = RubyArguments.getDeclarationContext(frame);
2213-
final Set<RubyModule> refinements = new HashSet<>();
2213+
final List<RubyModule> refinements = new ArrayList<>();
22142214
for (RubyModule[] refinementModules : declarationContext.getRefinements().values()) {
22152215
Collections.addAll(refinements, refinementModules);
22162216
}

test/mri/tests/ruby/test_refinement.rb

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1791,13 +1791,17 @@ module RefA
17911791
refine Object do
17921792
def in_ref_a
17931793
end
1794+
1795+
RefA.const_set(:REF, self)
17941796
end
17951797
end
17961798

17971799
module RefB
17981800
refine Object do
17991801
def in_ref_b
18001802
end
1803+
1804+
RefB.const_set(:REF, self)
18011805
end
18021806
end
18031807

@@ -1807,23 +1811,28 @@ module RefC
18071811
refine Object do
18081812
def in_ref_c
18091813
end
1814+
1815+
RefC.const_set(:REF, self)
18101816
end
18111817
end
18121818

18131819
module Foo
18141820
using RefB
18151821
USED_MODS = Module.used_modules
1822+
USED_REFS = Module.used_refinements
18161823
end
18171824

18181825
module Bar
18191826
using RefC
18201827
USED_MODS = Module.used_modules
1828+
USED_REFS = Module.used_refinements
18211829
end
18221830

18231831
module Combined
18241832
using RefA
18251833
using RefB
18261834
USED_MODS = Module.used_modules
1835+
USED_REFS = Module.used_refinements
18271836
end
18281837
end
18291838

@@ -1835,6 +1844,14 @@ def test_used_modules
18351844
assert_equal [ref::RefB, ref::RefA], ref::Combined::USED_MODS
18361845
end
18371846

1847+
def test_used_refinements
1848+
ref = VisibleRefinements
1849+
assert_equal [], Module.used_refinements
1850+
assert_equal [ref::RefB::REF], ref::Foo::USED_REFS
1851+
assert_equal [ref::RefC::REF], ref::Bar::USED_REFS
1852+
assert_equal [ref::RefB::REF, ref::RefA::REF], ref::Combined::USED_REFS
1853+
end
1854+
18381855
def test_refinements
18391856
int_refinement = nil
18401857
str_refinement = nil

0 commit comments

Comments
 (0)