Skip to content

Commit 9ec4930

Browse files
committed
Use the message of UnsupportedTypeException if it has one
* This is notably useful for conflicts with host interop like: ruby -e 'Java.type("java.util.concurrent.Executors").newFixedThreadPool(1).submit {}' -e:1:in `<main>': Multiple applicable overloads found for method name submit (candidates: [ Method[public java.util.concurrent.Future java.util.concurrent.AbstractExecutorService.submit(java.util.concurrent.Callable)], Method[public java.util.concurrent.Future java.util.concurrent.AbstractExecutorService.submit(java.lang.Runnable)]], arguments: [RubyProc@3bfc6a5e<Proc> (RubyProc)]) (TypeError)
1 parent 670fdb4 commit 9ec4930

File tree

1 file changed

+7
-3
lines changed

1 file changed

+7
-3
lines changed

src/main/java/org/truffleruby/core/exception/CoreExceptions.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -698,9 +698,13 @@ public RubyException typeError(String message, Node currentNode, Throwable javaT
698698

699699
@TruffleBoundary
700700
public RubyException typeErrorUnsupportedTypeException(UnsupportedTypeException exception, Node currentNode) {
701-
RubyArray rubyArray = createArray(context, language, exception.getSuppliedValues());
702-
String formattedValues = RubyGuards.getJavaString(DispatchNode.getUncached().call(rubyArray, "inspect"));
703-
return typeError("unsupported type " + formattedValues, currentNode);
701+
String message = exception.getMessage();
702+
if (message == null) {
703+
RubyArray rubyArray = createArray(context, language, exception.getSuppliedValues());
704+
String formattedValues = RubyGuards.getJavaString(DispatchNode.getUncached().call(rubyArray, "inspect"));
705+
message = "unsupported type " + formattedValues;
706+
}
707+
return typeError(message, currentNode);
704708
}
705709

706710
// NameError

0 commit comments

Comments
 (0)