Skip to content

Commit 5042359

Browse files
committed
Fix incorrect node usage in ImmutableClassNode#execute
* This would cause `this` to be a global singleton unadopted node and behave the same as RubyContext.get(null), which does not fold to a constant with a single context but reads it from the fast thread local.
1 parent dc94263 commit 5042359

File tree

2 files changed

+10
-1
lines changed

2 files changed

+10
-1
lines changed

src/main/java/org/truffleruby/language/objects/ImmutableClassNode.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import com.oracle.truffle.api.dsl.GenerateCached;
1313
import com.oracle.truffle.api.dsl.GenerateInline;
1414
import com.oracle.truffle.api.nodes.Node;
15+
import org.truffleruby.RubyContext;
1516
import org.truffleruby.core.CoreLibrary;
1617
import org.truffleruby.core.encoding.RubyEncoding;
1718
import org.truffleruby.core.klass.RubyClass;
@@ -36,7 +37,7 @@
3637
public abstract class ImmutableClassNode extends RubyBaseNode {
3738

3839
public final RubyClass execute(Node node, Object value) {
39-
return execute(node, value, coreLibrary());
40+
return execute(node, value, RubyContext.get(node).getCoreLibrary());
4041
}
4142

4243
protected abstract RubyClass execute(Node node, Object value, CoreLibrary coreLibrary);

test/truffle/compiler/pe/core/class_pe.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,14 @@ module ClassPEFixtures
1212
AInstance = ClassPEFixtures::A.new
1313
end
1414

15+
example "1.class", Integer
16+
example "1.2.class", Float
17+
example "true.class", TrueClass
18+
example "nil.class", NilClass
19+
example "/regexp/.class", Regexp
20+
example "(1..2).class", Range
21+
example ":symbol.class", Symbol
22+
1523
example "ClassPEFixtures::B.superclass", ClassPEFixtures::A
1624
example "ClassPEFixtures::A.new.class", ClassPEFixtures::A
1725

0 commit comments

Comments
 (0)