THRIFT-1200. js: JS compiler generates code that clobbers existing namespaces
Patch: Ilya Maykov
git-svn-id: https://svn.apache.org/repos/asf/thrift/trunk@1133606 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 6c61890..f925a4d 100644
--- a/compiler/cpp/src/generate/t_js_generator.cc
+++ b/compiler/cpp/src/generate/t_js_generator.cc
@@ -275,15 +275,10 @@
// 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;
+ }
}
}