Model private methods and "main objects"

This commit is contained in:
Tom Hvitved
2021-07-01 10:48:35 +02:00
parent 9de4ed4d4d
commit 52529d590b
12 changed files with 194 additions and 267 deletions

View File

@@ -53,6 +53,9 @@ class AstNode extends TAstNode {
/** Gets the location of this node. */
Location getLocation() { result = getLocation(this) }
/** Gets the file of this node. */
final File getFile() { result = this.getLocation().getFile() }
/** Gets a child node of this `AstNode`. */
final AstNode getAChild() { result = this.getAChild(_) }

View File

@@ -33,6 +33,11 @@ class MethodBase extends Callable, BodyStmt, Scope, TMethodBase {
}
}
/** A call to `private`. */
private class Private extends MethodCall {
Private() { this.getMethodName() = "private" }
}
/** A normal method. */
class Method extends MethodBase, TMethod {
private Generated::Method g;
@@ -58,6 +63,54 @@ class Method extends MethodBase, TMethod {
*/
final predicate isSetter() { g.getName() instanceof Generated::Setter }
/**
* Holds if this method is private. All methods with the name prefix
* `private` are private below:
*
* ```rb
* class C
* private def private1
* end
*
* def public
* end
*
* def private2
* end
* private :private2
*
* private
*
* def private3
* end
*
* def private4
* end
* end
* ```
*/
predicate isPrivate() {
this = any(Private p).getArgument(0)
or
exists(ClassDeclaration c, Private p, SymbolLiteral s |
p.getArgument(0) = s and
p = c.getAStmt() and
this.getName() = s.getValueText() and
this = c.getAStmt()
)
or
exists(ClassDeclaration c, int i, int j |
c.getStmt(i).(Private).getNumberOfArguments() = 0 and
this = c.getStmt(j) and
j > i
)
or
// Top-level methods are private members of the special "main object" (except
// when run through `irb`), see e.g.
// https://codequizzes.wordpress.com/2014/04/23/rubys-main-object-top-level-context/
this.getEnclosingModule() instanceof Toplevel
}
final override Parameter getParameter(int n) {
toGenerated(result) = g.getParameters().getChild(n)
}

View File

@@ -29,6 +29,11 @@ class Module extends TModule {
this = TResolved(result)
or
exists(Namespace n | this = TUnresolved(n) and result = "...::" + n.toString())
or
exists(Toplevel t |
this = TMain(t) and
result = "Main(" + t.toString() + ")"
)
}
/** Gets the location of this module. */
@@ -47,6 +52,11 @@ class Module extends TModule {
weight, count(n.getAStmt()) desc, loc.getFile().getAbsolutePath(), loc.getStartLine(),
loc.getStartColumn()
)
or
exists(Toplevel t |
this = TMain(t) and
result = t.getLocation()
)
}
}
@@ -114,7 +124,7 @@ class Toplevel extends ModuleBase, TToplevel {
pred = "getBeginBlock" and result = this.getBeginBlock(_)
}
final override Module getModule() { result = TResolved("Object") }
final override Module getModule() { result = TMain(this) }
final override string toString() { result = g.getLocation().getFile().getBaseName() }
}

View File

@@ -25,7 +25,8 @@ private module Cached {
or
qName = namespaceDeclaration(_)
} or
TUnresolved(Namespace n) { not exists(namespaceDeclaration(n)) }
TUnresolved(Namespace n) { not exists(namespaceDeclaration(n)) } or
TMain(Toplevel t)
cached
string namespaceDeclaration(Namespace n) {
@@ -61,11 +62,14 @@ private module Cached {
result = resolveScopeExpr(d.getSuperclassExpr())
)
or
result = TResolved("Object") and
forex(ClassDeclaration d | d = cls.getADeclaration() |
not exists(resolveScopeExpr(d.getSuperclassExpr()))
)
) and
result = TMain(cls.getADeclaration().getEnclosingModule())
)
or
cls = TMain(_) and
result = TResolved("Object")
}
cached

View File

