         p.addLine "return #{if c.argument isnt null then walk c.argument else ''}"
       when 'ExpressionStatement'
         ex = walk c.expression
-        if ex then p.addLine "#{ex}"
+        if c.expression and \
+           c.expression.type not in ['Literal', 'Identifier', 'AssignmentExpression']
+          p.addLine "#{ex}"
       when 'CallExpression', 'NewExpression'
         "#{walk c.callee}(#{c.arguments.map(walk).join ', '})"
       when 'ThrowStatement'

      when 'ArrayExpression'
        "[#{c.elements.map(walk).join ', '}]"
      when 'ObjectExpression'
        rv = 'jsdict({'
        for prop in c.properties
          rv += "\"#{prop.key.name ? prop.key.value}\": (#{walk prop.value}), "
        rv += '})'
      when 'Literal'
        if c.value is null

      when 'WhileStatement'
        if c.prelude
          c.prelude.map(walk)
        p.addLine "while #{walk c.test}:"
        walk c.body
      when 'VariableDeclaration'
        for d in c.declarations
