summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js/Main.cpp
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2018-12-05 23:32:56 +0100
committerJose <jose@zeroc.com>2018-12-05 23:32:56 +0100
commita232d2b1998c717e086b334d94ab70cae0023d5a (patch)
tree6cd249878529c523fa5cffa57b5dd82d7b837f9d /cpp/src/slice2js/Main.cpp
parentAlways enable error checks for mutexes (#305) (diff)
downloadice-a232d2b1998c717e086b334d94ab70cae0023d5a.tar.bz2
ice-a232d2b1998c717e086b334d94ab70cae0023d5a.tar.xz
ice-a232d2b1998c717e086b334d94ab70cae0023d5a.zip
TypeScript improvements
Diffstat (limited to 'cpp/src/slice2js/Main.cpp')
-rw-r--r--cpp/src/slice2js/Main.cpp27
1 files changed, 25 insertions, 2 deletions
diff --git a/cpp/src/slice2js/Main.cpp b/cpp/src/slice2js/Main.cpp
index 062abe2083f..d7cd236135f 100644
--- a/cpp/src/slice2js/Main.cpp
+++ b/cpp/src/slice2js/Main.cpp
@@ -75,7 +75,7 @@ usage(const string& n)
"--depend-file FILE Write dependencies to FILE instead of standard output.\n"
"--validate Validate command line options.\n"
"--stdout Print generated code to stdout.\n"
- "--typescript Generate TypeScript declaration file\n"
+ "--typescript Generate TypeScript declarations.\n"
"--depend-json Generate dependency information in JSON format.\n"
"--ice Allow reserved Ice prefix in Slice identifiers\n"
" deprecated: use instead [[\"ice-prefix\"]] metadata.\n"
@@ -249,6 +249,8 @@ compile(const vector<string>& argv)
}
}
+ map<string, vector<string> > moduleInfo;
+
for(vector<string>::const_iterator i = sources.begin(); i != sources.end();)
{
PreprocessorPtr icecpp = Preprocessor::create(argv[0], *i, cppArgs);
@@ -273,7 +275,8 @@ compile(const vector<string>& argv)
bool last = (++i == sources.end());
if(!icecpp->printMakefileDependencies(os,
- depend ? Preprocessor::JavaScript : (dependJSON ? Preprocessor::JavaScriptJSON : Preprocessor::SliceXML),
+ depend ? Preprocessor::JavaScript : (dependJSON ? Preprocessor::JavaScriptJSON :
+ Preprocessor::SliceXML),
includePaths,
"-D__SLICE2JS__"))
{
@@ -328,6 +331,26 @@ compile(const vector<string>& argv)
}
else
{
+ DefinitionContextPtr dc = p->findDefinitionContext(p->topLevelFile());
+ assert(dc);
+ const string prefix = "js:module:";
+ string m = dc->findMetaData(prefix);
+ if(!m.empty())
+ {
+ m = m.substr(prefix.size());
+ }
+
+ if(moduleInfo.find(m) == moduleInfo.end())
+ {
+ vector<string> files;
+ files.push_back(*i);
+ moduleInfo[m] = files;
+ }
+ else
+ {
+ moduleInfo[m].push_back(*i);
+ }
+
try
{
if(useStdout)