diff options
author | Jose <pepone@users.noreply.github.com> | 2019-11-14 21:35:00 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-11-14 21:35:00 +0100 |
commit | 45491f0f2b0deaa956f1bbd0d6d433e884e287f1 (patch) | |
tree | fc6adfeed2babc6481352e6c2c78aeb86b1a3f23 /cpp/src/slice2js/Gen.cpp | |
parent | Make build system fixes (diff) | |
download | ice-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.cpp | 23 |
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); } } |