You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@thrift.apache.org by br...@apache.org on 2011/06/09 01:51:24 UTC

svn commit: r1133606 - /thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc

Author: bryanduxbury
Date: Wed Jun  8 23:51:24 2011
New Revision: 1133606

URL: http://svn.apache.org/viewvc?rev=1133606&view=rev
Log:
THRIFT-1200. js: JS compiler generates code that clobbers existing namespaces

Patch: Ilya Maykov

Modified:
    thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc

Modified: thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc
URL: http://svn.apache.org/viewvc/thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc?rev=1133606&r1=1133605&r2=1133606&view=diff
==============================================================================
--- thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc (original)
+++ thrift/trunk/compiler/cpp/src/generate/t_js_generator.cc Wed Jun  8 23:51:24 2011
@@ -275,15 +275,10 @@ void t_js_generator::init_generator() {
   // 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;
-
-      pns = ns_pieces[0];
-
-      for(size_t i=1; i<ns_pieces.size(); i++){
-          pns += "." + ns_pieces[i];
-
-          f_types_ << pns << " = {}"<<endl;
-      }
+    for(size_t i = 0; i < ns_pieces.size(); ++i) {
+      pns += ((i == 0) ? "" : ".") + ns_pieces[i];
+      f_types_ << "if (typeof " << pns << " === 'undefined') " << pns << " = {};" << endl;
+    }
   }
 
 }