summaryrefslogtreecommitdiff
path: root/cpp/src/slice2js
diff options
context:
space:
mode:
authorJose <jose@zeroc.com>2019-07-09 17:13:39 +0200
committerJose <jose@zeroc.com>2019-07-09 17:13:39 +0200
commitf0352140506800ed3a53a7fa7caca63f251bb1a4 (patch)
tree355dc0f3bb7ea8534e087474a35371140b3d0b18 /cpp/src/slice2js
parentIceSSL fixes for RHEL8 (diff)
downloadice-f0352140506800ed3a53a7fa7caca63f251bb1a4.tar.bz2
ice-f0352140506800ed3a53a7fa7caca63f251bb1a4.tar.xz
ice-f0352140506800ed3a53a7fa7caca63f251bb1a4.zip
Remove forward declarations limitation - Close #97
Diffstat (limited to 'cpp/src/slice2js')
-rw-r--r--cpp/src/slice2js/Gen.cpp2
-rw-r--r--cpp/src/slice2js/JsUtil.cpp24
2 files changed, 13 insertions, 13 deletions
diff --git a/cpp/src/slice2js/Gen.cpp b/cpp/src/slice2js/Gen.cpp
index 1a6c60177b1..f59050a784e 100644
--- a/cpp/src/slice2js/Gen.cpp
+++ b/cpp/src/slice2js/Gen.cpp
@@ -2180,7 +2180,7 @@ Slice::Gen::TypesVisitor::encodeTypeForOperation(const TypePtr& type)
if(proxy)
{
ClassDefPtr def = proxy->_class()->definition();
- if(def->isInterface() || def->allOperations().size() > 0)
+ if(!def || def->isAbstract())
{
return "\"" + fixId(proxy->_class()->scoped() + "Prx") + "\"";
}
diff --git a/cpp/src/slice2js/JsUtil.cpp b/cpp/src/slice2js/JsUtil.cpp
index 07c2f9b5325..2229d81f6a9 100644
--- a/cpp/src/slice2js/JsUtil.cpp
+++ b/cpp/src/slice2js/JsUtil.cpp
@@ -500,17 +500,7 @@ Slice::JsGenerator::typeToString(const TypePtr& type,
{
ostringstream os;
ClassDefPtr def = proxy->_class()->definition();
- if(!def->isInterface() && def->allOperations().empty())
- {
- if(getModuleMetadata(toplevel) != "ice")
- {
- os << "iceNS0.";
- }
- os << getUnqualified(typeScriptBuiltinTable[Builtin::KindObjectProxy],
- toplevel->scope(),
- getModuleMetadata(toplevel));
- }
- else
+ if(!def || def->isAbstract())
{
string prefix;
if(typescript)
@@ -528,6 +518,16 @@ Slice::JsGenerator::typeToString(const TypePtr& type,
os << fixId(proxy->_class()->scoped() + "Prx");
}
}
+ else
+ {
+ if(getModuleMetadata(toplevel) != "ice")
+ {
+ os << "iceNS0.";
+ }
+ os << getUnqualified(typeScriptBuiltinTable[Builtin::KindObjectProxy],
+ toplevel->scope(),
+ getModuleMetadata(toplevel));
+ }
return os.str();
}
@@ -983,7 +983,7 @@ Slice::JsGenerator::getHelper(const TypePtr& type)
if(prx)
{
ClassDefPtr def = prx->_class()->definition();
- if(def->isInterface() || def->allOperations().size() > 0)
+ if(!def || def->isAbstract())
{
return typeToString(type);
}