THRIFT-1014 JavaScript gjslint compatibility (only line too long warnings)



git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1080553 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/compiler/cpp/src/generate/t_js_generator.cc b/compiler/cpp/src/generate/t_js_generator.cc
index ba82fea..bd640db 100644
--- a/compiler/cpp/src/generate/t_js_generator.cc
+++ b/compiler/cpp/src/generate/t_js_generator.cc
@@ -265,7 +265,7 @@
   // TODO should the namespace just be in the directory structure for node?
   vector<string> ns_pieces = js_namespace_pieces( program_ );
   if( ns_pieces.size() > 0){
-      f_types_ << "var " << ns_pieces[0] << " = {}"<<endl;
+      f_types_ << "var " << ns_pieces[0] << " = {};"<<endl;
 
       pns = ns_pieces[0];
 
@@ -335,19 +335,20 @@
  * @param tenum The enumeration
  */
 void t_js_generator::generate_enum(t_enum* tenum) {
-  f_types_ << js_type_namespace(tenum->get_program())<<tenum->get_name()<<" = { "<<endl;
+  f_types_ << js_type_namespace(tenum->get_program())<<tenum->get_name()<<" = {"<<endl;
 
   vector<t_enum_value*> constants = tenum->get_constants();
   vector<t_enum_value*>::iterator c_iter;
   for (c_iter = constants.begin(); c_iter != constants.end(); ++c_iter) {
     int value = (*c_iter)->get_value();
-    if (c_iter != constants.begin())
+	f_types_ << "'" << (*c_iter)->get_name() << "' : " << value;
+    if (c_iter != constants.end()-1)
         f_types_ << ",";
 
-    f_types_ << "'" << (*c_iter)->get_name() << "' : " << value << endl;
+	f_types_ << endl;
   }
 
-  f_types_ << "}"<<endl;
+  f_types_ << "};"<<endl;
 }
 
 /**
@@ -359,7 +360,7 @@
   t_const_value* value = tconst->get_value();
 
   f_types_ << js_type_namespace(program_)  << name << " = ";
-  f_types_ << render_const_value(type, value) << endl;
+  f_types_ << render_const_value(type, value) << ";" << endl;
 }
 
 /**
@@ -511,12 +512,12 @@
   if (gen_node_) {
     if (is_exported) {
       out << "var " << js_namespace(tstruct->get_program()) << tstruct->get_name() << " = " <<
-        "module.exports." << js_namespace(tstruct->get_program()) << tstruct->get_name() << " = function(args){\n";
+        "module.exports." << js_namespace(tstruct->get_program()) << tstruct->get_name() << " = function(args) {\n";
     } else {
-      out << "var " << js_namespace(tstruct->get_program()) << tstruct->get_name() << " = function(args){\n";
+      out << "var " << js_namespace(tstruct->get_program()) << tstruct->get_name() << " = function(args) {\n";
     }
   } else {
-    out << js_namespace(tstruct->get_program()) << tstruct->get_name() <<" = function(args){\n";
+    out << js_namespace(tstruct->get_program()) << tstruct->get_name() <<" = function(args) {\n";
   }
 
   if (gen_node_ && is_exception) {
@@ -531,10 +532,10 @@
     string dval = declare_field(*m_iter,false,true);
     t_type* t = get_true_type((*m_iter)->get_type());
     if ((*m_iter)->get_value() != NULL && !(t->is_struct() || t->is_xception())) {
-        dval = render_const_value((*m_iter)->get_type(), (*m_iter)->get_value());
-        out << indent() << "this." << (*m_iter)->get_name() << " = " << dval << endl;
+        dval = render_const_value((*m_iter)-> get_type(), (*m_iter)->get_value());
+        out << indent() << "this." << (*m_iter)->get_name() << " = " << dval << ";" << endl;
     } else {
-        out << indent() <<  dval << endl;
+        out << indent() <<  dval << ";" << endl;
     }
 
   }
@@ -545,32 +546,32 @@
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
       t_type* t = get_true_type((*m_iter)->get_type());
       if ((*m_iter)->get_value() != NULL && (t->is_struct() || t->is_xception())) {
-        indent(out) << "this." << (*m_iter)->get_name() << " = " << render_const_value(t, (*m_iter)->get_value())  << endl;
+        indent(out) << "this." << (*m_iter)->get_name() << " = " << render_const_value(t, (*m_iter)->get_value())  << ";" << endl;
       }
     }
 
-    out << "if( args != null ){";
+    out << indent() <<  "if (args != null) {" << endl;
 
     for (m_iter = members.begin(); m_iter != members.end(); ++m_iter) {
-        out << indent() << "if (null != args." << (*m_iter)->get_name() << ")" <<endl
-            << indent() << "this." << (*m_iter)->get_name() << " = args." << (*m_iter)->get_name()  << endl ;
-
+        out << indent() << indent() << "if (null != args." << (*m_iter)->get_name() << ") {" << endl
+            << indent() << indent() << indent() << "this." << (*m_iter)->get_name() << " = args." << (*m_iter)->get_name()  << ";" << endl
+            << indent() << indent() << "}" << endl;
     }
 
-    out << "}";
+    out << indent() <<  "}" << endl;
 
   }
 
   indent_down();
-  out << "}\n";
+  out << "};\n";
 
   if (is_exception) {
     out << "Thrift.inherits(" <<
         js_namespace(tstruct->get_program()) <<
-        tstruct->get_name() << ", Thrift.TException)" << endl;
+        tstruct->get_name() << ", Thrift.TException);" << endl;
   } else {
     //init prototype
-    out << js_namespace(tstruct->get_program())<<tstruct->get_name() <<".prototype = {}\n";
+    out << js_namespace(tstruct->get_program())<<tstruct->get_name() <<".prototype = {};\n";
   }
 
 
@@ -587,39 +588,39 @@
   const vector<t_field*>& fields = tstruct->get_members();
   vector<t_field*>::const_iterator f_iter;
 
-  out <<  js_namespace(tstruct->get_program())<<tstruct->get_name() << ".prototype.read = function(input){ "<<endl;
+  out <<  js_namespace(tstruct->get_program())<<tstruct->get_name() << ".prototype.read = function(input) {"<<endl;
 
   indent_up();
 
-  indent(out) << "var ret = input.readStructBegin()" << endl;
+  indent(out) << "input.readStructBegin();" << endl;
 
 
   // Loop over reading in fields
-  indent(out) << "while (1) " << endl;
+  indent(out) << "while (true)" << endl;
 
   scope_up(out);
 
-  indent(out) << "var ret = input.readFieldBegin()" << endl;
-  indent(out) << "var fname = ret.fname" <<endl;
-  indent(out) << "var ftype = ret.ftype" <<endl;
-  indent(out) << "var fid   = ret.fid"   <<endl;
+  indent(out) << "var ret = input.readFieldBegin();" << endl;
+  indent(out) << "var fname = ret.fname;" << endl;
+  indent(out) << "var ftype = ret.ftype;" << endl;
+  indent(out) << "var fid = ret.fid;"   << endl;
 
 
   // Check for field STOP marker and break
-  indent(out) << "if (ftype == Thrift.Type.STOP) " << endl;
+  indent(out) << "if (ftype == Thrift.Type.STOP)" << endl;
   indent_up();
-  indent(out) << "break" << endl;
+  indent(out) << "break;" << endl;
   indent_down();
 
   // Switch statement on the field we are reading
-  indent(out) << "switch(fid)" << endl;
+  indent(out) << "switch (fid)" << endl;
 
   scope_up(out);
 
   // Generate deserialization code for known cases
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
 
-    indent(out) << "case " << (*f_iter)->get_key() << ":";
+    indent(out) << "case " << (*f_iter)->get_key() << ":" << endl;
     indent(out) << "if (ftype == " << type_to_enum((*f_iter)->get_type()) << ") {" << endl;
 
     indent_up();
@@ -628,29 +629,29 @@
 
     indent(out) << "} else {" << endl;
 
-    indent(out) <<  "  input.skip(ftype)" << endl;
+    indent(out) <<  "  input.skip(ftype);" << endl;
 
     out <<
       indent() << "}" << endl <<
-      indent() << "break" << endl;
+      indent() << "break;" << endl;
 
   }
   // In the default case we skip the field
   indent(out) <<  "default:" << endl;
-  indent(out) <<  "  input.skip(ftype)" << endl;
+  indent(out) <<  "  input.skip(ftype);" << endl;
 
   scope_down(out);
 
-  indent(out) << "input.readFieldEnd()" << endl;
+  indent(out) << "input.readFieldEnd();" << endl;
 
   scope_down(out);
 
-  indent(out) << "input.readStructEnd()" << endl;
+  indent(out) << "input.readStructEnd();" << endl;
 
-  indent(out) << "return" << endl;
+  indent(out) << "return;" << endl;
 
   indent_down();
-  out << indent() << "}" << endl << endl;
+  out << indent() << "};" << endl << endl;
 }
 
 /**
@@ -662,11 +663,11 @@
   const vector<t_field*>& fields = tstruct->get_members();
   vector<t_field*>::const_iterator f_iter;
 
-  out << js_namespace(tstruct->get_program())<< tstruct->get_name() << ".prototype.write = function(output){ "<<endl;
+  out << js_namespace(tstruct->get_program())<< tstruct->get_name() << ".prototype.write = function(output) {"<<endl;
 
   indent_up();
 
-  indent(out) << "output.writeStructBegin('" << name << "')" << endl;
+  indent(out) << "output.writeStructBegin('" << name << "');" << endl;
 
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
     out << indent() << "if (null != this." << (*f_iter)->get_name() << ") {" << endl;
@@ -676,14 +677,14 @@
       "output.writeFieldBegin(" <<
       "'" << (*f_iter)->get_name() << "', " <<
       type_to_enum((*f_iter)->get_type()) << ", " <<
-      (*f_iter)->get_key() << ")" << endl;
+      (*f_iter)->get_key() << ");" << endl;
 
 
     // Write field contents
     generate_serialize_field(out, *f_iter, "this.");
 
     indent(out) <<
-        "output.writeFieldEnd()" << endl;
+        "output.writeFieldEnd();" << endl;
 
     indent_down();
     indent(out) << "}" << endl;
@@ -691,14 +692,14 @@
 
 
   out <<
-    indent() << "output.writeFieldStop()" << endl <<
-    indent() << "output.writeStructEnd()" << endl;
+    indent() << "output.writeFieldStop();" << endl <<
+    indent() << "output.writeStructEnd();" << endl;
 
-  out <<indent() << "return" << endl;
+  out <<indent() << "return;" << endl;
 
   indent_down();
   out <<
-    indent() << "}" << endl <<
+    indent() << "};" << endl <<
     endl;
 }
 
@@ -766,17 +767,17 @@
 
     scope_up(f_service_);
 
-    f_service_ << indent() << "var r = input.readMessageBegin()" << endl
+    f_service_ << indent() << "var r = input.readMessageBegin();" << endl
                << indent() << "if (this['process_' + r.fname]) {" << endl
-               << indent() << "  return this['process_' + r.fname].call(this, r.rseqid, input, output)" << endl
+               << indent() << "  return this['process_' + r.fname].call(this, r.rseqid, input, output);" << endl
                << indent() << "} else {" << endl
-               << indent() << "  input.skip(Thrift.Type.STRUCT)" << endl
-               << indent() << "  input.readMessageEnd()" << endl
-               << indent() << "  var x = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, 'Unknown function ' + r.fname)" << endl
-               << indent() << "  output.writeMessageBegin(r.fname, Thrift.MessageType.Exception, r.rseqid)" << endl
-               << indent() << "  x.write(output)" << endl
-               << indent() << "  output.writeMessageEnd()" << endl
-               << indent() << "  output.flush()" << endl
+               << indent() << "  input.skip(Thrift.Type.STRUCT);" << endl
+               << indent() << "  input.readMessageEnd();" << endl
+               << indent() << "  var x = new Thrift.TApplicationException(Thrift.TApplicationExceptionType.UNKNOWN_METHOD, 'Unknown function ' + r.fname);" << endl
+               << indent() << "  output.writeMessageBegin(r.fname, Thrift.MessageType.Exception, r.rseqid);" << endl
+               << indent() << "  x.write(output);" << endl
+               << indent() << "  output.writeMessageEnd();" << endl
+               << indent() << "  output.flush();" << endl
                << indent() << "}" << endl;
 
     scope_down(f_service_);
@@ -804,14 +805,14 @@
     string resultname =  js_namespace(program_)+ service_name_ + "_" + tfunction->get_name() + "_result";
 
     f_service_ <<
-        indent() << "var args = new " << argsname << "()" << endl <<
-        indent() << "args.read(input)" << endl <<
-        indent() << "input.readMessageEnd()" << endl;
+        indent() << "var args = new " << argsname << "();" << endl <<
+        indent() << "args.read(input);" << endl <<
+        indent() << "input.readMessageEnd();" << endl;
 
     // Declare result for non oneway function
     if (!tfunction->is_oneway()) {
         f_service_ <<
-            indent() << "var result = new " << resultname << "()" << endl;
+            indent() << "var result = new " << resultname << "();" << endl;
     }
 
     // Generate the function call
@@ -843,16 +844,16 @@
     if (!first) {
         f_service_ << ", ";
     }
-    f_service_ << "function(success) {" << endl;
+    f_service_ << "function (success) {" << endl;
     indent_up();
 
     f_service_ <<
-      indent() << "result.success = success" << endl <<
+      indent() << "result.success = success;" << endl <<
       indent() << "output.writeMessageBegin(\"" << tfunction->get_name() <<
-        "\", Thrift.MessageType.REPLY, seqid)" << endl <<
-      indent() << "result.write(output)" << endl <<
-      indent() << "output.writeMessageEnd()" << endl <<
-      indent() << "output.flush()" << endl;
+        "\", Thrift.MessageType.REPLY, seqid);" << endl <<
+      indent() << "result.write(output);" << endl <<
+      indent() << "output.writeMessageEnd();" << endl <<
+      indent() << "output.flush();" << endl;
 
     indent_down();
     indent(f_service_) << "})" << endl;
@@ -946,19 +947,19 @@
       indent() << "  this.output = output;" << endl <<
       indent() << "  this.pClass = pClass;" << endl <<
       indent() << "  this.seqid = 0;" << endl <<
-      indent() << "  this._reqs = {}" << endl;
+      indent() << "  this._reqs = {};" << endl;
   } else {
     f_service_ <<
-      indent() << "  this.input  = input" << endl <<
-      indent() << "  this.output = null == output ? input : output" << endl <<
-      indent() << "  this.seqid  = 0" << endl;
+      indent() << "  this.input = input;" << endl <<
+      indent() << "  this.output = null == output ? input : output;" << endl <<
+      indent() << "  this.seqid = 0;" << endl;
   }
 
 
   indent_down();
 
   f_service_ <<
-      indent() << "}" << endl;
+      indent() << "};" << endl;
 
 
   if (tservice->get_extends() != NULL) {
@@ -968,7 +969,7 @@
         tservice->get_extends()->get_name() << "Client)" << endl;
   } else {
       //init prototype
-      indent(f_service_) <<  js_namespace(tservice->get_program())<<service_name_ << "Client.prototype = {}"<<endl;
+      indent(f_service_) <<  js_namespace(tservice->get_program())<<service_name_ << "Client.prototype = {};"<<endl;
   }
 
   // Generate client method implementations
@@ -981,7 +982,7 @@
     string funname = (*f_iter)->get_name();
 
     // Open function
-    f_service_ <<  js_namespace(tservice->get_program())<<service_name_<<"Client.prototype." << function_signature(*f_iter, "", gen_node_) << "{" << endl;
+    f_service_ <<  js_namespace(tservice->get_program())<<service_name_<<"Client.prototype." << function_signature(*f_iter, "", gen_node_) << " {" << endl;
 
     indent_up();
 
@@ -1003,7 +1004,7 @@
       }
       f_service_ << (*fld_iter)->get_name();
     }
-    f_service_ << ")" << endl;
+    f_service_ << ");" << endl;
 
     if (!gen_node_ && !(*f_iter)->is_oneway()) {
       f_service_ << indent();
@@ -1011,15 +1012,15 @@
         f_service_ << "return ";
       }
       f_service_ <<
-        "this.recv_" << funname << "()" << endl;
+        "this.recv_" << funname << "();" << endl;
     }
 
     indent_down();
 
-    f_service_ << "}" << endl << endl;
+    f_service_ << "};" << endl << endl;
 
     f_service_ <<  js_namespace(tservice->get_program())<<service_name_ <<
-        "Client.prototype.send_" << function_signature(*f_iter) << "{" <<endl;
+        "Client.prototype.send_" << function_signature(*f_iter) << " {" <<endl;
 
     indent_up();
 
@@ -1036,31 +1037,31 @@
 
     // Serialize the request header
     f_service_ <<
-      indent() << outputVar << ".writeMessageBegin('" << (*f_iter)->get_name() << "', Thrift.MessageType.CALL, this.seqid)" << endl;
+      indent() << outputVar << ".writeMessageBegin('" << (*f_iter)->get_name() << "', Thrift.MessageType.CALL, this.seqid);" << endl;
 
     f_service_ <<
-      indent() << "var args = new " << argsname << "()" << endl;
+      indent() << "var args = new " << argsname << "();" << endl; 
 
     for (fld_iter = fields.begin(); fld_iter != fields.end(); ++fld_iter) {
       f_service_ <<
-        indent() << "args." << (*fld_iter)->get_name() << " = " << (*fld_iter)->get_name() << endl;
+        indent() << "args." << (*fld_iter)->get_name() << " = " << (*fld_iter)->get_name() << ";" << endl;
     }
 
     // Write to the stream
     f_service_ <<
-      indent() << "args.write(" << outputVar << ")" << endl <<
-      indent() << outputVar << ".writeMessageEnd()" << endl;
+      indent() << "args.write(" << outputVar << ");" << endl <<
+      indent() << outputVar << ".writeMessageEnd();" << endl;
 
     if (gen_node_) {
-      f_service_ << indent() << "return this.output.flush()" << endl;
+      f_service_ << indent() << "return this.output.flush();" << endl;
     } else {
-      f_service_ << indent() << "return this.output.getTransport().flush()" << endl;
+      f_service_ << indent() << "return this.output.getTransport().flush();" << endl;
     }
 
 
     indent_down();
 
-    f_service_ << "}" << endl;
+    f_service_ << "};" << endl;
 
 
     if (!(*f_iter)->is_oneway()) {
@@ -1070,7 +1071,7 @@
         // Open function
         f_service_ <<
             endl <<  js_namespace(tservice->get_program())<<service_name_ <<
-            "Client.prototype.recv_" << (*f_iter)->get_name() << " = function(input,mtype,rseqid){" << endl;
+            "Client.prototype.recv_" << (*f_iter)->get_name() << " = function(input,mtype,rseqid) {" << endl;
       } else {
         t_struct noargs(program_);
 
@@ -1080,7 +1081,7 @@
         // Open function
         f_service_ <<
             endl <<  js_namespace(tservice->get_program())<<service_name_ <<
-            "Client.prototype." << function_signature(&recv_function) << "{" << endl;
+            "Client.prototype." << function_signature(&recv_function) << " {" << endl;
       }
 
       indent_up();
@@ -1098,28 +1099,28 @@
           indent() << "delete this._reqs[rseqid];" << endl;
       } else {
         f_service_ <<
-          indent() << "var ret = this.input.readMessageBegin()" << endl <<
-          indent() << "var fname = ret.fname" << endl <<
-          indent() << "var mtype = ret.mtype" << endl <<
-          indent() << "var rseqid= ret.rseqid" <<endl;
+          indent() << "var ret = this.input.readMessageBegin();" << endl <<
+          indent() << "var fname = ret.fname;" << endl <<
+          indent() << "var mtype = ret.mtype;" << endl <<
+          indent() << "var rseqid = ret.rseqid;" <<endl;
       }
 
       f_service_ <<
           indent() << "if (mtype == Thrift.MessageType.EXCEPTION) {" << endl <<
-          indent() << "  var x = new Thrift.TApplicationException()" << endl <<
-          indent() << "  x.read(" << inputVar << ")" << endl <<
-          indent() << "  " << inputVar << ".readMessageEnd()" << endl <<
+          indent() << "  var x = new Thrift.TApplicationException();" << endl <<
+          indent() << "  x.read(" << inputVar << ");" << endl <<
+          indent() << "  " << inputVar << ".readMessageEnd();" << endl <<
           indent() << "  " << render_recv_throw("x") << endl <<
           indent() << "}" << endl;
 
 
       f_service_ <<
-        indent() << "var result = new " << resultname << "()" << endl <<
-        indent() << "result.read(" << inputVar << ")" << endl;
+        indent() << "var result = new " << resultname << "();" << endl <<
+        indent() << "result.read(" << inputVar << ");" << endl;
 
 
       f_service_ <<
-        indent() << inputVar << ".readMessageEnd()" << endl <<
+        indent() << inputVar << ".readMessageEnd();" << endl <<
         endl;
 
 
@@ -1136,22 +1137,22 @@
       // Careful, only return result if not a void function
       if (!(*f_iter)->get_returntype()->is_void()) {
         f_service_ <<
-          indent() << "if (null != result.success ) {" << endl <<
+          indent() << "if (null != result.success) {" << endl <<
           indent() << "  " << render_recv_return("result.success") << endl <<
           indent() << "}" << endl;
         f_service_ <<
-          indent() << render_recv_throw("\"" + (*f_iter)->get_name() + " failed: unknown result\"") << endl;
+          indent() << render_recv_throw("'" + (*f_iter)->get_name() + " failed: unknown result'") << endl;
       } else {
           if (gen_node_) {
             indent(f_service_) << "callback(null)" << endl;
           } else {
-            indent(f_service_) << "return" << endl;
+            indent(f_service_) << "return;" << endl;
           }
       }
 
       // Close function
       indent_down();
-      f_service_ << "}"<<endl;
+      f_service_ << "};"<<endl;
 
     }
   }
@@ -1162,7 +1163,7 @@
   if (gen_node_) {
     return "return callback(" + var + ");";
   } else {
-    return "throw " + var;
+    return "throw " + var + ";";
   }
 }
 
@@ -1170,7 +1171,7 @@
   if (gen_node_) {
     return "return callback(null, " + var + ");";
   } else {
-    return "return " + var;
+    return "return " + var + ";";
   }
 }
 
@@ -1239,7 +1240,7 @@
         out << ".value";
     }
 
-    out << endl;
+    out << ";" << endl;
   } else {
     printf("DO NOT KNOW HOW TO DESERIALIZE FIELD '%s' TYPE '%s'\n",
            tfield->get_name().c_str(), type->get_name().c_str());
@@ -1256,16 +1257,14 @@
                                                    t_struct* tstruct,
                                                    string prefix) {
     out <<
-        indent() << prefix << " = new " <<  js_type_namespace(tstruct->get_program())<<tstruct->get_name() << "()" << endl <<
-        indent() << prefix << ".read(input)" << endl;
+        indent() << prefix << " = new " <<  js_type_namespace(tstruct->get_program())<<tstruct->get_name() << "();" << endl <<
+        indent() << prefix << ".read(input);" << endl;
 
 }
 
 void t_js_generator::generate_deserialize_container(ofstream &out,
                                                       t_type* ttype,
                                                       string prefix) {
-  scope_up(out);
-
   string size = tmp("_size");
   string ktype = tmp("_ktype");
   string vtype = tmp("_vtype");
@@ -1276,40 +1275,40 @@
   t_field fvtype(g_type_byte, vtype);
   t_field fetype(g_type_byte, etype);
 
-  out << indent() << "var " << size << " = 0" << endl;
-  out << indent() << "var rtmp3" << endl;
+  out << indent() << "var " << size << " = 0;" << endl;
+  out << indent() << "var rtmp3;" << endl;
 
 
   // Declare variables, read header
   if (ttype->is_map()) {
       out <<
-          indent() << prefix << " = {}" << endl <<
-          indent() << "var " << ktype << " = 0" << endl <<
-          indent() << "var " << vtype << " = 0" << endl;
+          indent() << prefix << " = {};" << endl <<
+          indent() << "var " << ktype << " = 0;" << endl <<
+          indent() << "var " << vtype << " = 0;" << endl;
 
-      out << indent() << "rtmp3 = input.readMapBegin()" << endl;
-      out << indent() << ktype << "= rtmp3.ktype" << endl;
-      out << indent() << vtype << "= rtmp3.vtype" << endl;
-      out << indent() << size  << "= rtmp3.size" << endl;
+      out << indent() << "rtmp3 = input.readMapBegin();" << endl;
+      out << indent() << ktype << " = rtmp3.ktype;" << endl;
+      out << indent() << vtype << " = rtmp3.vtype;" << endl;
+      out << indent() << size  << " = rtmp3.size;" << endl;
 
 
   } else if (ttype->is_set()) {
 
     out <<
-        indent() << prefix << " = []" << endl <<
-        indent() << "var " << etype << " = 0" << endl <<
-        indent() << "rtmp3 = input.readSetBegin()" << endl <<
-        indent() << etype << "= rtmp3.etype"<<endl<<
-        indent() << size << " = rtmp3.size"<<endl;
+        indent() << prefix << " = [];" << endl <<
+        indent() << "var " << etype << " = 0;" << endl <<
+        indent() << "rtmp3 = input.readSetBegin();" << endl <<
+        indent() << etype << " = rtmp3.etype;"<<endl<<
+        indent() << size << " = rtmp3.size;"<<endl;
 
   } else if (ttype->is_list()) {
 
     out <<
-        indent() << prefix << " = []" << endl <<
-        indent() << "var " << etype << " = 0" << endl <<
-        indent() << "rtmp3 = input.readListBegin()" << endl <<
-        indent() << etype << " = rtmp3.etype"<<endl<<
-        indent() << size << " = rtmp3.size"<<endl;
+        indent() << prefix << " = [];" << endl <<
+        indent() << "var " << etype << " = 0;" << endl <<
+        indent() << "rtmp3 = input.readListBegin();" << endl <<
+        indent() << etype << " = rtmp3.etype;"<<endl<<
+        indent() << size << " = rtmp3.size;"<<endl;
   }
 
   // For loop iterates over elements
@@ -1333,14 +1332,12 @@
 
   // Read container end
   if (ttype->is_map()) {
-    indent(out) << "input.readMapEnd()" << endl;
+    indent(out) << "input.readMapEnd();" << endl;
   } else if (ttype->is_set()) {
-    indent(out) << "input.readSetEnd()" << endl;
+    indent(out) << "input.readSetEnd();" << endl;
   } else if (ttype->is_list()) {
-    indent(out) << "input.readListEnd()" << endl;
+    indent(out) << "input.readListEnd();" << endl;
   }
-
-  scope_down(out);
 }
 
 
@@ -1356,15 +1353,15 @@
   t_field fval(tmap->get_val_type(), val);
 
   indent(out) <<
-    declare_field(&fkey, false, false) << endl;
+    declare_field(&fkey, false, false) << ";" << endl;
   indent(out) <<
-    declare_field(&fval, false, false) << endl;
+    declare_field(&fval, false, false) << ";" << endl;
 
   generate_deserialize_field(out, &fkey);
   generate_deserialize_field(out, &fval);
 
   indent(out) <<
-      prefix << "[" << key << "] = " << val << endl;
+      prefix << "[" << key << "] = " << val << ";" << endl;
 }
 
 void t_js_generator::generate_deserialize_set_element(ofstream &out,
@@ -1374,12 +1371,12 @@
   t_field felem(tset->get_elem_type(), elem);
 
   indent(out) <<
-    "var " << elem << " = null" << endl;
+    "var " << elem << " = null;" << endl;
 
   generate_deserialize_field(out, &felem);
 
   indent(out) <<
-      prefix << ".push(" << elem << ")" << endl;
+      prefix << ".push(" << elem << ");" << endl;
 }
 
 void t_js_generator::generate_deserialize_list_element(ofstream &out,
@@ -1389,12 +1386,12 @@
   t_field felem(tlist->get_elem_type(), elem);
 
   indent(out) <<
-    "var " << elem << " = null" << endl;
+    "var " << elem << " = null;" << endl;
 
   generate_deserialize_field(out, &felem);
 
   indent(out) <<
-      prefix << ".push(" << elem << ")" << endl;
+      prefix << ".push(" << elem << ");" << endl;
 }
 
 
@@ -1467,7 +1464,7 @@
     } else if (type->is_enum()) {
       out << "writeI32(" << name << ")";
     }
-    out << endl;
+    out << ";" << endl;
 
   } else {
     printf("DO NOT KNOW HOW TO SERIALIZE FIELD '%s%s' TYPE '%s'\n",
@@ -1487,7 +1484,7 @@
                                                  t_struct* tstruct,
                                                  string prefix) {
   (void) tstruct;
-  indent(out) << prefix << ".write(output)" << endl;
+  indent(out) << prefix << ".write(output);" << endl;
 }
 
 /**
@@ -1496,39 +1493,35 @@
 void t_js_generator::generate_serialize_container(ofstream &out,
                                                     t_type* ttype,
                                                     string prefix) {
-  scope_up(out);
-
   if (ttype->is_map()) {
     indent(out) <<
         "output.writeMapBegin(" <<
         type_to_enum(((t_map*)ttype)->get_key_type()) << ", " <<
         type_to_enum(((t_map*)ttype)->get_val_type()) << ", " <<
-        "Thrift.objectLength(" << prefix << "))" << endl;
+        "Thrift.objectLength(" << prefix << "));" << endl;
   } else if (ttype->is_set()) {
     indent(out) <<
       "output.writeSetBegin(" <<
       type_to_enum(((t_set*)ttype)->get_elem_type()) << ", " <<
-        prefix << ".length)" << endl;
+        prefix << ".length);" << endl;
 
   } else if (ttype->is_list()) {
 
     indent(out) <<
         "output.writeListBegin(" <<
         type_to_enum(((t_list*)ttype)->get_elem_type()) << ", " <<
-        prefix << ".length)" << endl;
+        prefix << ".length);" << endl;
 
   }
 
-  scope_up(out);
-
   if (ttype->is_map()) {
     string kiter = tmp("kiter");
     string viter = tmp("viter");
-    indent(out) << "for(var "<<kiter<<" in "<<prefix<<")";
+    indent(out) << "for (var "<<kiter<<" in "<<prefix<<")" << endl;
     scope_up(out);
     indent(out) << "if ("<<prefix<<".hasOwnProperty("<<kiter<<"))" <<endl;
     scope_up(out);
-    indent(out) << "var "<<viter<<" = "<<prefix<<"["<<kiter<<"]"<<endl;
+    indent(out) << "var "<<viter<<" = "<<prefix<<"["<<kiter<<"];"<<endl;
     generate_serialize_map_element(out, (t_map*)ttype, kiter, viter);
     scope_down(out);
     scope_down(out);
@@ -1537,11 +1530,11 @@
   } else if (ttype->is_set()) {
     string iter = tmp("iter");
     indent(out) <<
-      "for(var "<<iter<<" in " << prefix << ")" << endl;
+      "for (var "<<iter<<" in " << prefix << ")" << endl;
     scope_up(out);
     indent(out) << "if ("<<prefix<<".hasOwnProperty("<<iter<<"))" <<endl;
     scope_up(out);
-    indent(out) << iter << "=" << prefix << "[" << iter << "]"<< endl;
+    indent(out) << iter << " = " << prefix << "[" << iter << "];"<< endl;
     generate_serialize_set_element(out, (t_set*)ttype, iter);
     scope_down(out);
     scope_down(out);
@@ -1550,30 +1543,26 @@
   } else if (ttype->is_list()) {
     string iter = tmp("iter");
     indent(out) <<
-        "for(var "<<iter<<" in "<< prefix << ")" << endl;
+        "for (var "<<iter<<" in "<< prefix << ")" << endl;
     scope_up(out);
     indent(out) << "if ("<<prefix<<".hasOwnProperty("<<iter<<"))" <<endl;
     scope_up(out);
-    indent(out) << iter << "=" << prefix << "[" << iter << "]"<< endl;
+    indent(out) << iter << " = " << prefix << "[" << iter << "];"<< endl;
     generate_serialize_list_element(out, (t_list*)ttype, iter);
     scope_down(out);
     scope_down(out);
   }
 
-  scope_down(out);
-
   if (ttype->is_map()) {
     indent(out) <<
-      "output.writeMapEnd()" << endl;
+      "output.writeMapEnd();" << endl;
   } else if (ttype->is_set()) {
     indent(out) <<
-      "output.writeSetEnd()" << endl;
+      "output.writeSetEnd();" << endl;
   } else if (ttype->is_list()) {
     indent(out) <<
-      "output.writeListEnd()" << endl;
+      "output.writeListEnd();" << endl;
   }
-
-  scope_down(out);
 }
 
 /**
@@ -1683,14 +1672,14 @@
   for (f_iter = fields.begin(); f_iter != fields.end(); ++f_iter) {
 
       if(f_iter != fields.begin())
-          str += ",";
+          str += ", ";
 
       str += (*f_iter)->get_name();
   }
 
   if (include_callback) {
     if (!fields.empty()) {
-      str += ",";
+      str += ", ";
     }
     str += "callback";
   }