Skip to content

Commit

Permalink
Showing 3 changed files with 11 additions and 12 deletions.
Original file line number Diff line number Diff line change
@@ -28,9 +28,9 @@ DynamicObject createNoMethodError(
@Nullable Backtrace backtrace,
@Nullable Object receiver,
Object name,
DynamicObject args);
Object args);

DynamicObject getArgs(DynamicObject object);
void setArgs(DynamicObject object, DynamicObject value);
Object getArgs(DynamicObject object);
void setArgs(DynamicObject object, Object value);

}
Original file line number Diff line number Diff line change
@@ -22,8 +22,6 @@
import org.jruby.truffle.language.objects.AllocateObjectNode;
import org.jruby.truffle.language.objects.AllocateObjectNodeGen;

import static org.jruby.truffle.core.array.ArrayHelpers.createArray;

@CoreClass("NoMethodError")
public abstract class NoMethodErrorNodes {

@@ -39,7 +37,7 @@ public AllocateNode(RubyContext context, SourceSection sourceSection) {

@Specialization
public DynamicObject allocateNoMethodError(DynamicObject rubyClass) {
return allocateObjectNode.allocate(rubyClass, nil(), null, null, nil(), createArray(getContext(), null, 0));
return allocateObjectNode.allocate(rubyClass, nil(), null, null, nil(), nil());
}

}
@@ -58,7 +56,7 @@ public Object args(DynamicObject self) {
public abstract static class ArgsSetNode extends PrimitiveArrayArgumentsNode {

@Specialization
public Object setArgs(DynamicObject error, DynamicObject args) {
public Object setArgs(DynamicObject error, Object args) {
Layouts.NO_METHOD_ERROR.setArgs(error, args);
return args;
}
11 changes: 6 additions & 5 deletions truffle/src/main/ruby/core/exception.rb
Original file line number Diff line number Diff line change
@@ -183,17 +183,18 @@ class LocalJumpError < StandardError
class NameError < StandardError

def initialize(*args)
super(args.shift)
Truffle.invoke_primitive :name_error_set_name, self, args.shift
name = args.size > 1 ? args.pop : nil
super(*args)
Truffle.invoke_primitive :name_error_set_name, self, name
end
end

class NoMethodError < NameError

def initialize(*arguments)
super(arguments.shift)
@name = arguments.shift
Truffle.invoke_primitive :no_method_error_set_args, self, arguments.shift
args = arguments.size > 2 ? arguments.pop : nil
super(*arguments) # TODO BJF Jul 24, 2016 Need to handle NoMethodError.new(1,2,3,4)
Truffle.invoke_primitive :no_method_error_set_args, self, args
end
end

0 comments on commit 8c6bdcd

Please sign in to comment.