summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js/JsUtil.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2js/JsUtil.cpp')
-rw-r--r--cpp/src/slice2js/JsUtil.cpp34
1 files changed, 24 insertions, 10 deletions
diff --git a/cpp/src/slice2js/JsUtil.cpp b/cpp/src/slice2js/JsUtil.cpp
index c1f6e6912fe..002919087f0 100644
--- a/cpp/src/slice2js/JsUtil.cpp
+++ b/cpp/src/slice2js/JsUtil.cpp
@@ -520,20 +520,34 @@ Slice::JsGenerator::typeToString(const TypePtr& type,
if(proxy)
{
ostringstream os;
- string prefix;
- if(typescript)
+ ClassDefPtr def = proxy->_class()->definition();
+ if(!def->isInterface() && def->allOperations().empty())
{
- prefix = importPrefix(ContainedPtr::dynamicCast(proxy->_class()->definition()), toplevel, imports);
- os << prefix;
- }
-
- if(prefix.empty() && typescript)
- {
- os << getUnqualified(fixId(proxy->_class()->scoped() + "Prx"), toplevel->scope(), prefix);
+ if(getModuleMetadata(toplevel) != "ice")
+ {
+ os << "iceNS0.";
+ }
+ os << getUnqualified(typeScriptBuiltinTable[Builtin::KindObjectProxy],
+ toplevel->scope(),
+ getModuleMetadata(toplevel));
}
else
{
- os << fixId(proxy->_class()->scoped() + "Prx");
+ string prefix;
+ if(typescript)
+ {
+ prefix = importPrefix(ContainedPtr::dynamicCast(def), toplevel, imports);
+ os << prefix;
+ }
+
+ if(prefix.empty() && typescript)
+ {
+ os << getUnqualified(fixId(proxy->_class()->scoped() + "Prx"), toplevel->scope(), prefix);
+ }
+ else
+ {
+ os << fixId(proxy->_class()->scoped() + "Prx");
+ }
}
return os.str();
}