summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js/Gen.cpp
diff options
context:
space:
mode:
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);
}
}