summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js/Gen.cpp
diff options
context:
space:
mode:
authorJose <pepone@users.noreply.github.com>2019-11-14 21:35:00 +0100
committerGitHub <noreply@github.com>2019-11-14 21:35:00 +0100
commit45491f0f2b0deaa956f1bbd0d6d433e884e287f1 (patch)
treefc6adfeed2babc6481352e6c2c78aeb86b1a3f23 /cpp/src/slice2js/Gen.cpp
parentMake build system fixes (diff)
downloadice-45491f0f2b0deaa956f1bbd0d6d433e884e287f1.tar.bz2
ice-45491f0f2b0deaa956f1bbd0d6d433e884e287f1.tar.xz
ice-45491f0f2b0deaa956f1bbd0d6d433e884e287f1.zip
Forward defined types not properly defined in TypeScript - Close 633 (#634)
* Forward defined types not properly defined in TypeScript - Close 633 * Add assert for constructing the definedIn path
Diffstat (limited to 'cpp/src/slice2js/Gen.cpp')
-rw-r--r--cpp/src/slice2js/Gen.cpp23
1 files changed, 21 insertions, 2 deletions
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index f59050a784e..fa878d44a62 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -2293,12 +2293,31 @@ Slice::Gen::TypeScriptRequireVisitor::addImport(const TypePtr& definition, const
{
if(!BuiltinPtr::dynamicCast(definition))
{
- const string m1 = getModuleMetadata(definition);
+ string m1 = getModuleMetadata(definition);
const string m2 = getModuleMetadata(toplevel);
- const string p1 = definition->definitionContext()->filename();
+ string p1 = definition->definitionContext()->filename();
const string p2 = toplevel->definitionContext()->filename();
+ ProxyPtr p = ProxyPtr::dynamicCast(definition);
+ ClassDeclPtr c = p ? p->_class() : ClassDeclPtr::dynamicCast(definition);
+
+ if(c)
+ {
+ if(c->definition() == 0)
+ {
+ string definedIn = getDefinedIn(c);
+ if(!definedIn.empty())
+ {
+ p1 = definedIn;
+ }
+ }
+ else
+ {
+ m1 = getModuleMetadata(ContainedPtr::dynamicCast(c->definition()));
+ p1 = c->definition()->definitionContext()->filename();
+ }
+ }
addImport(m1, m2, p1, p2);
}
}