summaryrefslogtreecommitdiff
path: root/cpp/src/slice2java/GenCompat.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'cpp/src/slice2java/GenCompat.cpp')
-rw-r--r--cpp/src/slice2java/GenCompat.cpp31
1 files changed, 26 insertions, 5 deletions
diff --git a/cpp/src/slice2java/GenCompat.cpp b/cpp/src/slice2java/GenCompat.cpp
index a6c8c7d1b4d..02a3256c840 100644
--- a/cpp/src/slice2java/GenCompat.cpp
+++ b/cpp/src/slice2java/GenCompat.cpp
@@ -2840,7 +2840,8 @@ Slice::GenCompat::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
if(!(*d)->optional())
{
string memberName = fixKwd((*d)->name());
- string memberType = typeToString((*d)->type(), TypeModeMember, package, (*d)->getMetaData());
+ string memberType = typeToString((*d)->type(), TypeModeMember, package, (*d)->getMetaData(),
+ true, false, p->isLocal());
paramDecl.push_back(memberType + " " + memberName);
}
}
@@ -2892,7 +2893,8 @@ Slice::GenCompat::TypesVisitor::visitClassDefStart(const ClassDefPtr& p)
for(DataMemberList::const_iterator d = allDataMembers.begin(); d != allDataMembers.end(); ++d)
{
string memberName = fixKwd((*d)->name());
- string memberType = typeToString((*d)->type(), TypeModeMember, package, (*d)->getMetaData());
+ string memberType = typeToString((*d)->type(), TypeModeMember, package, (*d)->getMetaData(), true,
+ false, p->isLocal());
paramDecl.push_back(memberType + " " + memberName);
}
out << paramDecl << epar;
@@ -3789,11 +3791,30 @@ void
Slice::GenCompat::TypesVisitor::visitDataMember(const DataMemberPtr& p)
{
string name = fixKwd(p->name());
- ContainerPtr container = p->container();
- ContainedPtr contained = ContainedPtr::dynamicCast(container);
+ const ContainerPtr container = p->container();
+ const ClassDefPtr cls = ClassDefPtr::dynamicCast(container);
+ const StructPtr st = StructPtr::dynamicCast(container);
+ const ExceptionPtr ex = ExceptionPtr::dynamicCast(container);
+ const ContainedPtr contained = ContainedPtr::dynamicCast(container);
StringList metaData = p->getMetaData();
TypePtr type = p->type();
- string s = typeToString(type, TypeModeMember, getPackage(contained), metaData);
+
+ bool local;
+ if(cls)
+ {
+ local = cls->isLocal();
+ }
+ else if(st)
+ {
+ local = st->isLocal();
+ }
+ else
+ {
+ assert(ex);
+ local = ex->isLocal();
+ }
+
+ string s = typeToString(type, TypeModeMember, getPackage(contained), metaData, true, false, local);
Output& out = output();
const bool optional = p->optional();
const bool getSet = p->hasMetaData(_getSetMetaData) || contained->hasMetaData(_getSetMetaData);