@@ -1555,7 +1555,7 @@ protected boolean isMethodDefined(RubyModule module, String name, boolean inheri
1555
1555
@ CoreMethod (names = "module_function" , rest = true , visibility = Visibility .PRIVATE )
1556
1556
public abstract static class ModuleFunctionNode extends CoreMethodArrayArgumentsNode {
1557
1557
1558
- @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNodeGen .create (Visibility . MODULE_FUNCTION );
1558
+ @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNode .create ();
1559
1559
1560
1560
@ Specialization
1561
1561
protected RubyModule moduleFunction (VirtualFrame frame , RubyModule module , Object [] names ,
@@ -1567,7 +1567,7 @@ protected RubyModule moduleFunction(VirtualFrame frame, RubyModule module, Objec
1567
1567
coreExceptions ().typeError ("module_function must be called for modules" , this ));
1568
1568
}
1569
1569
1570
- return setVisibilityNode .executeSetVisibility (frame , module , names );
1570
+ return setVisibilityNode .execute (frame , module , names , Visibility . MODULE_FUNCTION );
1571
1571
}
1572
1572
1573
1573
}
@@ -1608,13 +1608,13 @@ protected RubyArray nesting() {
1608
1608
@ CoreMethod (names = "public" , rest = true , visibility = Visibility .PRIVATE )
1609
1609
public abstract static class PublicNode extends CoreMethodArrayArgumentsNode {
1610
1610
1611
- @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNodeGen .create (Visibility . PUBLIC );
1611
+ @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNode .create ();
1612
1612
1613
1613
public abstract RubyModule executePublic (VirtualFrame frame , RubyModule module , Object [] args );
1614
1614
1615
1615
@ Specialization
1616
1616
protected RubyModule doPublic (VirtualFrame frame , RubyModule module , Object [] names ) {
1617
- return setVisibilityNode .executeSetVisibility (frame , module , names );
1617
+ return setVisibilityNode .execute (frame , module , names , Visibility . PUBLIC );
1618
1618
}
1619
1619
1620
1620
}
@@ -1623,15 +1623,14 @@ protected RubyModule doPublic(VirtualFrame frame, RubyModule module, Object[] na
1623
1623
public abstract static class PublicClassMethodNode extends CoreMethodArrayArgumentsNode {
1624
1624
1625
1625
@ Child private SingletonClassNode singletonClassNode = SingletonClassNode .create ();
1626
- @ Child private SetMethodVisibilityNode setMethodVisibilityNode = SetMethodVisibilityNodeGen
1627
- .create (Visibility .PUBLIC );
1626
+ @ Child private SetMethodVisibilityNode setMethodVisibilityNode = SetMethodVisibilityNode .create ();
1628
1627
1629
1628
@ Specialization
1630
- protected RubyModule publicClassMethod (VirtualFrame frame , RubyModule module , Object [] names ) {
1629
+ protected RubyModule publicClassMethod (RubyModule module , Object [] names ) {
1631
1630
final RubyClass singletonClass = singletonClassNode .executeSingletonClass (module );
1632
1631
1633
1632
for (Object name : names ) {
1634
- setMethodVisibilityNode .executeSetMethodVisibility ( frame , singletonClass , name );
1633
+ setMethodVisibilityNode .execute ( singletonClass , name , Visibility . PUBLIC );
1635
1634
}
1636
1635
1637
1636
return module ;
@@ -1641,13 +1640,13 @@ protected RubyModule publicClassMethod(VirtualFrame frame, RubyModule module, Ob
1641
1640
@ CoreMethod (names = "private" , rest = true , visibility = Visibility .PRIVATE )
1642
1641
public abstract static class PrivateNode extends CoreMethodArrayArgumentsNode {
1643
1642
1644
- @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNodeGen .create (Visibility . PRIVATE );
1643
+ @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNode .create ();
1645
1644
1646
1645
public abstract RubyModule executePrivate (VirtualFrame frame , RubyModule module , Object [] args );
1647
1646
1648
1647
@ Specialization
1649
1648
protected RubyModule doPrivate (VirtualFrame frame , RubyModule module , Object [] names ) {
1650
- return setVisibilityNode .executeSetVisibility (frame , module , names );
1649
+ return setVisibilityNode .execute (frame , module , names , Visibility . PRIVATE );
1651
1650
}
1652
1651
1653
1652
}
@@ -1673,15 +1672,14 @@ protected Object prependFeatures(RubyModule features, RubyModule target,
1673
1672
public abstract static class PrivateClassMethodNode extends CoreMethodArrayArgumentsNode {
1674
1673
1675
1674
@ Child private SingletonClassNode singletonClassNode = SingletonClassNode .create ();
1676
- @ Child private SetMethodVisibilityNode setMethodVisibilityNode = SetMethodVisibilityNodeGen
1677
- .create (Visibility .PRIVATE );
1675
+ @ Child private SetMethodVisibilityNode setMethodVisibilityNode = SetMethodVisibilityNode .create ();
1678
1676
1679
1677
@ Specialization
1680
1678
protected RubyModule privateClassMethod (VirtualFrame frame , RubyModule module , Object [] names ) {
1681
1679
final RubyClass singletonClass = singletonClassNode .executeSingletonClass (module );
1682
1680
1683
1681
for (Object name : names ) {
1684
- setMethodVisibilityNode .executeSetMethodVisibility ( frame , singletonClass , name );
1682
+ setMethodVisibilityNode .execute ( singletonClass , name , Visibility . PRIVATE );
1685
1683
}
1686
1684
1687
1685
return module ;
@@ -1941,11 +1939,11 @@ protected RubyModule publicConstant(RubyModule module, Object[] args) {
1941
1939
@ CoreMethod (names = "protected" , rest = true , visibility = Visibility .PRIVATE )
1942
1940
public abstract static class ProtectedNode extends CoreMethodArrayArgumentsNode {
1943
1941
1944
- @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNodeGen .create (Visibility . PROTECTED );
1942
+ @ Child private SetVisibilityNode setVisibilityNode = SetVisibilityNode .create ();
1945
1943
1946
1944
@ Specialization
1947
1945
protected RubyModule doProtected (VirtualFrame frame , RubyModule module , Object [] names ) {
1948
- return setVisibilityNode .executeSetVisibility (frame , module , names );
1946
+ return setVisibilityNode .execute (frame , module , names , Visibility . PROTECTED );
1949
1947
}
1950
1948
1951
1949
}
@@ -2113,25 +2111,23 @@ protected RubyArray usedRefinements() {
2113
2111
2114
2112
public abstract static class SetVisibilityNode extends RubyContextNode {
2115
2113
2116
- private final Visibility visibility ;
2117
-
2118
- @ Child private SetMethodVisibilityNode setMethodVisibilityNode ;
2119
-
2120
- public SetVisibilityNode (Visibility visibility ) {
2121
- this .visibility = visibility ;
2122
- setMethodVisibilityNode = SetMethodVisibilityNodeGen .create (visibility );
2114
+ public static SetVisibilityNode create () {
2115
+ return SetVisibilityNodeGen .create ();
2123
2116
}
2124
2117
2125
- public abstract RubyModule executeSetVisibility (VirtualFrame frame , RubyModule module ,
2126
- Object [] arguments );
2118
+ @ Child private SetMethodVisibilityNode setMethodVisibilityNode = SetMethodVisibilityNode .create ();
2119
+
2120
+ public abstract RubyModule execute (VirtualFrame frame , RubyModule module , Object [] names ,
2121
+ Visibility visibility );
2127
2122
2128
2123
@ Specialization
2129
- protected RubyModule setVisibility (VirtualFrame frame , RubyModule module , Object [] names ) {
2124
+ protected RubyModule setVisibility (
2125
+ VirtualFrame frame , RubyModule module , Object [] names , Visibility visibility ) {
2130
2126
if (names .length == 0 ) {
2131
2127
DeclarationContext .setCurrentVisibility (getContext (), visibility );
2132
2128
} else {
2133
2129
for (Object name : names ) {
2134
- setMethodVisibilityNode .executeSetMethodVisibility ( frame , module , name );
2130
+ setMethodVisibilityNode .execute ( module , name , visibility );
2135
2131
}
2136
2132
}
2137
2133
@@ -2142,19 +2138,17 @@ protected RubyModule setVisibility(VirtualFrame frame, RubyModule module, Object
2142
2138
2143
2139
public abstract static class SetMethodVisibilityNode extends RubyContextNode {
2144
2140
2145
- private final Visibility visibility ;
2141
+ public static SetMethodVisibilityNode create () {
2142
+ return SetMethodVisibilityNodeGen .create ();
2143
+ }
2146
2144
2147
2145
@ Child private NameToJavaStringNode nameToJavaStringNode = NameToJavaStringNode .create ();
2148
2146
@ Child private AddMethodNode addMethodNode = AddMethodNode .create (true );
2149
2147
2150
- public SetMethodVisibilityNode (Visibility visibility ) {
2151
- this .visibility = visibility ;
2152
- }
2153
-
2154
- public abstract void executeSetMethodVisibility (VirtualFrame frame , RubyModule module , Object name );
2148
+ public abstract void execute (RubyModule module , Object name , Visibility visibility );
2155
2149
2156
2150
@ Specialization
2157
- protected void setMethodVisibility (RubyModule module , Object name ,
2151
+ protected void setMethodVisibility (RubyModule module , Object name , Visibility visibility ,
2158
2152
@ Cached BranchProfile errorProfile ) {
2159
2153
final String methodName = nameToJavaStringNode .execute (name );
2160
2154
0 commit comments