Skip to content

Commit

Permalink
Showing 1 changed file with 7 additions and 6 deletions.
13 changes: 7 additions & 6 deletions truffle/src/main/java/org/jruby/truffle/core/CoreLibrary.java
Original file line number Diff line number Diff line change
@@ -1258,12 +1258,13 @@ public DynamicObject noSuperMethodError(String name, Node currentNode) {

public DynamicObject noMethodErrorOnReceiver(String name, Object receiver, Node currentNode) {
CompilerAsserts.neverPartOfCompilation();
DynamicObject logicalClass = getLogicalClass(receiver);
String repr = Layouts.MODULE.getFields(logicalClass).getName();
if (RubyGuards.isRubyModule(receiver)) {
repr = Layouts.MODULE.getFields(((DynamicObject) receiver)).getName() + ":" + repr;
}
return noMethodError(String.format("undefined method `%s' for %s", name, repr), name, currentNode);
final DynamicObject logicalClass = getLogicalClass(receiver);
final String moduleName = Layouts.MODULE.getFields(logicalClass).getName();

// Do not call to_s on BasicObject
final Object to_s = getContext().getCodeLoader().inline(currentNode, "o.to_s if c.instance_methods.include?(:to_s)", "o", receiver, "c", logicalClass);

This comment has been minimized.

Copy link
@eregon

eregon Mar 30, 2016

Member

I would rather do that check at Java level, it seems a bit funny here. Or use method_defined? at least 😄

This comment has been minimized.

Copy link
@pitr-ch

pitr-ch Mar 30, 2016

Author Member

fixed da4d8bc [Truffle] use java in noMethodErrorOnReceiver


return noMethodError(String.format("undefined method `%s' for %s:%s", name, to_s, moduleName), name, currentNode);
}

public DynamicObject privateMethodError(String name, Object self, Node currentNode) {

0 comments on commit ad44636

Please sign in to comment.