@@ -302,8 +302,7 @@ public RubyException frozenError(Object object, Node currentNode) {
302
302
@ TruffleBoundary
303
303
public RubyException frozenError (String message , Node currentNode , Object receiver ) {
304
304
RubyClass exceptionClass = context .getCoreLibrary ().frozenErrorClass ;
305
- RubyString errorMessage = StringOperations
306
- .createUTF8String (context , language , message );
305
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
307
306
final Backtrace backtrace = context .getCallStack ().getBacktrace (currentNode );
308
307
final Object cause = ThreadGetExceptionNode .getLastException (language );
309
308
showExceptionIfDebug (exceptionClass , errorMessage , backtrace );
@@ -329,25 +328,22 @@ public RubyException runtimeErrorCoverageNotEnabled(Node currentNode) {
329
328
@ TruffleBoundary
330
329
public RubyException runtimeError (String message , Node currentNode ) {
331
330
RubyClass exceptionClass = context .getCoreLibrary ().runtimeErrorClass ;
332
- RubyString errorMessage = StringOperations
333
- .createUTF8String (context , language , message );
331
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
334
332
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
335
333
}
336
334
337
335
@ TruffleBoundary
338
336
public RubyException runtimeError (String message , Node currentNode , Throwable javaThrowable ) {
339
337
RubyClass exceptionClass = context .getCoreLibrary ().runtimeErrorClass ;
340
- RubyString errorMessage = StringOperations
341
- .createUTF8String (context , language , message );
338
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
342
339
return ExceptionOperations
343
340
.createRubyException (context , exceptionClass , errorMessage , currentNode , javaThrowable );
344
341
}
345
342
346
343
@ TruffleBoundary
347
344
public RubyException runtimeError (String message , Backtrace backtrace ) {
348
345
RubyClass exceptionClass = context .getCoreLibrary ().runtimeErrorClass ;
349
- RubyString errorMessage = StringOperations
350
- .createUTF8String (context , language , message );
346
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
351
347
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , backtrace );
352
348
}
353
349
@@ -362,8 +358,7 @@ public RubyException systemStackErrorStackLevelTooDeep(Node currentNode, StackOv
362
358
: "<empty Java stacktrace>" ;
363
359
final String message = coreStrings ().STACK_LEVEL_TOO_DEEP + "\n \t from " + topOfTheStack ;
364
360
final Backtrace backtrace = context .getCallStack ().getBacktrace (currentNode , 0 , javaThrowable );
365
- final RubyString messageString = StringOperations
366
- .createUTF8String (context , language , message );
361
+ final RubyString messageString = StringOperations .createUTF8String (context , language , message );
367
362
return ExceptionOperations .createSystemStackError (context , messageString , backtrace , showExceptionIfDebug );
368
363
}
369
364
@@ -452,8 +447,7 @@ public RubyException mathDomainError(String method, Node currentNode) {
452
447
@ TruffleBoundary
453
448
public RubyException indexError (String message , Node currentNode ) {
454
449
RubyClass exceptionClass = context .getCoreLibrary ().indexErrorClass ;
455
- RubyString errorMessage = StringOperations
456
- .createUTF8String (context , language , message );
450
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
457
451
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
458
452
}
459
453
@@ -497,8 +491,7 @@ public RubyException indexErrorInvalidBufferOffsetException(InvalidBufferOffsetE
497
491
@ TruffleBoundary
498
492
public RubyException keyError (String message , Node currentNode ) {
499
493
RubyClass exceptionClass = context .getCoreLibrary ().keyErrorClass ;
500
- RubyString errorMessage = StringOperations
501
- .createUTF8String (context , language , message );
494
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
502
495
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
503
496
}
504
497
@@ -512,8 +505,7 @@ public RubyException keyError(UnknownKeyException exception, Node currentNode) {
512
505
@ TruffleBoundary
513
506
public RubyException stopIteration (String message , Node currentNode ) {
514
507
RubyClass exceptionClass = context .getCoreLibrary ().stopIterationClass ;
515
- RubyString errorMessage = StringOperations
516
- .createUTF8String (context , language , message );
508
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
517
509
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
518
510
}
519
511
@@ -522,8 +514,7 @@ public RubyException stopIteration(String message, Node currentNode) {
522
514
@ TruffleBoundary
523
515
public RubyException localJumpError (String message , Node currentNode ) {
524
516
RubyClass exceptionClass = context .getCoreLibrary ().localJumpErrorClass ;
525
- RubyString errorMessage = StringOperations
526
- .createUTF8String (context , language , message );
517
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
527
518
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
528
519
}
529
520
@@ -690,17 +681,20 @@ public RubyException typeErrorExpectedProcOrMethodOrUnboundMethod(Object object,
690
681
@ TruffleBoundary
691
682
public RubyException typeError (String message , Node currentNode , Throwable javaThrowable ) {
692
683
RubyClass exceptionClass = context .getCoreLibrary ().typeErrorClass ;
693
- RubyString errorMessage = StringOperations
694
- .createUTF8String (context , language , message );
684
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
695
685
return ExceptionOperations
696
686
.createRubyException (context , exceptionClass , errorMessage , currentNode , javaThrowable );
697
687
}
698
688
699
689
@ TruffleBoundary
700
690
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 );
691
+ String message = exception .getMessage ();
692
+ if (message == null ) {
693
+ RubyArray rubyArray = createArray (context , language , exception .getSuppliedValues ());
694
+ String formattedValues = RubyGuards .getJavaString (DispatchNode .getUncached ().call (rubyArray , "inspect" ));
695
+ message = "unsupported type " + formattedValues ;
696
+ }
697
+ return typeError (message , currentNode );
704
698
}
705
699
706
700
// NameError
@@ -826,16 +820,15 @@ public RubyNameError nameErrorImportNotFound(String name, Node currentNode) {
826
820
public RubyNameError nameErrorUnknownIdentifierException (
827
821
UnknownIdentifierException exception , Object receiver , Node currentNode ) {
828
822
return nameError (
829
- "Unknown identifier: " + exception .getUnknownIdentifier (),
823
+ exception .getMessage (),
830
824
receiver ,
831
825
exception .getUnknownIdentifier (),
832
826
currentNode );
833
827
}
834
828
835
829
@ TruffleBoundary
836
830
public RubyNameError nameError (String message , Object receiver , String name , Node currentNode ) {
837
- final RubyString messageString = StringOperations
838
- .createUTF8String (context , language , message );
831
+ final RubyString messageString = StringOperations .createUTF8String (context , language , message );
839
832
final RubyClass exceptionClass = context .getCoreLibrary ().nameErrorClass ;
840
833
final Backtrace backtrace = context .getCallStack ().getBacktrace (currentNode );
841
834
final Object cause = ThreadGetExceptionNode .getLastException (language );
@@ -944,9 +937,10 @@ public RubyNoMethodError noSuperMethodOutsideMethodError(Node currentNode) {
944
937
Nil .INSTANCE );
945
938
}
946
939
940
+ @ TruffleBoundary
947
941
public RubyNoMethodError noMethodErrorUnknownIdentifier (Object receiver , String name , Object [] args ,
948
942
UnknownIdentifierException exception , Node currentNode ) {
949
- return noMethodError (ExceptionOperations .getMessage (exception ), receiver , name , args , currentNode );
943
+ return noMethodError (exception .getMessage (), receiver , name , args , currentNode );
950
944
}
951
945
952
946
// LoadError
@@ -1235,8 +1229,7 @@ public RubyException securityError(String message, Node currentNode) {
1235
1229
@ TruffleBoundary
1236
1230
public RubyException ffiNullPointerError (String message , Node currentNode ) {
1237
1231
RubyClass exceptionClass = context .getCoreLibrary ().truffleFFINullPointerErrorClass ;
1238
- RubyString errorMessage = StringOperations
1239
- .createUTF8String (context , language , message );
1232
+ RubyString errorMessage = StringOperations .createUTF8String (context , language , message );
1240
1233
return ExceptionOperations .createRubyException (context , exceptionClass , errorMessage , currentNode , null );
1241
1234
}
1242
1235
0 commit comments