     else
       id = @walk(node.left.declarations[0].id)
 
-    if node.body.type is 'BlockStatement'
-      body = @indent => @walk(node.body)
-    else
-      body = @indent => [ @indent(), @walk(node.body) ]
+    body = @makeLoopBody(node.body)
 
     [ "for ", id, " of ", @walk(node.right), "\n", body ]
+
+  makeLoopBody: (body) ->
+    isBlock = body?.type is 'BlockStatement'
+    if not body or (isBlock and body.body.length is 0)
+      @indent => [ @indent(), "continue\n" ]
+    else if isBlock
+      @indent => @walk(body)
+    else
+      @indent => [ @indent(), @walk(body) ]
 
   CoffeeEscapedExpression: (node) ->
     [ '`', node.value, '`' ]

    else
      [ "loop", "\n" ]

    update = if node.update
      @indent => [ @indent(), @walk(node.update), "\n" ]
    else
      [ ]

    [ init, looper, body, update ]


  ForInStatement: (node) ->
    if node.left.type isnt 'VariableDeclaration'


  # look for comments in left..node.range[0]
  for item, i in body
    if item.range
      newComments = comments.filter (c) ->
        c.range[0] >= left and c.range[1] <= item.range[0]
      list = list.concat(newComments)

    list.push item

    if item.range
      left = item.range[1]
  list
