@@ -1689,23 +1689,13 @@ static Object doHook(VirtualFrame frame, PythonModule sys, Object obj,
16891689 throw raiseNode .get (inliningTarget ).raise (RuntimeError , LOST_S , "sys.stdout" );
16901690 }
16911691
1692- boolean reprWriteOk = false ;
1693- boolean unicodeEncodeError = false ;
1692+ Object reprVal = null ;
16941693 try {
1695- Object reprVal = objectRepr (frame , inliningTarget , obj , reprAsObjectNode );
1696- if (reprVal == null ) {
1697- reprWriteOk = false ;
1698- } else {
1699- reprWriteOk = true ;
1700- fileWriteString (frame , inliningTarget , stdOut , castToStringNode .execute (inliningTarget , reprVal ), getAttr , callNode );
1701- }
1694+ reprVal = objectRepr (frame , inliningTarget , obj , reprAsObjectNode );
17021695 } catch (PException pe ) {
17031696 pe .expect (inliningTarget , UnicodeEncodeError , unicodeEncodeErrorProfile );
17041697 // repr(o) is not encodable to sys.stdout.encoding with sys.stdout.errors error
17051698 // handler (which is probably 'strict')
1706- unicodeEncodeError = true ;
1707- }
1708- if (!reprWriteOk && unicodeEncodeError ) {
17091699 // inlined sysDisplayHookUnencodable
17101700 final TruffleString stdoutEncoding = objectLookupAttrAsString (frame , inliningTarget , stdOut , T_ENCODING , lookupAttr , castToStringNode );
17111701 final Object reprStr = objectRepr (frame , inliningTarget , obj , reprAsObjectNode );
@@ -1720,6 +1710,9 @@ static Object doHook(VirtualFrame frame, PythonModule sys, Object obj,
17201710 fileWriteString (frame , inliningTarget , stdOut , castToStringNode .execute (inliningTarget , str ), getAttr , callNode );
17211711 }
17221712 }
1713+ if (reprVal != null ) {
1714+ fileWriteString (frame , inliningTarget , stdOut , castToStringNode .execute (inliningTarget , reprVal ), getAttr , callNode );
1715+ }
17231716
17241717 fileWriteString (frame , inliningTarget , stdOut , T_NEWLINE , getAttr , callNode );
17251718 setAttr .execute (frame , inliningTarget , builtins , T___ , obj );
0 commit comments