@@ -39,6 +39,9 @@ class CfgNode extends TCfgNode {
/** Gets the location of this control flow node. */
Location getLocation() { none() }
/** Gets the file of this control flow node. */
final File getFile() { result = this.getLocation().getFile() }
/** Holds if this control flow node has conditional successors. */
final predicate isCondition() { exists(this.getASuccessor(any(BooleanSuccessor bs))) }

View File

@@ -84,7 +84,15 @@ class DataFlowCall extends CfgNodes::ExprNodes::CallCfgNode {
exists(string method |
exists(Module tp |
this.instanceMethodCall(tp, method) and
result = lookupMethod(tp, method)
result = lookupMethod(tp, method) and
if result.(Method).isPrivate()
then
exists(Self self |
self = this.getReceiver().getExpr() and
pragma[only_bind_out](self.getEnclosingModule().getModule().getSuperClass*()) =
pragma[only_bind_out](result.getEnclosingModule().getModule())
)
else any()
)
or
exists(DataFlow::LocalSourceNode sourceNode |
@@ -158,7 +166,7 @@ private DataFlow::LocalSourceNode trackInstance(Module tp, TypeTracker t) {
exists(Self self, Toplevel enclosing |
self = result.asExpr().getExpr() and
enclosing = self.getEnclosingModule() and
tp = TResolved("Object") and
tp = TMain(enclosing) and
not self.getEnclosingMethod().getEnclosingModule() = enclosing
)
or

View File

@@ -1,3 +1,19 @@
calls.rb:
# 1| Main(calls.rb)
#-----| super -> Object
hello.rb:
# 1| Main(hello.rb)
#-----| super -> Object
modules.rb:
# 1| Main(modules.rb)
#-----| super -> Object
private.rb:
# 1| Main(private.rb)
#-----| super -> Object
calls.rb:
# 102| Hash
#-----| super -> Object
@@ -51,7 +67,8 @@ calls.rb:
private.rb:
# 1| C
#-----| super -> Object
#-----| super -> Main(calls.rb)
#-----| super -> Main(private.rb)
#-----| include -> M
calls.rb:
@@ -59,10 +76,10 @@ calls.rb:
#-----| super -> C
# 82| String
#-----| super -> Object
#-----| super -> Main(calls.rb)
# 144| S
#-----| super -> Object
#-----| super -> Main(calls.rb)
# 150| A
#-----| super -> S
@@ -74,7 +91,7 @@ hello.rb:
# 1| EnglishWords
# 11| Greeting
#-----| super -> Object
#-----| super -> Main(hello.rb)
#-----| include -> EnglishWords
# 18| HelloWorld
@@ -86,7 +103,7 @@ modules.rb:
# 4| Foo
# 37| Bar
#-----| super -> Object
#-----| super -> Main(modules.rb)
# 60| MyModuleInGlobalScope
@@ -106,17 +123,15 @@ modules.rb:
# 107| MM
# 112| YY
#-----| super -> Object
#-----| super -> Main(modules.rb)
# 115| XX
# 5| Foo::Bar
# 19| Foo::ClassInFoo
#-----| super -> Object
# 30| Foo::ClassInAnotherDefinitionOfFoo
#-----| super -> Object
# 116| XX::YY
#-----| super -> YY
@@ -130,17 +145,14 @@ modules.rb:
# 84| Other::Foo1
# 6| Foo::Bar::ClassInFooBar
#-----| super -> Object
# 71| Test::Foo2::Foo2
# 108| MM::MM
# 49| Foo::Bar::ClassInAnotherDefinitionOfFooBar
#-----| super -> Object
# 66| Test::Foo1::Bar
#-----| super -> Object
# 91| Test::Foo1::Y
@@ -149,6 +161,5 @@ modules.rb:
# 103| Test::Foo2::Y
# 72| Test::Foo2::Foo2::Bar
#-----| super -> Object
# 120| Test::Foo1::Bar::Baz

View File

@@ -61,7 +61,6 @@ getTarget
| calls.rb:162:1:162:5 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:162:1:162:14 | call to s_method | calls.rb:145:5:147:7 | s_method |
| calls.rb:167:1:167:15 | call to private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:167:1:167:15 | call to private_on_main | private.rb:21:1:22:3 | private_on_main |
| hello.rb:12:5:12:24 | call to include | calls.rb:92:5:92:20 | include |
| hello.rb:14:16:14:20 | call to hello | hello.rb:2:5:4:7 | hello |
| hello.rb:20:16:20:20 | call to super | hello.rb:13:5:15:7 | message |
@@ -81,14 +80,10 @@ getTarget
| private.rb:12:3:12:9 | call to private | calls.rb:94:5:94:20 | private |
| private.rb:24:1:24:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:25:1:25:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:25:1:25:14 | call to private2 | private.rb:8:3:9:5 | private2 |
| private.rb:26:1:26:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:26:1:26:14 | call to private3 | private.rb:14:3:15:5 | private3 |
| private.rb:27:1:27:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:27:1:27:14 | call to private4 | private.rb:17:3:18:5 | private4 |
| private.rb:28:1:28:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:28:1:28:12 | call to public | private.rb:5:3:6:5 | public |
| private.rb:30:1:30:15 | call to private_on_main | calls.rb:164:1:165:3 | private_on_main |
| private.rb:30:1:30:15 | call to private_on_main | private.rb:21:1:22:3 | private_on_main |
unresolvedCall
| calls.rb:19:5:19:14 | call to instance_m |
@@ -106,3 +101,19 @@ unresolvedCall
| calls.rb:133:28:133:39 | call to capitalize |
| calls.rb:135:32:135:36 | call to abs |
| private.rb:24:1:24:14 | call to private1 |
| private.rb:25:1:25:14 | call to private2 |
| private.rb:26:1:26:14 | call to private3 |
| private.rb:27:1:27:14 | call to private4 |
privateMethod
| calls.rb:1:1:3:3 | foo |
| calls.rb:62:1:65:3 | optional_arg |
| calls.rb:67:1:69:3 | call_block |
| calls.rb:71:1:75:3 | foo |
| calls.rb:119:1:121:3 | funny |
| calls.rb:137:1:139:3 | indirect |
| calls.rb:164:1:165:3 | private_on_main |
| private.rb:2:11:3:5 | private1 |
| private.rb:8:3:9:5 | private2 |
| private.rb:14:3:15:5 | private3 |
| private.rb:17:3:18:5 | private4 |
| private.rb:21:1:22:3 | private_on_main |

View File

@@ -3,3 +3,5 @@ import ruby
query Callable getTarget(Call call) { result = call.getATarget() }
query predicate unresolvedCall(Call call) { not exists(call.getATarget()) }
query predicate privateMethod(Method m) { m.isPrivate() }

View File

@@ -1,4 +1,11 @@
getMethod
| calls.rb:1:1:167:16 | Main(calls.rb) | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:1:1:167:16 | Main(calls.rb) | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:1:1:167:16 | Main(calls.rb) | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:1:1:167:16 | Main(calls.rb) | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:1:1:167:16 | Main(calls.rb) | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:1:1:167:16 | Main(calls.rb) | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:1:1:167:16 | Main(calls.rb) | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:15:1:24:3 | M | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:51:1:55:3 | D | baz | calls.rb:52:5:54:7 | baz |
| calls.rb:77:1:80:3 | Integer | abs | calls.rb:79:5:79:16 | abs |
@@ -9,15 +16,7 @@ getMethod
| calls.rb:90:1:95:3 | Module | module_eval | calls.rb:91:5:91:24 | module_eval |
| calls.rb:90:1:95:3 | Module | prepend | calls.rb:93:5:93:20 | prepend |
| calls.rb:90:1:95:3 | Module | private | calls.rb:94:5:94:20 | private |
| calls.rb:97:1:100:3 | Object | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:97:1:100:3 | Object | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:97:1:100:3 | Object | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:97:1:100:3 | Object | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:97:1:100:3 | Object | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:97:1:100:3 | Object | new | calls.rb:99:5:99:16 | new |
| calls.rb:97:1:100:3 | Object | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:97:1:100:3 | Object | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:97:1:100:3 | Object | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:102:1:104:3 | Hash | [] | calls.rb:103:5:103:15 | [] |
| calls.rb:106:1:117:3 | Array | [] | calls.rb:107:3:107:13 | [] |
| calls.rb:106:1:117:3 | Array | foreach | calls.rb:110:3:116:5 | foreach |
@@ -40,7 +39,17 @@ getMethod
| private.rb:1:1:19:3 | C | private3 | private.rb:14:3:15:5 | private3 |
| private.rb:1:1:19:3 | C | private4 | private.rb:17:3:18:5 | private4 |
| private.rb:1:1:19:3 | C | public | private.rb:5:3:6:5 | public |
| private.rb:1:1:30:15 | Main(private.rb) | private_on_main | private.rb:21:1:22:3 | private_on_main |
lookupMethod
| calls.rb:1:1:167:16 | Main(calls.rb) | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:1:1:167:16 | Main(calls.rb) | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:1:1:167:16 | Main(calls.rb) | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:1:1:167:16 | Main(calls.rb) | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:1:1:167:16 | Main(calls.rb) | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:1:1:167:16 | Main(calls.rb) | new | calls.rb:99:5:99:16 | new |
| calls.rb:1:1:167:16 | Main(calls.rb) | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:1:1:167:16 | Main(calls.rb) | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:1:1:167:16 | Main(calls.rb) | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:15:1:24:3 | M | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:51:1:55:3 | D | baz | calls.rb:52:5:54:7 | baz |
| calls.rb:51:1:55:3 | D | call_block | calls.rb:67:1:69:3 | call_block |
@@ -60,15 +69,7 @@ lookupMethod
| calls.rb:51:1:55:3 | D | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:77:1:80:3 | Integer | abs | calls.rb:79:5:79:16 | abs |
| calls.rb:77:1:80:3 | Integer | bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:77:1:80:3 | Integer | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:77:1:80:3 | Integer | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:77:1:80:3 | Integer | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:77:1:80:3 | Integer | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:77:1:80:3 | Integer | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:77:1:80:3 | Integer | new | calls.rb:99:5:99:16 | new |
| calls.rb:77:1:80:3 | Integer | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:77:1:80:3 | Integer | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:77:1:80:3 | Integer | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:77:1:80:3 | Integer | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:82:1:84:3 | String | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:82:1:84:3 | String | capitalize | calls.rb:83:5:83:23 | capitalize |
@@ -79,56 +80,23 @@ lookupMethod
| calls.rb:82:1:84:3 | String | new | calls.rb:99:5:99:16 | new |
| calls.rb:82:1:84:3 | String | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:82:1:84:3 | String | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:82:1:84:3 | String | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:82:1:84:3 | String | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:86:1:88:3 | Kernel | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:90:1:95:3 | Module | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:90:1:95:3 | Module | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:90:1:95:3 | Module | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:90:1:95:3 | Module | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:90:1:95:3 | Module | include | calls.rb:92:5:92:20 | include |
| calls.rb:90:1:95:3 | Module | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:90:1:95:3 | Module | module_eval | calls.rb:91:5:91:24 | module_eval |
| calls.rb:90:1:95:3 | Module | new | calls.rb:99:5:99:16 | new |
| calls.rb:90:1:95:3 | Module | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:90:1:95:3 | Module | prepend | calls.rb:93:5:93:20 | prepend |
| calls.rb:90:1:95:3 | Module | private | calls.rb:94:5:94:20 | private |
| calls.rb:90:1:95:3 | Module | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:90:1:95:3 | Module | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:90:1:95:3 | Module | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:97:1:100:3 | Object | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:97:1:100:3 | Object | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:97:1:100:3 | Object | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:97:1:100:3 | Object | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:97:1:100:3 | Object | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:97:1:100:3 | Object | new | calls.rb:99:5:99:16 | new |
| calls.rb:97:1:100:3 | Object | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:97:1:100:3 | Object | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:97:1:100:3 | Object | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:97:1:100:3 | Object | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:102:1:104:3 | Hash | [] | calls.rb:103:5:103:15 | [] |
| calls.rb:102:1:104:3 | Hash | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:102:1:104:3 | Hash | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:102:1:104:3 | Hash | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:102:1:104:3 | Hash | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:102:1:104:3 | Hash | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:102:1:104:3 | Hash | new | calls.rb:99:5:99:16 | new |
| calls.rb:102:1:104:3 | Hash | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:102:1:104:3 | Hash | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:102:1:104:3 | Hash | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:102:1:104:3 | Hash | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:106:1:117:3 | Array | [] | calls.rb:107:3:107:13 | [] |
| calls.rb:106:1:117:3 | Array | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:106:1:117:3 | Array | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:106:1:117:3 | Array | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:106:1:117:3 | Array | foreach | calls.rb:110:3:116:5 | foreach |
| calls.rb:106:1:117:3 | Array | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:106:1:117:3 | Array | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:106:1:117:3 | Array | length | calls.rb:108:3:108:17 | length |
| calls.rb:106:1:117:3 | Array | new | calls.rb:99:5:99:16 | new |
| calls.rb:106:1:117:3 | Array | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:106:1:117:3 | Array | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:106:1:117:3 | Array | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:106:1:117:3 | Array | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:144:1:148:3 | S | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:144:1:148:3 | S | foo | calls.rb:1:1:3:3 | foo |
@@ -138,7 +106,6 @@ lookupMethod
| calls.rb:144:1:148:3 | S | new | calls.rb:99:5:99:16 | new |
| calls.rb:144:1:148:3 | S | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:144:1:148:3 | S | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:144:1:148:3 | S | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:144:1:148:3 | S | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:144:1:148:3 | S | s_method | calls.rb:145:5:147:7 | s_method |
| calls.rb:150:1:153:3 | A | call_block | calls.rb:67:1:69:3 | call_block |
@@ -149,7 +116,6 @@ lookupMethod
| calls.rb:150:1:153:3 | A | new | calls.rb:99:5:99:16 | new |
| calls.rb:150:1:153:3 | A | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:150:1:153:3 | A | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:150:1:153:3 | A | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:150:1:153:3 | A | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:150:1:153:3 | A | s_method | calls.rb:145:5:147:7 | s_method |
| calls.rb:150:1:153:3 | A | to_s | calls.rb:151:5:152:7 | to_s |
@@ -161,217 +127,56 @@ lookupMethod
| calls.rb:155:1:158:3 | B | new | calls.rb:99:5:99:16 | new |
| calls.rb:155:1:158:3 | B | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:155:1:158:3 | B | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:155:1:158:3 | B | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:155:1:158:3 | B | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:155:1:158:3 | B | s_method | calls.rb:145:5:147:7 | s_method |
| calls.rb:155:1:158:3 | B | to_s | calls.rb:156:5:157:7 | to_s |
| file://:0:0:0:0 | Class | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | Class | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | Class | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | Class | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | Class | include | calls.rb:92:5:92:20 | include |
| file://:0:0:0:0 | Class | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | Class | module_eval | calls.rb:91:5:91:24 | module_eval |
| file://:0:0:0:0 | Class | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | Class | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | Class | prepend | calls.rb:93:5:93:20 | prepend |
| file://:0:0:0:0 | Class | private | calls.rb:94:5:94:20 | private |
| file://:0:0:0:0 | Class | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | Class | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | Class | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | Complex | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | Complex | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | Complex | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | Complex | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | Complex | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | Complex | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | Complex | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | Complex | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | Complex | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | Complex | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | FalseClass | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | FalseClass | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | FalseClass | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | FalseClass | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | FalseClass | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | FalseClass | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | FalseClass | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | FalseClass | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | FalseClass | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | FalseClass | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | Float | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | Float | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | Float | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | Float | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | Float | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | Float | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | Float | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | Float | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | Float | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | Float | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | NilClass | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | NilClass | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | NilClass | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | NilClass | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | NilClass | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | NilClass | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | NilClass | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | NilClass | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | NilClass | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | NilClass | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | Numeric | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | Numeric | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | Numeric | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | Numeric | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | Numeric | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | Numeric | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | Numeric | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | Numeric | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | Numeric | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | Numeric | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | Rational | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | Rational | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | Rational | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | Rational | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | Rational | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | Rational | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | Rational | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | Rational | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | Rational | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | Rational | puts | calls.rb:87:5:87:17 | puts |
| file://:0:0:0:0 | TrueClass | call_block | calls.rb:67:1:69:3 | call_block |
| file://:0:0:0:0 | TrueClass | foo | calls.rb:1:1:3:3 | foo |
| file://:0:0:0:0 | TrueClass | foo | calls.rb:71:1:75:3 | foo |
| file://:0:0:0:0 | TrueClass | funny | calls.rb:119:1:121:3 | funny |
| file://:0:0:0:0 | TrueClass | indirect | calls.rb:137:1:139:3 | indirect |
| file://:0:0:0:0 | TrueClass | new | calls.rb:99:5:99:16 | new |
| file://:0:0:0:0 | TrueClass | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| file://:0:0:0:0 | TrueClass | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| file://:0:0:0:0 | TrueClass | private_on_main | private.rb:21:1:22:3 | private_on_main |
| file://:0:0:0:0 | TrueClass | puts | calls.rb:87:5:87:17 | puts |
| hello.rb:1:1:8:3 | EnglishWords | hello | hello.rb:2:5:4:7 | hello |
| hello.rb:1:1:8:3 | EnglishWords | world | hello.rb:5:5:7:7 | world |
| hello.rb:11:1:16:3 | Greeting | call_block | calls.rb:67:1:69:3 | call_block |
| hello.rb:11:1:16:3 | Greeting | foo | calls.rb:1:1:3:3 | foo |
| hello.rb:11:1:16:3 | Greeting | foo | calls.rb:71:1:75:3 | foo |
| hello.rb:11:1:16:3 | Greeting | funny | calls.rb:119:1:121:3 | funny |
| hello.rb:1:1:22:3 | Main(hello.rb) | new | calls.rb:99:5:99:16 | new |
| hello.rb:1:1:22:3 | Main(hello.rb) | puts | calls.rb:87:5:87:17 | puts |
| hello.rb:11:1:16:3 | Greeting | hello | hello.rb:2:5:4:7 | hello |
| hello.rb:11:1:16:3 | Greeting | indirect | calls.rb:137:1:139:3 | indirect |
| hello.rb:11:1:16:3 | Greeting | message | hello.rb:13:5:15:7 | message |
| hello.rb:11:1:16:3 | Greeting | new | calls.rb:99:5:99:16 | new |
| hello.rb:11:1:16:3 | Greeting | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| hello.rb:11:1:16:3 | Greeting | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| hello.rb:11:1:16:3 | Greeting | private_on_main | private.rb:21:1:22:3 | private_on_main |
| hello.rb:11:1:16:3 | Greeting | puts | calls.rb:87:5:87:17 | puts |
| hello.rb:11:1:16:3 | Greeting | world | hello.rb:5:5:7:7 | world |
| hello.rb:18:1:22:3 | HelloWorld | call_block | calls.rb:67:1:69:3 | call_block |
| hello.rb:18:1:22:3 | HelloWorld | foo | calls.rb:1:1:3:3 | foo |
| hello.rb:18:1:22:3 | HelloWorld | foo | calls.rb:71:1:75:3 | foo |
| hello.rb:18:1:22:3 | HelloWorld | funny | calls.rb:119:1:121:3 | funny |
| hello.rb:18:1:22:3 | HelloWorld | hello | hello.rb:2:5:4:7 | hello |
| hello.rb:18:1:22:3 | HelloWorld | indirect | calls.rb:137:1:139:3 | indirect |
| hello.rb:18:1:22:3 | HelloWorld | message | hello.rb:19:5:21:7 | message |
| hello.rb:18:1:22:3 | HelloWorld | new | calls.rb:99:5:99:16 | new |
| hello.rb:18:1:22:3 | HelloWorld | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| hello.rb:18:1:22:3 | HelloWorld | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| hello.rb:18:1:22:3 | HelloWorld | private_on_main | private.rb:21:1:22:3 | private_on_main |
| hello.rb:18:1:22:3 | HelloWorld | puts | calls.rb:87:5:87:17 | puts |
| hello.rb:18:1:22:3 | HelloWorld | world | hello.rb:5:5:7:7 | world |
| modules.rb:1:1:122:1 | Main(modules.rb) | new | calls.rb:99:5:99:16 | new |
| modules.rb:1:1:122:1 | Main(modules.rb) | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:4:1:24:3 | Foo | method_in_another_definition_of_foo | modules.rb:27:3:28:5 | method_in_another_definition_of_foo |
| modules.rb:4:1:24:3 | Foo | method_in_foo | modules.rb:16:3:17:5 | method_in_foo |
| modules.rb:5:3:14:5 | Foo::Bar | method_in_another_definition_of_foo_bar | modules.rb:52:3:53:5 | method_in_another_definition_of_foo_bar |
| modules.rb:5:3:14:5 | Foo::Bar | method_in_foo_bar | modules.rb:9:5:10:7 | method_in_foo_bar |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | new | calls.rb:99:5:99:16 | new |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | new | calls.rb:99:5:99:16 | new |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | new | calls.rb:99:5:99:16 | new |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:37:1:46:3 | Bar | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:37:1:46:3 | Bar | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:37:1:46:3 | Bar | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:37:1:46:3 | Bar | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:37:1:46:3 | Bar | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:37:1:46:3 | Bar | method_a | modules.rb:38:3:39:5 | method_a |
| modules.rb:37:1:46:3 | Bar | method_b | modules.rb:41:3:42:5 | method_b |
| modules.rb:37:1:46:3 | Bar | new | calls.rb:99:5:99:16 | new |
| modules.rb:37:1:46:3 | Bar | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:37:1:46:3 | Bar | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:37:1:46:3 | Bar | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:37:1:46:3 | Bar | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | new | calls.rb:99:5:99:16 | new |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | new | calls.rb:99:5:99:16 | new |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | new | calls.rb:99:5:99:16 | new |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:112:1:113:3 | YY | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:112:1:113:3 | YY | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:112:1:113:3 | YY | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:112:1:113:3 | YY | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:112:1:113:3 | YY | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:112:1:113:3 | YY | new | calls.rb:99:5:99:16 | new |
| modules.rb:112:1:113:3 | YY | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:112:1:113:3 | YY | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:112:1:113:3 | YY | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:112:1:113:3 | YY | puts | calls.rb:87:5:87:17 | puts |
| modules.rb:116:7:117:9 | XX::YY | call_block | calls.rb:67:1:69:3 | call_block |
| modules.rb:116:7:117:9 | XX::YY | foo | calls.rb:1:1:3:3 | foo |
| modules.rb:116:7:117:9 | XX::YY | foo | calls.rb:71:1:75:3 | foo |
| modules.rb:116:7:117:9 | XX::YY | funny | calls.rb:119:1:121:3 | funny |
| modules.rb:116:7:117:9 | XX::YY | indirect | calls.rb:137:1:139:3 | indirect |
| modules.rb:116:7:117:9 | XX::YY | new | calls.rb:99:5:99:16 | new |
| modules.rb:116:7:117:9 | XX::YY | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| modules.rb:116:7:117:9 | XX::YY | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| modules.rb:116:7:117:9 | XX::YY | private_on_main | private.rb:21:1:22:3 | private_on_main |
| modules.rb:116:7:117:9 | XX::YY | puts | calls.rb:87:5:87:17 | puts |
| private.rb:1:1:19:3 | C | baz | calls.rb:37:5:43:7 | baz |
| private.rb:1:1:19:3 | C | call_block | calls.rb:67:1:69:3 | call_block |
@@ -389,3 +194,6 @@ lookupMethod
| private.rb:1:1:19:3 | C | private_on_main | private.rb:21:1:22:3 | private_on_main |
| private.rb:1:1:19:3 | C | public | private.rb:5:3:6:5 | public |
| private.rb:1:1:19:3 | C | puts | calls.rb:87:5:87:17 | puts |
| private.rb:1:1:30:15 | Main(private.rb) | new | calls.rb:99:5:99:16 | new |
| private.rb:1:1:30:15 | Main(private.rb) | private_on_main | private.rb:21:1:22:3 | private_on_main |
| private.rb:1:1:30:15 | Main(private.rb) | puts | calls.rb:87:5:87:17 | puts |

View File

@@ -1,4 +1,5 @@
getModule
| calls.rb:1:1:167:16 | Main(calls.rb) |
| calls.rb:15:1:24:3 | M |
| calls.rb:51:1:55:3 | D |
| calls.rb:77:1:80:3 | Integer |
@@ -23,9 +24,11 @@ getModule
| file://:0:0:0:0 | Symbol |
| file://:0:0:0:0 | TrueClass |
| hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:1:1:22:3 | Main(hello.rb) |
| hello.rb:11:1:16:3 | Greeting |
| hello.rb:18:1:22:3 | HelloWorld |
| modules.rb:1:1:2:3 | Empty |
| modules.rb:1:1:122:1 | Main(modules.rb) |
| modules.rb:4:1:24:3 | Foo |
| modules.rb:5:3:14:5 | Foo::Bar |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar |
@@ -56,27 +59,27 @@ getModule
| modules.rb:116:7:117:9 | XX::YY |
| modules.rb:120:1:121:3 | Test::Foo1::Bar::Baz |
| private.rb:1:1:19:3 | C |
| private.rb:1:1:30:15 | Main(private.rb) |
getADeclaration
| calls.rb:1:1:167:16 | Main(calls.rb) | calls.rb:1:1:167:16 | calls.rb |
| calls.rb:15:1:24:3 | M | calls.rb:15:1:24:3 | M |
| calls.rb:51:1:55:3 | D | calls.rb:51:1:55:3 | D |
| calls.rb:77:1:80:3 | Integer | calls.rb:77:1:80:3 | Integer |
| calls.rb:82:1:84:3 | String | calls.rb:82:1:84:3 | String |
| calls.rb:86:1:88:3 | Kernel | calls.rb:86:1:88:3 | Kernel |
| calls.rb:90:1:95:3 | Module | calls.rb:90:1:95:3 | Module |
| calls.rb:97:1:100:3 | Object | calls.rb:1:1:167:16 | calls.rb |
| calls.rb:97:1:100:3 | Object | calls.rb:97:1:100:3 | Object |
| calls.rb:97:1:100:3 | Object | hello.rb:1:1:22:3 | hello.rb |
| calls.rb:97:1:100:3 | Object | modules.rb:1:1:122:1 | modules.rb |
| calls.rb:97:1:100:3 | Object | private.rb:1:1:30:15 | private.rb |
| calls.rb:102:1:104:3 | Hash | calls.rb:102:1:104:3 | Hash |
| calls.rb:106:1:117:3 | Array | calls.rb:106:1:117:3 | Array |
| calls.rb:144:1:148:3 | S | calls.rb:144:1:148:3 | S |
| calls.rb:150:1:153:3 | A | calls.rb:150:1:153:3 | A |
| calls.rb:155:1:158:3 | B | calls.rb:155:1:158:3 | B |
| hello.rb:1:1:8:3 | EnglishWords | hello.rb:1:1:8:3 | EnglishWords |
| hello.rb:1:1:22:3 | Main(hello.rb) | hello.rb:1:1:22:3 | hello.rb |
| hello.rb:11:1:16:3 | Greeting | hello.rb:11:1:16:3 | Greeting |
| hello.rb:18:1:22:3 | HelloWorld | hello.rb:18:1:22:3 | HelloWorld |
| modules.rb:1:1:2:3 | Empty | modules.rb:1:1:2:3 | Empty |
| modules.rb:1:1:122:1 | Main(modules.rb) | modules.rb:1:1:122:1 | modules.rb |
| modules.rb:4:1:24:3 | Foo | modules.rb:4:1:24:3 | Foo |
| modules.rb:4:1:24:3 | Foo | modules.rb:26:1:35:3 | Foo |
| modules.rb:5:3:14:5 | Foo::Bar | modules.rb:5:3:14:5 | Bar |
@@ -111,15 +114,17 @@ getADeclaration
| modules.rb:120:1:121:3 | Test::Foo1::Bar::Baz | modules.rb:120:1:121:3 | Baz |
| private.rb:1:1:19:3 | C | calls.rb:29:1:44:3 | C |
| private.rb:1:1:19:3 | C | private.rb:1:1:19:3 | C |
| private.rb:1:1:30:15 | Main(private.rb) | private.rb:1:1:30:15 | private.rb |
getSuperClass
| calls.rb:1:1:167:16 | Main(calls.rb) | calls.rb:97:1:100:3 | Object |
| calls.rb:51:1:55:3 | D | private.rb:1:1:19:3 | C |
| calls.rb:77:1:80:3 | Integer | file://:0:0:0:0 | Numeric |
| calls.rb:82:1:84:3 | String | calls.rb:97:1:100:3 | Object |
| calls.rb:82:1:84:3 | String | calls.rb:1:1:167:16 | Main(calls.rb) |
| calls.rb:90:1:95:3 | Module | calls.rb:97:1:100:3 | Object |
| calls.rb:97:1:100:3 | Object | file://:0:0:0:0 | BasicObject |
| calls.rb:102:1:104:3 | Hash | calls.rb:97:1:100:3 | Object |
| calls.rb:106:1:117:3 | Array | calls.rb:97:1:100:3 | Object |
| calls.rb:144:1:148:3 | S | calls.rb:97:1:100:3 | Object |
| calls.rb:144:1:148:3 | S | calls.rb:1:1:167:16 | Main(calls.rb) |
| calls.rb:150:1:153:3 | A | calls.rb:144:1:148:3 | S |
| calls.rb:155:1:158:3 | B | calls.rb:144:1:148:3 | S |
| file://:0:0:0:0 | Class | calls.rb:90:1:95:3 | Module |
@@ -130,18 +135,16 @@ getSuperClass
| file://:0:0:0:0 | Numeric | calls.rb:97:1:100:3 | Object |
| file://:0:0:0:0 | Rational | file://:0:0:0:0 | Numeric |
| file://:0:0:0:0 | TrueClass | calls.rb:97:1:100:3 | Object |
| hello.rb:11:1:16:3 | Greeting | calls.rb:97:1:100:3 | Object |
| hello.rb:1:1:22:3 | Main(hello.rb) | calls.rb:97:1:100:3 | Object |
| hello.rb:11:1:16:3 | Greeting | hello.rb:1:1:22:3 | Main(hello.rb) |
| hello.rb:18:1:22:3 | HelloWorld | hello.rb:11:1:16:3 | Greeting |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | calls.rb:97:1:100:3 | Object |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | calls.rb:97:1:100:3 | Object |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | calls.rb:97:1:100:3 | Object |
| modules.rb:37:1:46:3 | Bar | calls.rb:97:1:100:3 | Object |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | calls.rb:97:1:100:3 | Object |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | calls.rb:97:1:100:3 | Object |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | calls.rb:97:1:100:3 | Object |
| modules.rb:112:1:113:3 | YY | calls.rb:97:1:100:3 | Object |
| modules.rb:1:1:122:1 | Main(modules.rb) | calls.rb:97:1:100:3 | Object |
| modules.rb:37:1:46:3 | Bar | modules.rb:1:1:122:1 | Main(modules.rb) |
| modules.rb:112:1:113:3 | YY | modules.rb:1:1:122:1 | Main(modules.rb) |
| modules.rb:116:7:117:9 | XX::YY | modules.rb:112:1:113:3 | YY |
| private.rb:1:1:19:3 | C | calls.rb:97:1:100:3 | Object |
| private.rb:1:1:19:3 | C | calls.rb:1:1:167:16 | Main(calls.rb) |
| private.rb:1:1:19:3 | C | private.rb:1:1:30:15 | Main(private.rb) |
| private.rb:1:1:30:15 | Main(private.rb) | calls.rb:97:1:100:3 | Object |
getAPrependedModule
| modules.rb:101:1:105:3 | PrependTest | modules.rb:63:1:81:3 | Test |
getAnIncludedModule

View File

@@ -1,3 +1,19 @@
calls.rb:
# 1| Main(calls.rb)
#-----| -> Object
hello.rb:
# 1| Main(hello.rb)
#-----| -> Object
modules.rb:
# 1| Main(modules.rb)
#-----| -> Object
private.rb:
# 1| Main(private.rb)
#-----| -> Object
calls.rb:
# 102| Hash
#-----| -> Object
@@ -50,17 +66,18 @@ calls.rb:
private.rb:
# 1| C
#-----| -> Object
#-----| -> Main(calls.rb)
#-----| -> Main(private.rb)
calls.rb:
# 51| D
#-----| -> C
# 82| String
#-----| -> Object
#-----| -> Main(calls.rb)
# 144| S
#-----| -> Object
#-----| -> Main(calls.rb)
# 150| A
#-----| -> S
@@ -72,7 +89,7 @@ hello.rb:
# 1| EnglishWords
# 11| Greeting
#-----| -> Object
#-----| -> Main(hello.rb)
# 18| HelloWorld
#-----| -> Greeting
@@ -83,7 +100,7 @@ modules.rb:
# 4| Foo
# 37| Bar
#-----| -> Object
#-----| -> Main(modules.rb)
# 60| MyModuleInGlobalScope
@@ -100,17 +117,15 @@ modules.rb:
# 107| MM
# 112| YY
#-----| -> Object
#-----| -> Main(modules.rb)
# 115| XX
# 5| Foo::Bar
# 19| Foo::ClassInFoo
#-----| -> Object
# 30| Foo::ClassInAnotherDefinitionOfFoo
#-----| -> Object
# 116| XX::YY
#-----| -> YY
@@ -124,17 +139,14 @@ modules.rb:
# 84| Other::Foo1
# 6| Foo::Bar::ClassInFooBar
#-----| -> Object
# 71| Test::Foo2::Foo2
# 108| MM::MM
# 49| Foo::Bar::ClassInAnotherDefinitionOfFooBar
#-----| -> Object
# 66| Test::Foo1::Bar
#-----| -> Object
# 91| Test::Foo1::Y
@@ -143,6 +155,5 @@ modules.rb:
# 103| Test::Foo2::Y
# 72| Test::Foo2::Foo2::Bar
#-----| -> Object
# 120| Test::Foo1::Bar::Baz