summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-10-22 22:11:53 +0200
committerJose <jose@zeroc.com>2018-10-23 19:49:47 +0200
commit80d005a0454ac9c1155099d0bc50917762e73f72 (patch)
tree9b4e6edf3869667eaa0738b6e8113a40d1ed4091 /cpp/src/slice2js
parentDo not include babel polyfill when using workers (diff)
downloadice-80d005a0454ac9c1155099d0bc50917762e73f72.tar.bz2
ice-80d005a0454ac9c1155099d0bc50917762e73f72.tar.xz
ice-80d005a0454ac9c1155099d0bc50917762e73f72.zip
Write typescript imports inside module declaration
Diffstat (limited to 'cpp/src/slice2js')
-rw-r--r--cpp/src/slice2js/Gen.cpp28
-rw-r--r--cpp/src/slice2js/Gen.h7
2 files changed, 22 insertions, 13 deletions
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index 9fd6c3b33a7..10b571b6d83 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -699,7 +699,6 @@ Slice::Gen::generate(const UnitPtr& p)
{
TypeScriptRequireVisitor requireVisitor(_out);
p->visit(&requireVisitor, false);
- requireVisitor.writeRequires(p);
//
// If at some point TypeScript adds an operator to refer to a type in the global scope
@@ -2361,15 +2360,6 @@ Slice::Gen::TypeScriptRequireVisitor::visitDictionary(const DictionaryPtr& dict)
addImport(dict->valueType(), dict);
}
-void
-Slice::Gen::TypeScriptRequireVisitor::writeRequires(const UnitPtr& p)
-{
- for(vector<pair<string, string> >::const_iterator i = _imports.begin(); i != _imports.end(); ++i)
- {
- _out << nl << "import * as " << i->second << " from \"" << i->first << "\"";
- }
-}
-
Slice::Gen::TypeScriptAliasVisitor::TypeScriptAliasVisitor(IceUtilInternal::Output& out) :
JsVisitor(out)
{
@@ -2563,10 +2553,24 @@ Slice::Gen::TypeScriptAliasVisitor::writeAlias(const UnitPtr& p)
Slice::Gen::TypeScriptVisitor::TypeScriptVisitor(::IceUtilInternal::Output& out,
const vector<pair<string, string> >& imports) :
- JsVisitor(out, imports)
+ JsVisitor(out, imports),
+ _wroteImports(false)
{
}
+void
+Slice::Gen::TypeScriptVisitor::writeImports()
+{
+ if(!_wroteImports)
+ {
+ for(vector<pair<string, string> >::const_iterator i = _imports.begin(); i != _imports.end(); ++i)
+ {
+ _out << nl << "import * as " << i->second << " from \"" << i->first << "\"";
+ }
+ _wroteImports = true;
+ }
+}
+
bool
Slice::Gen::TypeScriptVisitor::visitModuleStart(const ModulePtr& p)
{
@@ -2578,11 +2582,13 @@ Slice::Gen::TypeScriptVisitor::visitModuleStart(const ModulePtr& p)
_out << sp;
if(module.empty())
{
+ writeImports();
_out << nl << "export namespace " << fixId(p->name()) << sb;
}
else
{
_out << nl << "declare module \"" << fixId(module) << "\"" << sb;
+ writeImports();
_out << nl << "namespace " << fixId(p->name()) << sb;
}
}
diff --git a/cpp/src/slice2js/Gen.h b/cpp/src/slice2js/Gen.h
index db18bb4fe85..bc6a4d132c7 100644
--- a/cpp/src/slice2js/Gen.h
+++ b/cpp/src/slice2js/Gen.h
@@ -159,8 +159,6 @@ private:
virtual void visitSequence(const SequencePtr&);
virtual void visitDictionary(const DictionaryPtr&);
- void writeRequires(const UnitPtr&);
-
private:
void addImport(const TypePtr&, const ContainedPtr&);
@@ -212,6 +210,11 @@ private:
virtual void visitDictionary(const DictionaryPtr&);
virtual void visitEnum(const EnumPtr&);
virtual void visitConst(const ConstPtr&);
+
+ private:
+
+ void writeImports();
+ bool _wroteImports;
};
};