55
55
import com .oracle .graal .python .nodes .call .CallDispatchNode ;
56
56
import com .oracle .graal .python .nodes .function .PythonBuiltinBaseNode ;
57
57
import com .oracle .graal .python .nodes .function .PythonBuiltinNode ;
58
+ import com .oracle .graal .python .nodes .function .builtins .PythonBinaryBuiltinNode ;
58
59
import com .oracle .graal .python .nodes .function .builtins .PythonTernaryBuiltinNode ;
59
60
import com .oracle .graal .python .nodes .function .builtins .PythonUnaryBuiltinNode ;
60
61
import com .oracle .graal .python .nodes .subscript .GetItemNode ;
@@ -227,11 +228,17 @@ Object getModule(PBuiltinFunction self, Object value) {
227
228
}
228
229
}
229
230
230
- @ Builtin (name = __DICT__ , minNumOfPositionalArgs = 1 , isGetter = true )
231
+ @ Builtin (name = __DICT__ , minNumOfPositionalArgs = 1 , maxNumOfPositionalArgs = 2 , isGetter = true , isSetter = true )
231
232
@ GenerateNodeFactory
232
- abstract static class DictNode extends PythonUnaryBuiltinNode {
233
+ abstract static class DictNode extends PythonBinaryBuiltinNode {
233
234
@ Specialization
234
- Object dict (PFunction self ) {
235
+ PNone dict (PFunction self , PHashingCollection mapping ) {
236
+ self .setDict (mapping );
237
+ return PNone .NONE ;
238
+ }
239
+
240
+ @ Specialization (guards = "isNoValue(mapping)" )
241
+ Object dict (PFunction self , @ SuppressWarnings ("unused" ) PNone mapping ) {
235
242
PHashingCollection dict = self .getDict ();
236
243
if (dict == null ) {
237
244
dict = factory ().createDictFixedStorage (self );
@@ -240,9 +247,9 @@ Object dict(PFunction self) {
240
247
return dict ;
241
248
}
242
249
243
- @ SuppressWarnings ("unused" )
244
250
@ Specialization
245
- Object builtinCode (PBuiltinFunction self ) {
251
+ @ SuppressWarnings ("unused" )
252
+ Object builtinCode (PBuiltinFunction self , Object mapping ) {
246
253
throw raise (AttributeError , "'builtin_function_or_method' object has no attribute '__dict__'" );
247
254
}
248
255
}
0 commit comments