@@ -18,34 +18,20 @@ module Kernel {
1818 * providing a specific receiver as in `Kernel.exit`.
1919 */
2020 class KernelMethodCall extends DataFlow:: CallNode {
21- string methodName ;
22-
2321 KernelMethodCall ( ) {
24- this = API:: getTopLevelMember ( "Kernel" ) .getAMethodCall ( methodName )
22+ this = API:: getTopLevelMember ( "Kernel" ) .getAMethodCall ( _ )
2523 or
2624 this .asExpr ( ) .getExpr ( ) instanceof UnknownMethodCall and
27- (
28- methodName = super .getMethodName ( )
29- or
30- this .asExpr ( ) .getExpr ( ) instanceof SuperCall and
31- methodName = this .asExpr ( ) .getExpr ( ) .getEnclosingCallable ( ) .( MethodBase ) .getName ( )
32- ) and
3325 (
3426 this .getReceiver ( ) .asExpr ( ) .getExpr ( ) instanceof SelfVariableAccess and
35- isPrivateKernelMethod ( methodName )
27+ isPrivateKernelMethod ( super . getMethodName ( ) )
3628 or
3729 this .asExpr ( ) .getExpr ( ) instanceof SuperCall and
38- isPrivateKernelMethod ( methodName )
30+ isPrivateKernelMethod ( super . getMethodName ( ) )
3931 or
40- isPublicKernelMethod ( methodName )
32+ isPublicKernelMethod ( super . getMethodName ( ) )
4133 )
4234 }
43-
44- /**
45- * Gets which method of `Kernel` is called.
46- * Works even when the call is a `super(...)` call.
47- */
48- string getKernelMethod ( ) { result = methodName }
4935 }
5036
5137 /**
@@ -110,7 +96,7 @@ module Kernel {
11096 * Ruby documentation: https://docs.ruby-lang.org/en/3.0.0/Kernel.html#method-i-system
11197 */
11298 class KernelSystemCall extends SystemCommandExecution:: Range instanceof KernelMethodCall {
113- KernelSystemCall ( ) { this .getKernelMethod ( ) = "system" }
99+ KernelSystemCall ( ) { this .getMethodName ( ) = "system" }
114100
115101 override DataFlow:: Node getAnArgument ( ) { result = super .getArgument ( _) }
116102
@@ -126,7 +112,7 @@ module Kernel {
126112 * Ruby documentation: https://docs.ruby-lang.org/en/3.0.0/Kernel.html#method-i-exec
127113 */
128114 class KernelExecCall extends SystemCommandExecution:: Range instanceof KernelMethodCall {
129- KernelExecCall ( ) { this .getKernelMethod ( ) = "exec" }
115+ KernelExecCall ( ) { this .getMethodName ( ) = "exec" }
130116
131117 override DataFlow:: Node getAnArgument ( ) { result = super .getArgument ( _) }
132118
@@ -147,7 +133,7 @@ module Kernel {
147133 * ```
148134 */
149135 class KernelSpawnCall extends SystemCommandExecution:: Range instanceof KernelMethodCall {
150- KernelSpawnCall ( ) { this .getKernelMethod ( ) = "spawn" }
136+ KernelSpawnCall ( ) { this .getMethodName ( ) = "spawn" }
151137
152138 override DataFlow:: Node getAnArgument ( ) { result = super .getArgument ( _) }
153139
@@ -166,7 +152,7 @@ module Kernel {
166152 * ```
167153 */
168154 class EvalCallCodeExecution extends CodeExecution:: Range , KernelMethodCall {
169- EvalCallCodeExecution ( ) { this .getKernelMethod ( ) = "eval" }
155+ EvalCallCodeExecution ( ) { this .getMethodName ( ) = "eval" }
170156
171157 override DataFlow:: Node getCode ( ) { result = this .getArgument ( 0 ) }
172158 }
@@ -180,7 +166,7 @@ module Kernel {
180166 * ```
181167 */
182168 class SendCallCodeExecution extends CodeExecution:: Range , KernelMethodCall {
183- SendCallCodeExecution ( ) { this .getKernelMethod ( ) = "send" }
169+ SendCallCodeExecution ( ) { this .getMethodName ( ) = "send" }
184170
185171 override DataFlow:: Node getCode ( ) { result = this .getArgument ( 0 ) }
186172
@@ -200,15 +186,15 @@ module Kernel {
200186 /** A call to e.g. `Kernel.load` that accesses a file. */
201187 private class KernelFileAccess extends FileSystemAccess:: Range instanceof KernelMethodCall {
202188 KernelFileAccess ( ) {
203- super .getKernelMethod ( ) = [ "load" , "require" , "require_relative" , "autoload" , "autoload?" ]
189+ super .getMethodName ( ) = [ "load" , "require" , "require_relative" , "autoload" , "autoload?" ]
204190 }
205191
206192 override DataFlow:: Node getAPathArgument ( ) {
207193 result = super .getArgument ( 0 ) and
208- super .getKernelMethod ( ) = [ "load" , "require" , "require_relative" ]
194+ super .getMethodName ( ) = [ "load" , "require" , "require_relative" ]
209195 or
210196 result = super .getArgument ( 1 ) and
211- super .getKernelMethod ( ) = [ "autoload" , "autoload?" ]
197+ super .getMethodName ( ) = [ "autoload" , "autoload?" ]
212198 }
213199 }
214200}
0 commit comments