forked from jruby/jruby
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathIRModuleBody.java
More file actions
52 lines (40 loc) · 1.42 KB
/
Copy pathIRModuleBody.java
File metadata and controls
52 lines (40 loc) · 1.42 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
package org.jruby.ir;
import org.jruby.ir.operands.LocalVariable;
import org.jruby.parser.IRStaticScope;
import org.jruby.parser.StaticScope;
public class IRModuleBody extends IRScope {
private CodeVersion version; // Current code version for this module
public IRModuleBody(IRManager manager, IRScope lexicalParent, String name, int lineNumber, StaticScope scope) {
this(manager, lexicalParent, name, lexicalParent.getFileName(), lineNumber, scope);
}
public IRModuleBody(IRManager manager, IRScope lexicalParent, String name,
String fileName, int lineNumber, StaticScope scope) {
super(manager, lexicalParent, name, fileName, lineNumber, scope);
if (!getManager().isDryRun()) {
if (scope != null) ((IRStaticScope)scope).setIRScope(this);
updateVersion();
}
}
@Override
public IRScope getNearestModuleReferencingScope() {
return this;
}
public void updateVersion() {
version = CodeVersion.getClassVersionToken();
}
public String getScopeName() {
return "ModuleBody";
}
public CodeVersion getVersion() {
return version;
}
@Override
public LocalVariable getImplicitBlockArg() {
assert false: "A module/class/metaclass body never accepts block args";
return null;
}
@Override
public boolean isModuleBody() {
return true;
}
}