       throw TypeError "dereferencing an untyped expression:\n#{@first}" unless ty1
       throw TypeError "dereferencing a non-pointer type" unless ty1 instanceof PointerType and not ty1.onStack
       ty1.base
+    else if (op is '++' or op is '--') and ty1 = first.computedType
+      ty1 if ty1 instanceof PointerType or ty1 in primTys
 
   ty1 = @first.unwrapAll().computedType
   ty2 = @second.unwrapAll().computedType

      # access, as in struct accesses, dereferencing is the same as not
      # dereferencing, since . is extended to work like -> in C.
      makeDeref @first, 0, @first.computedType
  else
    ty1 = @first.computedType
    ty2 = @second.computedType

  return unless @computedType
  op = @operator
  if @isUnary()
    if op is 'new' and ty1 = @computedType
      # TODO when ty.onStack
      new Call MALLOC, [new Value new Literal ty.base.size]
    else if op is 'delete'
