5555import com .oracle .graal .python .nodes .call .CallDispatchNode ;
5656import com .oracle .graal .python .nodes .function .PythonBuiltinBaseNode ;
5757import com .oracle .graal .python .nodes .function .PythonBuiltinNode ;
58+ import com .oracle .graal .python .nodes .function .builtins .PythonBinaryBuiltinNode ;
5859import com .oracle .graal .python .nodes .function .builtins .PythonTernaryBuiltinNode ;
5960import com .oracle .graal .python .nodes .function .builtins .PythonUnaryBuiltinNode ;
6061import com .oracle .graal .python .nodes .subscript .GetItemNode ;
@@ -227,11 +228,17 @@ Object getModule(PBuiltinFunction self, Object value) {
227228 }
228229 }
229230
230- @ Builtin (name = __DICT__ , minNumOfPositionalArgs = 1 , isGetter = true )
231+ @ Builtin (name = __DICT__ , minNumOfPositionalArgs = 1 , maxNumOfPositionalArgs = 2 , isGetter = true , isSetter = true )
231232 @ GenerateNodeFactory
232- abstract static class DictNode extends PythonUnaryBuiltinNode {
233+ abstract static class DictNode extends PythonBinaryBuiltinNode {
233234 @ 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 ) {
235242 PHashingCollection dict = self .getDict ();
236243 if (dict == null ) {
237244 dict = factory ().createDictFixedStorage (self );
@@ -240,9 +247,9 @@ Object dict(PFunction self) {
240247 return dict ;
241248 }
242249
243- @ SuppressWarnings ("unused" )
244250 @ Specialization
245- Object builtinCode (PBuiltinFunction self ) {
251+ @ SuppressWarnings ("unused" )
252+ Object builtinCode (PBuiltinFunction self , Object mapping ) {
246253 throw raise (AttributeError , "'builtin_function_or_method' object has no attribute '__dict__'" );
247254 }
248255 }
0 commit comments