       else
         constructor: new AssignNode(@variable, new CodeNode())
 
+    if @do_return
+      returns: new ReturnNode(@variable).compile(o)
+    else
+      returns: ''
+
     construct:                       @idt() + constructor.compile(o) + ';\n'
     props:     if props.empty() then '' else props.compile(o) + '\n'
     extension: if extension     then @idt() + extension.compile(o) + ';\n' else ''
-    returns:   if ret           then '\n' + @idt() + 'return ' + @variable.compile(o) + ';' else ''
     "$construct$extension$props$returns"
 
 statement ClassNode

    shared_scope: del o, 'shared_scope'
    top:          del o, 'top'
    o.scope:      shared_scope or new Scope(o.scope, @body, this)
    o.returns:    true
    o.top:        true
    o.indent:     @idt(if @bound then 2 else 1)
    del o, 'no_wrap'

    @children.push @body: body
    this

  make_return: ->
    @do_return: true
    this

  top_sensitive: ->
    true

