diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java index 4fdacb4c39c6451897273f9e551a897343fcc8a7..429472214591b80b8cc19ba5bb3dd7fc886a749e 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/ArgumentsSignature.java @@ -42,8 +42,10 @@ public final class ArgumentsSignature implements Iterable<String> { * argument can be provided with a name or without a name, or it may have default value, but * without any actual value provided by the caller. This is the case for {@code UNMATCHED}. Use * {@link #isUnmatched(int)} for checking if argument is unmatched. + * + * Note we intentionally use invalid argument name. */ - public static final String UNMATCHED = new String(); + public static final String UNMATCHED = "^"; public static final String VARARG_NAME = "..."; public static final int[] EMPTY_VARARGS_INDEXES = new int[0]; public static final int NO_VARARG = -1; diff --git a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RPairList.java b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RPairList.java index b681e69d54a7af40945aaa50974256249e95ef7e..6f8d2fad0edd23d27debb3ae8259021f7fe3cf02 100644 --- a/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RPairList.java +++ b/com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/data/RPairList.java @@ -718,7 +718,11 @@ public final class RPairList extends RSharingAttributeStorage implements RAbstra } else { String[] signature = new String[length - 1]; for (int i = 0; i < names.getLength() && i < (length - 1); i++) { - signature[i] = names.getDataAt(i + 1); + String name = names.getDataAt(i + 1); + if (name != null && !name.isEmpty()) { + // in signatures, null is designated for unnamed arguments + signature[i] = name; + } } return ArgumentsSignature.get(signature); }