Esempio n. 1
0
 def create_attr(self, frame, anchor, name):
     if name == 'append':
         return self.SequenceAppender('list.append', self, args=[ANY])
     elif name == 'count':
         return BuiltinConstMethod('list.count', IntType.get_object(),
                                   [ANY])
     elif name == 'extend':
         return self.SequenceExtender('list.extend', self, args=[ANY])
     elif name == 'index':
         return BuiltinConstMethod(
             'list.index',
             IntType.get_object(), [ANY], [IntType, IntType],
             expts=[ErrorConfig.MaybeElementNotFound()])
     elif name == 'insert':
         return self.InsertMethod('list.insert', self, [IntType, ANY])
     elif name == 'pop':
         return BuiltinConstMethod(
             'list.pop',
             self.elemall, [], [IntType],
             expts=[ErrorConfig.MaybeElementNotRemovable()])
     elif name == 'remove':
         return BuiltinConstMethod(
             'list.remove',
             NoneType.get_object(), [ANY],
             expts=[ErrorConfig.MaybeElementNotRemovable()])
     elif name == 'reverse':
         return BuiltinConstMethod('list.remove', NoneType.get_object())
     elif name == 'sort':
         return self.SortMethod('list.sort', self)
     raise NodeAttrError(name)
Esempio n. 2
0
 def create_attr(self, frame, anchor, name):
     if name == 'add':
         return self.SequenceAppender('set.add', self, args=[ANY])
     elif name == 'clear':
         return BuiltinConstMethod('set.clear', NoneType.get_object())
     elif name == 'difference_update':
         return BuiltinConstMethod('set.difference_update',
                                   NoneType.get_object(), [[ANY]])
     elif name == 'discard':
         return BuiltinConstMethod('set.discard', NoneType.get_object(),
                                   [ANY])
     elif name == 'intersection_update':
         return BuiltinConstMethod('set.intersection_update',
                                   NoneType.get_object(), [[ANY]])
     elif name == 'pop':
         return BuiltinConstMethod(
             'set.pop',
             NoneType.get_object(),
             expts=[ErrorConfig.MaybeElementNotRemovable()])
     elif name == 'remove':
         return BuiltinConstMethod(
             'set.remove',
             NoneType.get_object(), [ANY],
             expts=[ErrorConfig.MaybeElementNotFound()])
     elif name == 'symmetric_difference_update':
         return self.SequenceExtender('set.symmetric_difference_update',
                                      self,
                                      args=[ANY])
     elif name == 'update':
         return self.SequenceExtender('set.update', self, self, [ANY])
     return FrozenSetObject.create_attr(self, frame, anchor, name)
Esempio n. 3
0
 def create_attr(self, frame, anchor, name):
     if name == 'clear':
         return BuiltinConstMethod('dict.clear', NoneType.get_object())
     elif name == 'copy':
         dictobj = self.get_type().create_copy(frame, anchor, self)
         return BuiltinConstMethod('dict.copy', dictobj)
     elif name == 'fromkeys':
         return DictType.FromKeys('dict.fromkeys')
     elif name == 'get':
         return DictObject.Get(self, 'dict.get')
     elif name == 'has_key':
         return BuiltinConstMethod('dict.has_key', BoolType.get_object(),
                                   [ANY])
     elif name == 'keys':
         return BuiltinConstMethod('dict.keys',
                                   ListType.create_list(self.key))
     elif name == 'values':
         return BuiltinConstMethod('dict.values',
                                   ListType.create_list(self.value))
     elif name == 'items':
         return BuiltinConstMethod(
             'dict.items',
             ListType.create_list(
                 TupleType.create_tuple([self.key, self.value])))
     elif name == 'iterkeys':
         return BuiltinConstMethod('dict.iterkeys',
                                   IterType.create_iter(self.key))
     elif name == 'itervalues':
         return BuiltinConstMethod('dict.itervalues',
                                   IterType.create_iter(self.value))
     elif name == 'iteritems':
         return BuiltinConstMethod(
             'dict.iteritems',
             IterType.create_iter(
                 TupleType.create_tuple([self.key, self.value])))
     elif name == 'pop':
         return DictObject.Pop(self, 'dict.pop')
     elif name == 'popitem':
         return BuiltinConstMethod(
             'dict.popitem',
             TupleType.create_tuple([self.key, self.value]),
             expts=[ErrorConfig.MaybeElementNotFound()])
     elif name == 'setdefault':
         return DictObject.SetDefault(self, 'dict.setdefault')
     elif name == 'update':
         return DictObject.Update(self, 'dict.update')
     raise NodeAttrError(name)