parameters: (self, inst)
docstring: The returned object must have a new reference
docstring_summary: The returned object must have a new reference
docstring_tokens: The returned object must have a new reference
function: def lower_assign(self, inst):
          """
          The returned object must have a new reference
          """
          value = inst.value
          if isinstance(value, (ir.Const, ir.FreeVar)):
              return self.lower_const(value.value)
          elif isinstance(value, ir.Var):
              val = self.loadvar(value.name)
              self.incref(val)
              return val
          elif isinstance(value, ir.Expr):
              return self.lower_expr(value)
          elif isinstance(value, ir.Global):
              return self.lower_global(value.name, value.value)
          elif isinstance(value, ir.Yield):
              return self.lower_yield(value)
          elif isinstance(value, ir.Arg):
              obj = self.fnargs[value.index]
              # When an argument is omitted, the dispatcher hands it as
              # _OmittedArg(<default value>)
              typobj = self.pyapi.get_type(obj)
              slot = cgutils.alloca_once_value(self.builder, obj)
              is_omitted = self.builder.icmp_unsigned('==', typobj,
                                                      self.omitted_typobj)
              with self.builder.if_else(is_omitted, likely=False) as (omitted, present):
                  with present:
                      self.incref(obj)
                      self.builder.store(obj, slot)
                  with omitted:
                      # The argument is omitted => get the default value
                      obj = self.pyapi.object_getattr_string(obj, 'value')
                      self.builder.store(obj, slot)
  
              return self.builder.load(slot)
          else:
              raise NotImplementedError(type(value), value)
function_tokens: def lower_assign ( self , inst ) : value = inst . value if isinstance ( value , ( ir . Const , ir . FreeVar ) ) : return self . lower_const ( value . value ) elif isinstance ( value , ir . Var ) : val = self . loadvar ( value . name ) self . incref ( val ) return val elif isinstance ( value , ir . Expr ) : return self . lower_expr ( value ) elif isinstance ( value , ir . Global ) : return self . lower_global ( value . name , value . value ) elif isinstance ( value , ir . Yield ) : return self . lower_yield ( value ) elif isinstance ( value , ir . Arg ) : obj = self . fnargs [ value . index ] # When an argument is omitted, the dispatcher hands it as # _OmittedArg(<default value>) typobj = self . pyapi . get_type ( obj ) slot = cgutils . alloca_once_value ( self . builder , obj ) is_omitted = self . builder . icmp_unsigned ( '==' , typobj , self . omitted_typobj ) with self . builder . if_else ( is_omitted , likely = False ) as ( omitted , present ) : with present : self . incref ( obj ) self . builder . store ( obj , slot ) with omitted : # The argument is omitted => get the default value obj = self . pyapi . object_getattr_string ( obj , 'value' ) self . builder . store ( obj , slot ) return self . builder . load ( slot ) else : raise NotImplementedError ( type ( value ) , value )