@@ -166,65 +166,80 @@ private static TruffleString getMessage(Exception exception) {
166
166
return toTruffleStringUncached (exception .getMessage ());
167
167
}
168
168
169
- private final PException raise (Frame frame , PythonBuiltinClassType err , TruffleString message , Object ... formatArgs ) {
169
+ private PException raise (Frame frame , PythonBuiltinClassType err , TruffleString message , Object ... formatArgs ) {
170
170
return executeWithFmtMessageAndArgs (frame , err , message , formatArgs , PythonUtils .EMPTY_OBJECT_ARRAY );
171
171
}
172
172
173
+ private static Object [] createOsErrorArgs (int errno , TruffleString message ) {
174
+ return new Object []{errno , message };
175
+ }
176
+
177
+ private static Object [] createOsErrorArgs (int errno , TruffleString message , Object filename1 ) {
178
+ return createOsErrorArgs (errno , message , filename1 , null );
179
+ }
180
+
181
+ private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum , TruffleString filename1 ) {
182
+ return createOsErrorArgs (osErrorEnum .getNumber (), osErrorEnum .getMessage (), filename1 , null );
183
+ }
184
+
173
185
private static Object [] createOsErrorArgs (int errno , TruffleString message , Object filename1 , Object filename2 ) {
174
- return new Object []{errno , message , filename1 , null , filename2 };
186
+ if (filename1 != null ) {
187
+ if (filename2 != null ) {
188
+ return new Object []{errno , message , filename1 , 0 , filename2 };
189
+ }
190
+ return new Object []{errno , message , filename1 };
191
+ }
192
+ assert filename2 == null ;
193
+ return new Object []{errno , message };
175
194
}
176
195
177
- private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum , TruffleString filename1 , TruffleString filename2 ) {
178
- return new Object []{osErrorEnum .getNumber (), osErrorEnum .getMessage (), filename1 , null , filename2 };
196
+ private static Object [] createOsErrorArgs (OSErrorEnum osErrorEnum ) {
197
+ return new Object []{osErrorEnum .getNumber (), osErrorEnum .getMessage ()};
179
198
}
180
199
181
- private static Object [] createOsErrorArgs (Exception exception , TruffleString filename1 , TruffleString filename2 , TruffleString .EqualNode eqNode ) {
200
+ private static Object [] createOsErrorArgs (Exception exception , TruffleString .EqualNode eqNode ) {
182
201
OSErrorEnum .ErrorAndMessagePair errorAndMessage = OSErrorEnum .fromException (exception , eqNode );
183
- return new Object []{errorAndMessage .oserror .getNumber (), errorAndMessage .message , filename1 , null , filename2 };
202
+ return new Object []{errorAndMessage .oserror .getNumber (), errorAndMessage .message };
184
203
}
185
204
186
205
private PException raiseOSErrorInternal (Frame frame , Object [] arguments ) {
187
206
return executeWithArgsOnly (frame , PythonBuiltinClassType .OSError , arguments );
188
207
}
189
208
190
209
public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum ) {
191
- return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , null , null ));
210
+ return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum ));
192
211
}
193
212
194
213
public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum , TruffleString filename ) {
195
- return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , filename , null ));
214
+ return raiseOSErrorInternal (frame , createOsErrorArgs (osErrorEnum , filename ));
196
215
}
197
216
198
217
public final PException raiseOSError (Frame frame , Exception exception , TruffleString .EqualNode eqNode ) {
199
- return raiseOSErrorInternal (frame , createOsErrorArgs (exception , null , null , eqNode ));
218
+ return raiseOSErrorInternal (frame , createOsErrorArgs (exception , eqNode ));
200
219
}
201
220
202
221
public final PException raiseOSError (Frame frame , OSErrorEnum osErrorEnum , Exception exception ) {
203
222
return raiseOSError (frame , osErrorEnum , getMessage (exception ));
204
223
}
205
224
206
225
public final PException raiseOSError (Frame frame , int errno , TruffleString message , Object filename ) {
207
- return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename , null ));
208
- }
209
-
210
- public final PException raiseOSError (Frame frame , int errno , TruffleString message , Object filename , Object filename2 ) {
211
- return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename , filename2 ));
226
+ return raiseOSErrorInternal (frame , createOsErrorArgs (errno , message , filename ));
212
227
}
213
228
214
- public final PException raiseOSError (VirtualFrame frame , int code , TruffleString message ) {
215
- return raiseOSError (frame , code , message , null , null );
229
+ public final PException raiseOSError (VirtualFrame frame , int errno , TruffleString message ) {
230
+ return raiseOSErrorInternal (frame , createOsErrorArgs ( errno , message ) );
216
231
}
217
232
218
233
public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e ) {
219
- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), null , null );
234
+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString ()) );
220
235
}
221
236
222
237
public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e , Object filename1 ) {
223
- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , null );
238
+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString (), filename1 ) );
224
239
}
225
240
226
241
public final PException raiseOSErrorFromPosixException (VirtualFrame frame , PosixException e , Object filename1 , Object filename2 ) {
227
- return raiseOSError (frame , e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , filename2 );
242
+ return raiseOSErrorInternal (frame , createOsErrorArgs ( e .getErrorCode (), e .getMessageAsTruffleString (), filename1 , filename2 ) );
228
243
}
229
244
230
245
public final PException raiseOSErrorUnsupported (VirtualFrame frame , UnsupportedPosixFeatureException e ) {
@@ -240,7 +255,7 @@ public final PException raiseSSLError(Frame frame, TruffleString message) {
240
255
return raiseSSLError (frame , message , PythonUtils .EMPTY_OBJECT_ARRAY );
241
256
}
242
257
243
- private final PException raiseSSLError (Frame frame , TruffleString message , Object ... formatArgs ) {
258
+ private PException raiseSSLError (Frame frame , TruffleString message , Object ... formatArgs ) {
244
259
return raise (frame , PythonBuiltinClassType .SSLError , message , formatArgs );
245
260
}
246
261
@@ -274,7 +289,7 @@ public static PException raiseUncachedSSLError(SSLErrorCode errorCode, TruffleSt
274
289
return getUncached ().raiseSSLError (null , errorCode , format , formatArgs );
275
290
}
276
291
277
- private final PException raiseOSErrorSubType (Frame frame , PythonBuiltinClassType osErrorSubtype , TruffleString format , Object ... fmtArgs ) {
292
+ private PException raiseOSErrorSubType (Frame frame , PythonBuiltinClassType osErrorSubtype , TruffleString format , Object ... fmtArgs ) {
278
293
TruffleString message = getFormattedMessage (format , fmtArgs );
279
294
final OSErrorEnum osErrorEnum = errorType2errno (osErrorSubtype );
280
295
assert osErrorEnum != null : "could not determine an errno for this error, either not an OSError subtype or multiple errno codes are available" ;
@@ -293,14 +308,6 @@ public final PException raiseUnicodeEncodeError(Frame frame, String encoding, Tr
293
308
return executeWithArgsOnly (frame , PythonBuiltinClassType .UnicodeEncodeError , new Object []{encoding , object , start , end , reason });
294
309
}
295
310
296
- private final PException raiseUnicodeDecodeError (Frame frame , String encoding , Object object , int start , int end , String reason ) {
297
- return executeWithArgsOnly (frame , PythonBuiltinClassType .UnicodeDecodeError , new Object []{encoding , object , start , end , reason });
298
- }
299
-
300
- public static PException raiseUncachedUnicodeDecodeError (String encoding , Object object , int start , int end , String reason ) {
301
- return getUncached ().raiseUnicodeDecodeError (null , encoding , object , start , end , reason );
302
- }
303
-
304
311
@ NeverDefault
305
312
public static PConstructAndRaiseNode create () {
306
313
return PConstructAndRaiseNodeGen .create ();
0 commit comments