Merge pull request #225 from github/hvitved/private-methods

Model private methods and "main objects"
This commit is contained in:
Tom Hvitved
2021-07-02 11:02:41 +02:00
committed by GitHub
12 changed files with 484 additions and 264 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,52 @@ 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 Object class
this.getEnclosingModule() instanceof Toplevel
}
final override Parameter getParameter(int n) {
toGenerated(result) = g.getParameters().getChild(n)
}

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,21 @@ 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())
) and
// For now, we restrict the scope of top-level declarations to their file.
// This may remove some plausible targets, but also removes a lot of
// implausible targets
if result.getEnclosingModule() instanceof Toplevel
then result.getFile() = this.getFile()
else any()
else any()
)
or
exists(DataFlow::LocalSourceNode sourceNode |

View File

@@ -1,5 +1,5 @@
calls.rb:
# 101| Hash
# 102| Hash
#-----| super -> Object
# 77| Integer
@@ -10,11 +10,11 @@ calls.rb:
# 90| Module
#-----| super -> Object
# 96| Object
# 97| Object
#-----| include -> Kernel
#-----| super -> BasicObject
# 105| Array
# 106| Array
#-----| super -> Object
#-----| BasicObject
@@ -49,23 +49,25 @@ calls.rb:
# 15| M
# 29| C
private.rb:
# 1| C
#-----| super -> Object
#-----| include -> M
calls.rb:
# 51| D
#-----| super -> C
# 82| String
#-----| super -> Object
# 143| S
# 144| S
#-----| super -> Object
# 149| A
# 150| A
#-----| super -> S
# 154| B
# 155| B
#-----| super -> S
hello.rb:

View File

@@ -12,54 +12,55 @@ getTarget
| calls.rb:30:5:30:13 | call to include | calls.rb:92:5:92:20 | include |
| calls.rb:38:9:38:18 | call to instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:39:9:39:23 | call to instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:46:5:46:9 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:46:5:46:9 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:47:1:47:5 | call to baz | calls.rb:37:5:43:7 | baz |
| calls.rb:49:1:49:12 | call to instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:53:9:53:13 | call to super | calls.rb:37:5:43:7 | baz |
| calls.rb:57:5:57:9 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:57:5:57:9 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:58:1:58:5 | call to baz | calls.rb:52:5:54:7 | baz |
| calls.rb:60:1:60:12 | call to instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:63:5:63:16 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:64:5:64:16 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:68:5:68:11 | yield ... | calls.rb:74:16:74:29 | { ... } |
| calls.rb:68:5:68:11 | yield ... | calls.rb:140:10:140:28 | { ... } |
| calls.rb:72:11:72:18 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:73:5:73:10 | ...[...] | calls.rb:102:5:102:15 | [] |
| calls.rb:68:5:68:11 | yield ... | calls.rb:141:10:141:28 | { ... } |
| calls.rb:72:11:72:18 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:73:5:73:10 | ...[...] | calls.rb:103:5:103:15 | [] |
| calls.rb:74:5:74:29 | call to call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:74:22:74:27 | ...[...] | calls.rb:102:5:102:15 | [] |
| calls.rb:97:5:97:18 | call to include | calls.rb:92:5:92:20 | include |
| calls.rb:111:15:111:25 | call to length | calls.rb:107:3:107:17 | length |
| calls.rb:112:9:112:24 | yield ... | calls.rb:128:23:128:62 | { ... } |
| calls.rb:112:9:112:24 | yield ... | calls.rb:130:17:130:35 | { ... } |
| calls.rb:112:9:112:24 | yield ... | calls.rb:132:17:132:40 | { ... } |
| calls.rb:112:9:112:24 | yield ... | calls.rb:134:18:134:37 | { ... } |
| calls.rb:112:18:112:24 | ...[...] | calls.rb:106:3:106:13 | [] |
| calls.rb:119:5:119:20 | yield ... | calls.rb:122:7:122:30 | { ... } |
| calls.rb:122:1:122:30 | call to funny | calls.rb:118:1:120:3 | funny |
| calls.rb:122:13:122:29 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:122:18:122:29 | call to capitalize | calls.rb:83:5:83:23 | capitalize |
| calls.rb:124:1:124:14 | call to capitalize | calls.rb:83:5:83:23 | capitalize |
| calls.rb:125:1:125:12 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:126:1:126:5 | call to abs | calls.rb:79:5:79:16 | abs |
| calls.rb:128:1:128:62 | call to foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:128:32:128:61 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:130:1:130:35 | call to foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:130:23:130:34 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:132:1:132:40 | call to foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:132:23:132:39 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:134:1:134:37 | call to foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:134:27:134:36 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:137:5:137:17 | call to call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:140:1:140:28 | call to indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:140:16:140:27 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:145:9:145:17 | call to to_s | calls.rb:150:5:151:7 | to_s |
| calls.rb:145:9:145:17 | call to to_s | calls.rb:155:5:156:7 | to_s |
| calls.rb:159:1:159:5 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:159:1:159:14 | call to s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:160:1:160:5 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:160:1:160:14 | call to s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:161:1:161:5 | call to new | calls.rb:98:5:98:16 | new |
| calls.rb:161:1:161:14 | call to s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:74:22:74:27 | ...[...] | calls.rb:103:5:103:15 | [] |
| calls.rb:98:5:98:18 | call to include | calls.rb:92:5:92:20 | include |
| calls.rb:112:15:112:25 | call to length | calls.rb:108:3:108:17 | length |
| calls.rb:113:9:113:24 | yield ... | calls.rb:129:23:129:62 | { ... } |
| calls.rb:113:9:113:24 | yield ... | calls.rb:131:17:131:35 | { ... } |
| calls.rb:113:9:113:24 | yield ... | calls.rb:133:17:133:40 | { ... } |
| calls.rb:113:9:113:24 | yield ... | calls.rb:135:18:135:37 | { ... } |
| calls.rb:113:18:113:24 | ...[...] | calls.rb:107:3:107:13 | [] |
| calls.rb:120:5:120:20 | yield ... | calls.rb:123:7:123:30 | { ... } |
| calls.rb:123:1:123:30 | call to funny | calls.rb:119:1:121:3 | funny |
| calls.rb:123:13:123:29 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:123:18:123:29 | call to capitalize | calls.rb:83:5:83:23 | capitalize |
| calls.rb:125:1:125:14 | call to capitalize | calls.rb:83:5:83:23 | capitalize |
| calls.rb:126:1:126:12 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:127:1:127:5 | call to abs | calls.rb:79:5:79:16 | abs |
| calls.rb:129:1:129:62 | call to foreach | calls.rb:110:3:116:5 | foreach |
| calls.rb:129:32:129:61 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:131:1:131:35 | call to foreach | calls.rb:110:3:116:5 | foreach |
| calls.rb:131:23:131:34 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:133:1:133:40 | call to foreach | calls.rb:110:3:116:5 | foreach |
| calls.rb:133:23:133:39 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:135:1:135:37 | call to foreach | calls.rb:110:3:116:5 | foreach |
| calls.rb:135:27:135:36 | call to puts | calls.rb:87:5:87:17 | puts |
| calls.rb:138:5:138:17 | call to call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:141:1:141:28 | call to indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:141:16:141:27 | call to bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:146:9:146:17 | call to to_s | calls.rb:151:5:152:7 | to_s |
| calls.rb:146:9:146:17 | call to to_s | calls.rb:156:5:157:7 | to_s |
| calls.rb:160:1:160:5 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:160:1:160:14 | call to s_method | calls.rb:145:5:147:7 | s_method |
| calls.rb:161:1:161:5 | call to new | calls.rb:99:5:99:16 | new |
| calls.rb:161:1:161:14 | call to s_method | calls.rb:145:5:147:7 | s_method |
| 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 |
| 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 |
@@ -74,6 +75,16 @@ getTarget
| modules.rb:90:24:90:36 | call to prepend | calls.rb:93:5:93:20 | prepend |
| modules.rb:96:3:96:14 | call to include | calls.rb:92:5:92:20 | include |
| modules.rb:102:3:102:16 | call to prepend | calls.rb:93:5:93:20 | prepend |
| private.rb:2:3:3:5 | call to private | calls.rb:94:5:94:20 | private |
| private.rb:10:3:10:19 | call to private | calls.rb:94:5:94:20 | private |
| 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:26:1:26:5 | call to new | calls.rb:99:5:99:16 | new |
| private.rb:27:1:27:5 | call to new | calls.rb:99:5:99:16 | new |
| 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 | private.rb:21:1:22:3 | private_on_main |
unresolvedCall
| calls.rb:19:5:19:14 | call to instance_m |
| calls.rb:20:5:20:19 | call to instance_m |
@@ -86,6 +97,23 @@ unresolvedCall
| calls.rb:42:9:42:24 | call to singleton_m |
| calls.rb:48:1:48:13 | call to singleton_m |
| calls.rb:59:1:59:13 | call to singleton_m |
| calls.rb:128:48:128:59 | call to capitalize |
| calls.rb:132:28:132:39 | call to capitalize |
| calls.rb:134:32:134:36 | call to abs |
| calls.rb:129:48:129:59 | call to capitalize |
| 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

@@ -91,6 +91,7 @@ class Module
def module_eval; end
def include; end
def prepend; end
def private; end
end
class Object < Module
@@ -159,3 +160,8 @@ end
S.new.s_method
A.new.s_method
B.new.s_method
def private_on_main
end
private_on_main

View File

@@ -1,28 +1,30 @@
getMethod
| calls.rb:15:1:24:3 | M | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:29:1:44:3 | C | baz | calls.rb:37:5:43:7 | baz |
| 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 |
| calls.rb:77:1:80:3 | Integer | bit_length | calls.rb:78:5:78:23 | bit_length |
| calls.rb:82:1:84:3 | String | capitalize | calls.rb:83:5:83:23 | capitalize |
| calls.rb:86:1:88:3 | Kernel | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:90:1:94:3 | Module | include | calls.rb:92:5:92:20 | include |
| calls.rb:90:1:94:3 | Module | module_eval | calls.rb:91:5:91:24 | module_eval |
| calls.rb:90:1:94:3 | Module | prepend | calls.rb:93:5:93:20 | prepend |
| calls.rb:96:1:99:3 | Object | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:96:1:99:3 | Object | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:96:1:99:3 | Object | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:96:1:99:3 | Object | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:96:1:99:3 | Object | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:96:1:99:3 | Object | new | calls.rb:98:5:98:16 | new |
| calls.rb:96:1:99:3 | Object | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:101:1:103:3 | Hash | [] | calls.rb:102:5:102:15 | [] |
| calls.rb:105:1:116:3 | Array | [] | calls.rb:106:3:106:13 | [] |
| calls.rb:105:1:116:3 | Array | foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:105:1:116:3 | Array | length | calls.rb:107:3:107:17 | length |
| calls.rb:143:1:147:3 | S | s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:149:1:152:3 | A | to_s | calls.rb:150:5:151:7 | to_s |
| calls.rb:154:1:157:3 | B | to_s | calls.rb:155:5:156:7 | to_s |
| calls.rb:90:1:95:3 | Module | include | calls.rb:92:5:92:20 | include |
| 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 |
| calls.rb:106:1:117:3 | Array | length | calls.rb:108:3:108:17 | length |
| calls.rb:144:1:148:3 | S | 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 |
| calls.rb:155:1:158:3 | B | to_s | calls.rb:156:5:157:7 | to_s |
| 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 | message | hello.rb:13:5:15:7 | message |
@@ -33,205 +35,246 @@ getMethod
| modules.rb:5:3:14:5 | Foo::Bar | method_in_foo_bar | modules.rb:9:5:10:7 | method_in_foo_bar |
| 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 |
| private.rb:1:1:19:3 | C | baz | calls.rb:37:5:43:7 | baz |
| private.rb:1:1:19:3 | C | private2 | private.rb:8:3:9:5 | private2 |
| 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 |
lookupMethod
| calls.rb:15:1:24:3 | M | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:29:1:44:3 | C | baz | calls.rb:37:5:43:7 | baz |
| calls.rb:29:1:44:3 | C | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:29:1:44:3 | C | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:29:1:44:3 | C | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:29:1:44:3 | C | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:29:1:44:3 | C | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:29:1:44:3 | C | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:29:1:44:3 | C | new | calls.rb:98:5:98:16 | new |
| calls.rb:29:1:44:3 | C | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:29:1:44:3 | C | puts | calls.rb:87:5:87:17 | puts |
| 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 |
| calls.rb:51:1:55:3 | D | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:51:1:55:3 | D | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:51:1:55:3 | D | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:51:1:55:3 | D | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:51:1:55:3 | D | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:51:1:55:3 | D | indirect | calls.rb:137:1:139:3 | indirect |
| calls.rb:51:1:55:3 | D | instance_m | calls.rb:16:5:16:23 | instance_m |
| calls.rb:51:1:55:3 | D | new | calls.rb:98:5:98:16 | new |
| calls.rb:51:1:55:3 | D | new | calls.rb:99:5:99:16 | new |
| calls.rb:51:1:55:3 | D | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:51:1:55:3 | D | private2 | private.rb:8:3:9:5 | private2 |
| calls.rb:51:1:55:3 | D | private3 | private.rb:14:3:15:5 | private3 |
| calls.rb:51:1:55:3 | D | private4 | private.rb:17:3:18:5 | private4 |
| calls.rb:51:1:55:3 | D | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| calls.rb:51:1:55:3 | D | private_on_main | private.rb:21:1:22:3 | private_on_main |
| calls.rb:51:1:55:3 | D | public | private.rb:5:3:6:5 | public |
| 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:118:1:120:3 | funny |
| calls.rb:77:1:80:3 | Integer | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:77:1:80:3 | Integer | new | calls.rb:98:5:98:16 | new |
| 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 |
| calls.rb:82:1:84:3 | String | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:82:1:84:3 | String | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:82:1:84:3 | String | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:82:1:84:3 | String | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:82:1:84:3 | String | new | calls.rb:98:5:98:16 | new |
| calls.rb:82:1:84:3 | String | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:82:1:84:3 | String | indirect | calls.rb:137:1:139:3 | indirect |
| 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:94:3 | Module | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:90:1:94:3 | Module | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:90:1:94:3 | Module | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:90:1:94:3 | Module | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:90:1:94:3 | Module | include | calls.rb:92:5:92:20 | include |
| calls.rb:90:1:94:3 | Module | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:90:1:94:3 | Module | module_eval | calls.rb:91:5:91:24 | module_eval |
| calls.rb:90:1:94:3 | Module | new | calls.rb:98:5:98:16 | new |
| calls.rb:90:1:94:3 | Module | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:90:1:94:3 | Module | prepend | calls.rb:93:5:93:20 | prepend |
| calls.rb:90:1:94:3 | Module | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:96:1:99:3 | Object | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:96:1:99:3 | Object | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:96:1:99:3 | Object | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:96:1:99:3 | Object | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:96:1:99:3 | Object | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:96:1:99:3 | Object | new | calls.rb:98:5:98:16 | new |
| calls.rb:96:1:99:3 | Object | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:96:1:99:3 | Object | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:101:1:103:3 | Hash | [] | calls.rb:102:5:102:15 | [] |
| calls.rb:101:1:103:3 | Hash | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:101:1:103:3 | Hash | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:101:1:103:3 | Hash | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:101:1:103:3 | Hash | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:101:1:103:3 | Hash | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:101:1:103:3 | Hash | new | calls.rb:98:5:98:16 | new |
| calls.rb:101:1:103:3 | Hash | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:101:1:103:3 | Hash | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:105:1:116:3 | Array | [] | calls.rb:106:3:106:13 | [] |
| calls.rb:105:1:116:3 | Array | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:105:1:116:3 | Array | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:105:1:116:3 | Array | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:105:1:116:3 | Array | foreach | calls.rb:109:3:115:5 | foreach |
| calls.rb:105:1:116:3 | Array | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:105:1:116:3 | Array | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:105:1:116:3 | Array | length | calls.rb:107:3:107:17 | length |
| calls.rb:105:1:116:3 | Array | new | calls.rb:98:5:98:16 | new |
| calls.rb:105:1:116:3 | Array | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:105:1:116:3 | Array | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:143:1:147:3 | S | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:143:1:147:3 | S | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:143:1:147:3 | S | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:143:1:147:3 | S | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:143:1:147:3 | S | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:143:1:147:3 | S | new | calls.rb:98:5:98:16 | new |
| calls.rb:143:1:147:3 | S | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:143:1:147:3 | S | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:143:1:147:3 | S | s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:149:1:152:3 | A | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:149:1:152:3 | A | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:149:1:152:3 | A | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:149:1:152:3 | A | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:149:1:152:3 | A | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:149:1:152:3 | A | new | calls.rb:98:5:98:16 | new |
| calls.rb:149:1:152:3 | A | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:149:1:152:3 | A | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:149:1:152:3 | A | s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:149:1:152:3 | A | to_s | calls.rb:150:5:151:7 | to_s |
| calls.rb:154:1:157:3 | B | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:154:1:157:3 | B | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:154:1:157:3 | B | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:154:1:157:3 | B | funny | calls.rb:118:1:120:3 | funny |
| calls.rb:154:1:157:3 | B | indirect | calls.rb:136:1:138:3 | indirect |
| calls.rb:154:1:157:3 | B | new | calls.rb:98:5:98:16 | new |
| calls.rb:154:1:157:3 | B | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| calls.rb:154:1:157:3 | B | puts | calls.rb:87:5:87:17 | puts |
| calls.rb:154:1:157:3 | B | s_method | calls.rb:144:5:146:7 | s_method |
| calls.rb:154:1:157:3 | B | to_s | calls.rb:155:5:156:7 | to_s |
| 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 |
| calls.rb:144:1:148:3 | S | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:144:1:148:3 | S | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:144:1:148:3 | S | indirect | calls.rb:137:1:139:3 | indirect |
| 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 |
| calls.rb:150:1:153:3 | A | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:150:1:153:3 | A | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:150:1:153:3 | A | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:150:1:153:3 | A | indirect | calls.rb:137:1:139:3 | indirect |
| 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 |
| calls.rb:155:1:158:3 | B | call_block | calls.rb:67:1:69:3 | call_block |
| calls.rb:155:1:158:3 | B | foo | calls.rb:1:1:3:3 | foo |
| calls.rb:155:1:158:3 | B | foo | calls.rb:71:1:75:3 | foo |
| calls.rb:155:1:158:3 | B | funny | calls.rb:119:1:121:3 | funny |
| calls.rb:155:1:158:3 | B | indirect | calls.rb:137:1:139:3 | indirect |
| 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:118:1:120:3 | funny |
| 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:136:1:138:3 | indirect |
| 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:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | Complex | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | Complex | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | FalseClass | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | FalseClass | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | Float | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | Float | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | NilClass | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | NilClass | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | Numeric | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | Numeric | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | Rational | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | Rational | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| file://:0:0:0:0 | TrueClass | indirect | calls.rb:136:1:138:3 | indirect |
| file://:0:0:0:0 | TrueClass | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| hello.rb:11:1:16:3 | Greeting | funny | calls.rb:119:1:121:3 | funny |
| 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:136:1:138:3 | indirect |
| 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:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| 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:136:1:138:3 | indirect |
| 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:98:5:98:16 | new |
| 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:4:1:24:3 | Foo | method_in_another_definition_of_foo | modules.rb:27:3:28:5 | method_in_another_definition_of_foo |
@@ -241,74 +284,108 @@ lookupMethod
| 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:118:1:120:3 | funny |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:37:1:46:3 | Bar | indirect | calls.rb:136:1:138:3 | indirect |
| 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:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:112:1:113:3 | YY | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:112:1:113:3 | YY | new | calls.rb:98:5:98:16 | new |
| 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:118:1:120:3 | funny |
| modules.rb:116:7:117:9 | XX::YY | indirect | calls.rb:136:1:138:3 | indirect |
| modules.rb:116:7:117:9 | XX::YY | new | calls.rb:98:5:98:16 | new |
| 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 |
| private.rb:1:1:19:3 | C | foo | calls.rb:1:1:3:3 | foo |
| private.rb:1:1:19:3 | C | foo | calls.rb:71:1:75:3 | foo |
| private.rb:1:1:19:3 | C | funny | calls.rb:119:1:121:3 | funny |
| private.rb:1:1:19:3 | C | indirect | calls.rb:137:1:139:3 | indirect |
| private.rb:1:1:19:3 | C | instance_m | calls.rb:16:5:16:23 | instance_m |
| private.rb:1:1:19:3 | C | new | calls.rb:99:5:99:16 | new |
| private.rb:1:1:19:3 | C | optional_arg | calls.rb:62:1:65:3 | optional_arg |
| private.rb:1:1:19:3 | C | private2 | private.rb:8:3:9:5 | private2 |
| 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 | private_on_main | calls.rb:164:1:165:3 | private_on_main |
| 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 |

View File

@@ -1,17 +1,16 @@
getModule
| calls.rb:15:1:24:3 | M |
| calls.rb:29:1:44:3 | C |
| calls.rb:51:1:55:3 | D |
| calls.rb:77:1:80:3 | Integer |
| calls.rb:82:1:84:3 | String |
| calls.rb:86:1:88:3 | Kernel |
| calls.rb:90:1:94:3 | Module |
| calls.rb:96:1:99:3 | Object |
| calls.rb:101:1:103:3 | Hash |
| calls.rb:105:1:116:3 | Array |
| calls.rb:143:1:147:3 | S |
| calls.rb:149:1:152:3 | A |
| calls.rb:154:1:157:3 | B |
| calls.rb:90:1:95:3 | Module |
| calls.rb:97:1:100:3 | Object |
| calls.rb:102:1:104:3 | Hash |
| calls.rb:106:1:117:3 | Array |
| calls.rb:144:1:148:3 | S |
| calls.rb:150:1:153:3 | A |
| calls.rb:155:1:158:3 | B |
| file://:0:0:0:0 | BasicObject |
| file://:0:0:0:0 | Class |
| file://:0:0:0:0 | Complex |
@@ -56,23 +55,24 @@ getModule
| modules.rb:115:1:118:3 | XX |
| 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 |
getADeclaration
| calls.rb:15:1:24:3 | M | calls.rb:15:1:24:3 | M |
| calls.rb:29:1:44:3 | C | calls.rb:29:1:44:3 | C |
| 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:94:3 | Module | calls.rb:90:1:94:3 | Module |
| calls.rb:96:1:99:3 | Object | calls.rb:1:1:161:15 | calls.rb |
| calls.rb:96:1:99:3 | Object | calls.rb:96:1:99:3 | Object |
| calls.rb:96:1:99:3 | Object | hello.rb:1:1:22:3 | hello.rb |
| calls.rb:96:1:99:3 | Object | modules.rb:1:1:122:1 | modules.rb |
| calls.rb:101:1:103:3 | Hash | calls.rb:101:1:103:3 | Hash |
| calls.rb:105:1:116:3 | Array | calls.rb:105:1:116:3 | Array |
| calls.rb:143:1:147:3 | S | calls.rb:143:1:147:3 | S |
| calls.rb:149:1:152:3 | A | calls.rb:149:1:152:3 | A |
| calls.rb:154:1:157:3 | B | calls.rb:154:1:157:3 | B |
| 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: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 |
@@ -109,42 +109,44 @@ getADeclaration
| modules.rb:115:1:118:3 | XX | modules.rb:115:1:118:3 | XX |
| modules.rb:116:7:117:9 | XX::YY | modules.rb:116:7:117:9 | YY |
| 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 |
getSuperClass
| calls.rb:29:1:44:3 | C | calls.rb:96:1:99:3 | Object |
| calls.rb:51:1:55:3 | D | calls.rb:29:1:44:3 | C |
| 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:96:1:99:3 | Object |
| calls.rb:90:1:94:3 | Module | calls.rb:96:1:99:3 | Object |
| calls.rb:96:1:99:3 | Object | file://:0:0:0:0 | BasicObject |
| calls.rb:101:1:103:3 | Hash | calls.rb:96:1:99:3 | Object |
| calls.rb:105:1:116:3 | Array | calls.rb:96:1:99:3 | Object |
| calls.rb:143:1:147:3 | S | calls.rb:96:1:99:3 | Object |
| calls.rb:149:1:152:3 | A | calls.rb:143:1:147:3 | S |
| calls.rb:154:1:157:3 | B | calls.rb:143:1:147:3 | S |
| file://:0:0:0:0 | Class | calls.rb:90:1:94:3 | Module |
| calls.rb:82:1:84:3 | String | calls.rb:97:1:100:3 | Object |
| 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: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 |
| file://:0:0:0:0 | Complex | file://:0:0:0:0 | Numeric |
| file://:0:0:0:0 | FalseClass | calls.rb:96:1:99:3 | Object |
| file://:0:0:0:0 | FalseClass | calls.rb:97:1:100:3 | Object |
| file://:0:0:0:0 | Float | file://:0:0:0:0 | Numeric |
| file://:0:0:0:0 | NilClass | calls.rb:96:1:99:3 | Object |
| file://:0:0:0:0 | Numeric | calls.rb:96:1:99:3 | Object |
| file://:0:0:0:0 | NilClass | calls.rb:97:1:100:3 | Object |
| 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:96:1:99:3 | Object |
| hello.rb:11:1:16:3 | Greeting | calls.rb:96:1:99:3 | Object |
| 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:18:1:22:3 | HelloWorld | hello.rb:11:1:16:3 | Greeting |
| modules.rb:6:5:7:7 | Foo::Bar::ClassInFooBar | calls.rb:96:1:99:3 | Object |
| modules.rb:19:3:20:5 | Foo::ClassInFoo | calls.rb:96:1:99:3 | Object |
| modules.rb:30:3:31:5 | Foo::ClassInAnotherDefinitionOfFoo | calls.rb:96:1:99:3 | Object |
| modules.rb:37:1:46:3 | Bar | calls.rb:96:1:99:3 | Object |
| modules.rb:49:3:50:5 | Foo::Bar::ClassInAnotherDefinitionOfFooBar | calls.rb:96:1:99:3 | Object |
| modules.rb:66:5:67:7 | Test::Foo1::Bar | calls.rb:96:1:99:3 | Object |
| modules.rb:72:5:73:7 | Test::Foo2::Foo2::Bar | calls.rb:96:1:99:3 | Object |
| modules.rb:112:1:113:3 | YY | calls.rb:96:1:99:3 | Object |
| 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: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 |
getAPrependedModule
| modules.rb:101:1:105:3 | PrependTest | modules.rb:63:1:81:3 | Test |
getAnIncludedModule
| calls.rb:29:1:44:3 | C | calls.rb:15:1:24:3 | M |
| calls.rb:96:1:99:3 | Object | calls.rb:86:1:88:3 | Kernel |
| calls.rb:97:1:100:3 | Object | calls.rb:86:1:88:3 | Kernel |
| hello.rb:11:1:16:3 | Greeting | hello.rb:1:1:8:3 | EnglishWords |
| modules.rb:88:1:93:3 | IncludeTest | modules.rb:63:1:81:3 | Test |
| modules.rb:95:1:99:3 | IncludeTest2 | modules.rb:63:1:81:3 | Test |
| private.rb:1:1:19:3 | C | calls.rb:15:1:24:3 | M |

View File

@@ -0,0 +1,30 @@
class C
private def private1
end
def public
end
def private2
end
private :private2
private
def private3
end
def private4
end
end
def private_on_main
end
C.new.private1
C.new.private2
C.new.private3
C.new.private4
C.new.public
private_on_main

View File

@@ -1,5 +1,5 @@
calls.rb:
# 101| Hash
# 102| Hash
#-----| -> Object
# 77| Integer
@@ -10,10 +10,10 @@ calls.rb:
# 90| Module
#-----| -> Object
# 96| Object
# 97| Object
#-----| -> BasicObject
# 105| Array
# 106| Array
#-----| -> Object
#-----| BasicObject
@@ -48,22 +48,24 @@ calls.rb:
# 15| M
# 29| C
private.rb:
# 1| C
#-----| -> Object
calls.rb:
# 51| D
#-----| -> C
# 82| String
#-----| -> Object
# 143| S
# 144| S
#-----| -> Object
# 149| A
# 150| A
#-----| -> S
# 154| B
# 155| B
#-----| -> S
hello.rb: