Skip to content

Commit 071cbf4

Browse files
committed
Fix EncodingError message in String#to_sym
1 parent e11a36d commit 071cbf4

File tree

3 files changed

+11
-2
lines changed

3 files changed

+11
-2
lines changed

spec/ruby/core/string/shared/to_sym.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,6 @@
6767
invalid_utf8.should_not.valid_encoding?
6868
-> {
6969
invalid_utf8.send(@method)
70-
}.should raise_error(EncodingError, /invalid/)
70+
}.should raise_error(EncodingError, 'invalid symbol in encoding UTF-8 :"\xC3"')
7171
end
7272
end

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

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1118,6 +1118,15 @@ public RubyException encodingError(String message, Node currentNode) {
11181118
return ExceptionOperations.createRubyException(context, exceptionClass, errorMessage, currentNode, null);
11191119
}
11201120

1121+
@TruffleBoundary
1122+
public RubyException encodingError(Object string, RubyEncoding encoding, Node currentNode) {
1123+
RubyClass exceptionClass = context.getCoreLibrary().encodingErrorClass;
1124+
String message = StringUtils.format("invalid symbol in encoding %s :%s", encoding, inspect(string));
1125+
RubyString errorMessage = StringOperations.createUTF8String(context, language, message);
1126+
1127+
return ExceptionOperations.createRubyException(context, exceptionClass, errorMessage, currentNode, null);
1128+
}
1129+
11211130
@TruffleBoundary
11221131
public RubyException encodingCompatibilityErrorIncompatible(RubyEncoding a, RubyEncoding b, Node currentNode) {
11231132
return encodingCompatibilityError(

src/main/java/org/truffleruby/core/string/StringNodes.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2618,7 +2618,7 @@ protected RubySymbol toSymBroken(Object string, boolean preserveSymbol,
26182618
@Cached RubyStringLibrary strings,
26192619
@Bind("strings.getTString(string)") AbstractTruffleString tstring,
26202620
@Bind("strings.getEncoding(string)") RubyEncoding encoding) {
2621-
throw new RaiseException(getContext(), coreExceptions().encodingError("invalid encoding symbol", this));
2621+
throw new RaiseException(getContext(), coreExceptions().encodingError(string, encoding, this));
26222622
}
26232623
}
26242624

0 commit comments

Comments
 (0)