Skip to content

Commit 2df1533

Browse files
committed
[Truffle] Last of the def-2.0 specs.
1 parent 8ddeaaf commit 2df1533

File tree

2 files changed

+11
-12
lines changed

2 files changed

+11
-12
lines changed

core/src/main/java/org/jruby/truffle/nodes/methods/arguments/CheckArityNode.java

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public CheckArityNode(RubyContext context, SourceSection sourceSection, Arity ar
4444
public void executeVoid(VirtualFrame frame) {
4545
final int given = RubyArguments.getUserArgumentsCount(frame.getArguments());
4646

47-
if (!checkArity(given)) {
47+
if (!checkArity(frame, given)) {
4848
CompilerDirectives.transferToInterpreter();
4949
throw new RaiseException(getContext().getCoreLibrary().argumentError(given, arity.getRequired(), this));
5050
}
@@ -60,17 +60,17 @@ public void executeVoid(VirtualFrame frame) {
6060
}
6161
}
6262

63-
private boolean checkArity(int given) {
64-
if (arity.hasKeywords()) {
65-
return true;
63+
private boolean checkArity(VirtualFrame frame, int given) {
64+
if (arity.hasKeywords() && getKeywordsHash(frame) != null) {
65+
given -= 1;
66+
}
67+
68+
if (arity.getRequired() != 0 && given < arity.getRequired()) {
69+
return false;
70+
} else if (!arity.allowsMore() && given > arity.getRequired() + arity.getOptional()) {
71+
return false;
6672
} else {
67-
if (arity.getRequired() != 0 && given < arity.getRequired()) {
68-
return false;
69-
} else if (!arity.allowsMore() && given > arity.getRequired() + arity.getOptional()) {
70-
return false;
71-
} else {
72-
return true;
73-
}
73+
return true;
7474
}
7575
}
7676

spec/truffle/tags/language/versions/def_2.0_tags.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)