summaryrefslogtreecommitdiff
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
parentIceSSL fixes for RHEL8 (diff)
downloadice-f0352140506800ed3a53a7fa7caca63f251bb1a4.tar.bz2
ice-f0352140506800ed3a53a7fa7caca63f251bb1a4.tar.xz
ice-f0352140506800ed3a53a7fa7caca63f251bb1a4.zip
Remove forward declarations limitation - Close #97
-rw-r--r--cpp/src/Slice/CPlusPlusUtil.cpp6
-rw-r--r--cpp/src/Slice/JavaUtil.cpp3
-rw-r--r--cpp/src/Slice/Parser.cpp112
-rw-r--r--cpp/src/Slice/Parser.h1
-rw-r--r--cpp/src/Slice/RubyUtil.cpp2
-rw-r--r--cpp/src/slice2cpp/Gen.cpp20
-rw-r--r--cpp/src/slice2cs/CsUtil.cpp5
-rw-r--r--cpp/src/slice2js/Gen.cpp2
-rw-r--r--cpp/src/slice2js/JsUtil.cpp24
-rw-r--r--cpp/test/Ice/objects/AllTests.cpp25
-rw-r--r--cpp/test/Ice/objects/Derived.ice1
-rw-r--r--cpp/test/Ice/objects/DerivedEx.ice1
-rw-r--r--cpp/test/Ice/objects/Forward.ice20
-rw-r--r--cpp/test/Ice/objects/Makefile.mk6
-rw-r--r--cpp/test/Ice/objects/Test.ice16
-rw-r--r--cpp/test/Ice/objects/TestI.cpp29
-rw-r--r--cpp/test/Ice/objects/TestI.h6
-rw-r--r--cpp/test/Ice/objects/msbuild/client/client.vcxproj161
-rw-r--r--cpp/test/Ice/objects/msbuild/client/client.vcxproj.filters51
-rw-r--r--cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj161
-rw-r--r--cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj.filters51
-rw-r--r--cpp/test/Ice/objects/msbuild/server/server.vcxproj161
-rw-r--r--cpp/test/Ice/objects/msbuild/server/server.vcxproj.filters51
-rw-r--r--csharp/test/Ice/objects/AllTests.cs30
-rw-r--r--csharp/test/Ice/objects/Forward.ice23
-rw-r--r--csharp/test/Ice/objects/InitialI.cs28
-rw-r--r--csharp/test/Ice/objects/Test.ice15
-rw-r--r--csharp/test/Ice/objects/msbuild/client/net45/client.csproj8
-rw-r--r--csharp/test/Ice/objects/msbuild/client/netstandard2.0/client.csproj4
-rw-r--r--csharp/test/Ice/objects/msbuild/collocated/net45/collocated.csproj8
-rw-r--r--csharp/test/Ice/objects/msbuild/collocated/netstandard2.0/collocated.csproj4
-rw-r--r--csharp/test/Ice/objects/msbuild/server/net45/server.csproj8
-rw-r--r--csharp/test/Ice/objects/msbuild/server/netstandard2.0/server.csproj4
-rw-r--r--csharp/test/Ice/objects/msbuild/test/netstandard2.0/test.csproj4
-rw-r--r--java-compat/test/src/main/java/test/Ice/objects/AllTests.java36
-rw-r--r--java-compat/test/src/main/java/test/Ice/objects/Forward.ice22
-rw-r--r--java-compat/test/src/main/java/test/Ice/objects/InitialI.java39
-rw-r--r--java-compat/test/src/main/java/test/Ice/objects/Test.ice17
-rw-r--r--java/test/src/main/java/test/Ice/objects/AllTests.java29
-rw-r--r--java/test/src/main/java/test/Ice/objects/Forward.ice22
-rw-r--r--java/test/src/main/java/test/Ice/objects/InitialI.java34
-rw-r--r--java/test/src/main/java/test/Ice/objects/Test.ice14
-rw-r--r--js/test/Common/TestSuites.json2
-rw-r--r--js/test/Ice/objects/.gitignore1
-rw-r--r--js/test/Ice/objects/Client.js24
-rw-r--r--js/test/Ice/objects/Forward.ice20
-rw-r--r--js/test/Ice/objects/InitialI.js23
-rw-r--r--js/test/Ice/objects/Server.js1
-rw-r--r--js/test/Ice/objects/Test.ice15
-rw-r--r--matlab/test/Ice/objects/AllTests.m21
-rw-r--r--matlab/test/Ice/objects/Forward.ice20
-rw-r--r--matlab/test/Ice/objects/Test.ice15
-rw-r--r--objective-c/test/Ice/objects/AllTests.m16
-rw-r--r--objective-c/test/Ice/objects/Makefile.mk9
-rw-r--r--objective-c/test/Ice/objects/ObjectsForward.ice22
-rw-r--r--objective-c/test/Ice/objects/ObjectsTest.ice9
-rw-r--r--objective-c/test/Ice/objects/TestI.h6
-rw-r--r--objective-c/test/Ice/objects/TestI.m17
-rw-r--r--php/test/Ice/objects/.gitignore1
-rw-r--r--php/test/Ice/objects/Client.php26
-rw-r--r--php/test/Ice/objects/Forward.ice20
-rw-r--r--php/test/Ice/objects/Test.ice15
-rw-r--r--python/test/Ice/objects/AllTests.py20
-rwxr-xr-xpython/test/Ice/objects/Client.py2
-rwxr-xr-xpython/test/Ice/objects/Collocated.py2
-rw-r--r--python/test/Ice/objects/Forward.ice20
-rwxr-xr-xpython/test/Ice/objects/Server.py2
-rw-r--r--python/test/Ice/objects/Test.ice15
-rw-r--r--python/test/Ice/objects/TestI.py13
-rw-r--r--ruby/test/Ice/objects/AllTests.rb19
-rwxr-xr-xruby/test/Ice/objects/Client.rb1
-rw-r--r--ruby/test/Ice/objects/Forward.ice20
-rw-r--r--ruby/test/Ice/objects/Test.ice15
73 files changed, 1530 insertions, 146 deletions
diff --git a/cpp/src/Slice/CPlusPlusUtil.cpp b/cpp/src/Slice/CPlusPlusUtil.cpp
index 8a729092a71..a38c8c4bbf9 100644
--- a/cpp/src/Slice/CPlusPlusUtil.cpp
+++ b/cpp/src/Slice/CPlusPlusUtil.cpp
@@ -752,13 +752,13 @@ Slice::typeToString(const TypePtr& type, const string& scope, const StringList&
// Non local classes without operations map to the base
// proxy class shared_ptr<Ice::ObjectPrx>
//
- if(def && !def->isInterface() && def->allOperations().empty())
+ if(!def || def->isAbstract())
{
- return getUnqualified(cpp11BuiltinTable[Builtin::KindObjectProxy], scope);
+ return "::std::shared_ptr<" + getUnqualified(fixKwd(proxy->_class()->scoped() + "Prx"), scope) + ">";
}
else
{
- return "::std::shared_ptr<" + getUnqualified(fixKwd(proxy->_class()->scoped() + "Prx"), scope) + ">";
+ return getUnqualified(cpp11BuiltinTable[Builtin::KindObjectProxy], scope);
}
}
else
diff --git a/cpp/src/Slice/JavaUtil.cpp b/cpp/src/Slice/JavaUtil.cpp
index 327e4b92a5d..78dd64f2080 100644
--- a/cpp/src/Slice/JavaUtil.cpp
+++ b/cpp/src/Slice/JavaUtil.cpp
@@ -3764,8 +3764,7 @@ Slice::JavaGenerator::typeToString(const TypePtr& type,
if(proxy)
{
ClassDefPtr def = proxy->_class()->definition();
- assert(def);
- if(def->isAbstract())
+ if(!def || def->isAbstract())
{
return getUnqualified(proxy->_class(), package, "", "Prx");
}
diff --git a/cpp/src/Slice/Parser.cpp b/cpp/src/Slice/Parser.cpp
index e49c20f1c50..bd9d210bb47 100644
--- a/cpp/src/Slice/Parser.cpp
+++ b/cpp/src/Slice/Parser.cpp
@@ -6835,11 +6835,6 @@ Slice::Unit::parse(const string& filename, FILE* file, bool debug)
popContainer();
assert(_definitionContextStack.size() == 1);
popDefinitionContext();
-
- if(!checkUndefinedTypes())
- {
- status = EXIT_FAILURE;
- }
}
Slice::unit = 0;
@@ -6938,113 +6933,6 @@ Slice::Unit::eraseWhiteSpace(string& s)
}
}
-bool
-Slice::Unit::checkUndefinedTypes()
-{
- class Visitor : public ParserVisitor
- {
- public:
-
- Visitor(int& errors) :
- _errors(errors),
- _local(false)
- {
- }
-
- virtual bool visitClassDefStart(const ClassDefPtr& p)
- {
- _local = p->isLocal();
- return true;
- }
-
- virtual bool visitExceptionStart(const ExceptionPtr& p)
- {
- _local = p->isLocal();
- return true;
- }
-
- virtual bool visitStructStart(const StructPtr& p)
- {
- _local = p->isLocal();
- return true;
- }
-
- virtual void visitOperation(const OperationPtr& p)
- {
- if(p->returnType())
- {
- checkUndefined(p->returnType(), "return type", p->file(), p->line());
- }
- ParamDeclList params = p->parameters();
- for(ParamDeclList::const_iterator q = params.begin(); q != params.end(); ++q)
- {
- checkUndefined((*q)->type(), "parameter " + (*q)->name(), (*q)->file(), (*q)->line());
- }
- }
-
- virtual void visitParamDecl(const ParamDeclPtr& p)
- {
- checkUndefined(p->type(), "parameter " + p->name(), p->file(), p->line());
- }
-
- virtual void visitDataMember(const DataMemberPtr& p)
- {
- checkUndefined(p->type(), "member " + p->name(), p->file(), p->line());
- }
-
- virtual void visitSequence(const SequencePtr& p)
- {
- _local = p->isLocal();
- checkUndefined(p->type(), "element type", p->file(), p->line());
- }
-
- virtual void visitDictionary(const DictionaryPtr& p)
- {
- _local = p->isLocal();
- checkUndefined(p->keyType(), "key type", p->file(), p->line());
- checkUndefined(p->valueType(), "value type", p->file(), p->line());
- }
-
- private:
-
- void checkUndefined(const TypePtr& type, const string& desc, const string& file, const string& line)
- {
- //
- // See ICE-6867. Any use of a proxy requires the full type definition, as does any
- // use of a class in a non-local context.
- //
- ProxyPtr p = ProxyPtr::dynamicCast(type);
- if(p)
- {
- const ClassDeclPtr cl = p->_class();
- if(!cl->definition())
- {
- ostringstream ostr;
- ostr << desc << " uses a proxy for undefined type `" << cl->scoped() << "'";
- emitError(file, line, ostr.str());
- _errors++;
- }
- }
-
- ClassDeclPtr cl = ClassDeclPtr::dynamicCast(type);
- if(cl && !cl->definition() && !_local)
- {
- ostringstream ostr;
- ostr << desc << " refers to undefined type `" << cl->scoped() << "'";
- emitError(file, line, ostr.str());
- _errors++;
- }
- }
-
- int& _errors;
- bool _local;
- };
-
- Visitor v(_errors);
- visit(&v, true);
- return _errors == 0;
-}
-
// ----------------------------------------------------------------------
// CICompare
// ----------------------------------------------------------------------
diff --git a/cpp/src/Slice/Parser.h b/cpp/src/Slice/Parser.h
index 77bbce0c6e1..793416cb44c 100644
--- a/cpp/src/Slice/Parser.h
+++ b/cpp/src/Slice/Parser.h
@@ -1118,7 +1118,6 @@ private:
Unit(bool, bool, bool, bool, const StringList&);
static void eraseWhiteSpace(::std::string&);
- bool checkUndefinedTypes();
bool _ignRedefs;
bool _all;
diff --git a/cpp/src/Slice/RubyUtil.cpp b/cpp/src/Slice/RubyUtil.cpp
index eea8791ec4c..af1f273ac6d 100644
--- a/cpp/src/Slice/RubyUtil.cpp
+++ b/cpp/src/Slice/RubyUtil.cpp
@@ -1224,7 +1224,7 @@ Slice::Ruby::CodeVisitor::writeType(const TypePtr& p)
if(prx)
{
ClassDefPtr def = prx->_class()->definition();
- if(def->isInterface() || def->allOperations().size() > 0)
+ if(!def || def->isAbstract())
{
_out << getAbsolute(prx->_class(), IdentToUpper, "T_") << "Prx";
}
diff --git a/cpp/src/slice2cpp/Gen.cpp b/cpp/src/slice2cpp/Gen.cpp
index 50459105167..2f0d27832eb 100644
--- a/cpp/src/slice2cpp/Gen.cpp
+++ b/cpp/src/slice2cpp/Gen.cpp
@@ -978,6 +978,7 @@ Slice::Gen::generate(const UnitPtr& p)
{
string md = *q++;
static const string includePrefix = "cpp:include:";
+ static const string sourceIncludePrefix = "cpp:source-include:";
if(md.find(includePrefix) == 0)
{
if(md.size() > includePrefix.size())
@@ -992,6 +993,20 @@ Slice::Gen::generate(const UnitPtr& p)
globalMetaData.remove(md);
}
}
+ else if(md.find(sourceIncludePrefix) == 0)
+ {
+ if(md.size() > sourceIncludePrefix.size())
+ {
+ C << nl << "#include <" << md.substr(sourceIncludePrefix.size()) << ">";
+ }
+ else
+ {
+ ostringstream ostr;
+ ostr << "ignoring invalid global metadata `" << md << "'";
+ dc->warning(InvalidMetaData, file, -1, ostr.str());
+ globalMetaData.remove(md);
+ }
+ }
}
dc->setMetaData(globalMetaData);
}
@@ -5371,6 +5386,7 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
if(s.find(prefix) == 0)
{
static const string cppIncludePrefix = "cpp:include:";
+ static const string cppSourceIncludePrefix = "cpp:source-include";
static const string cppHeaderExtPrefix = "cpp:header-ext:";
static const string cppSourceExtPrefix = "cpp:source-ext:";
static const string cppDllExportPrefix = "cpp:dll-export:";
@@ -5380,6 +5396,10 @@ Slice::Gen::MetaDataVisitor::visitUnitStart(const UnitPtr& p)
{
continue;
}
+ else if(s.find(cppSourceIncludePrefix) == 0 && s.size() > cppSourceIncludePrefix.size())
+ {
+ continue;
+ }
else if(s.find(cppHeaderExtPrefix) == 0 && s.size() > cppHeaderExtPrefix.size())
{
headerExtension++;
diff --git a/cpp/src/slice2cs/CsUtil.cpp b/cpp/src/slice2cs/CsUtil.cpp
index de027895412..36db22c4350 100644
--- a/cpp/src/slice2cs/CsUtil.cpp
+++ b/cpp/src/slice2cs/CsUtil.cpp
@@ -1,4 +1,3 @@
-
//
// Copyright (c) ZeroC, Inc. All rights reserved.
//
@@ -458,7 +457,7 @@ Slice::CsGenerator::typeToString(const TypePtr& type, const string& package, boo
if(proxy)
{
ClassDefPtr def = proxy->_class()->definition();
- if(def->isInterface() || def->allOperations().size() > 0)
+ if(!def || def->isAbstract())
{
return getUnqualified(proxy->_class(), package, "", "Prx");
}
@@ -794,7 +793,7 @@ Slice::CsGenerator::writeMarshalUnmarshalCode(Output &out,
if(prx)
{
ClassDefPtr def = prx->_class()->definition();
- if(def->isInterface() || def->allOperations().size() > 0)
+ if(!def || def->isAbstract())
{
string typeS = typeToString(type, package);
if(marshal)
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);
}
diff --git a/cpp/test/Ice/objects/AllTests.cpp b/cpp/test/Ice/objects/AllTests.cpp
index b47403572e3..5aa150b7a22 100644
--- a/cpp/test/Ice/objects/AllTests.cpp
+++ b/cpp/test/Ice/objects/AllTests.cpp
@@ -577,5 +577,30 @@ allTests(Test::TestHelper* helper)
}
cout << "ok" << endl;
+ cout << "testing forward declarations... " << flush;
+ {
+ F1Ptr f12;
+ F1Ptr f11 = initial->opF1(ICE_MAKE_SHARED(F1, "F11"), f12);
+ test(f11->name == "F11");
+ test(f12->name == "F12");
+
+ F2PrxPtr f22;
+ F2PrxPtr f21 = initial->opF2(ICE_UNCHECKED_CAST(F2Prx, communicator->stringToProxy("F21")), f22);
+ test(f21->ice_getIdentity().name == "F21");
+ test(f22->ice_getIdentity().name == "F22");
+
+ if(initial->hasF3())
+ {
+ F3Ptr f32;
+ F3Ptr f31 = initial->opF3(ICE_MAKE_SHARED(F3, f11, f21), f32);
+ test(f31->f1->name == "F11");
+ test(f31->f2->ice_getIdentity().name == "F21");
+
+ test(f32->f1->name == "F12");
+ test(f32->f2->ice_getIdentity().name == "F22");
+ }
+ }
+ cout << "ok" << endl;
+
return initial;
}
diff --git a/cpp/test/Ice/objects/Derived.ice b/cpp/test/Ice/objects/Derived.ice
index 57c75cb5906..ff0a06a80aa 100644
--- a/cpp/test/Ice/objects/Derived.ice
+++ b/cpp/test/Ice/objects/Derived.ice
@@ -5,6 +5,7 @@
#pragma once
#include <Test.ice>
+#include <Forward.ice>
module Test
{
diff --git a/cpp/test/Ice/objects/DerivedEx.ice b/cpp/test/Ice/objects/DerivedEx.ice
index 49a06129a65..a265fde6b96 100644
--- a/cpp/test/Ice/objects/DerivedEx.ice
+++ b/cpp/test/Ice/objects/DerivedEx.ice
@@ -5,6 +5,7 @@
#pragma once
#include <Test.ice>
+#include <Forward.ice>
module Test
{
diff --git a/cpp/test/Ice/objects/Forward.ice b/cpp/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/cpp/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/cpp/test/Ice/objects/Makefile.mk b/cpp/test/Ice/objects/Makefile.mk
index 2a5886d03dd..60c831d4c2f 100644
--- a/cpp/test/Ice/objects/Makefile.mk
+++ b/cpp/test/Ice/objects/Makefile.mk
@@ -3,8 +3,8 @@
#
$(test)_sliceflags := -I$(test)
-$(test)_client_sources = Client.cpp Test.ice Derived.ice DerivedEx.ice TestI.cpp AllTests.cpp
-$(test)_server_sources = Server.cpp Test.ice Derived.ice DerivedEx.ice TestI.cpp TestIntfI.cpp
-$(test)_collocated_sources = Collocated.cpp Test.ice Derived.ice DerivedEx.ice TestI.cpp TestIntfI.cpp AllTests.cpp
+$(test)_client_sources = Client.cpp Forward.ice Test.ice Derived.ice DerivedEx.ice TestI.cpp AllTests.cpp
+$(test)_server_sources = Server.cpp Forward.ice Test.ice Derived.ice DerivedEx.ice TestI.cpp TestIntfI.cpp
+$(test)_collocated_sources = Collocated.cpp Forward.ice Test.ice Derived.ice DerivedEx.ice TestI.cpp TestIntfI.cpp AllTests.cpp
tests += $(test)
diff --git a/cpp/test/Ice/objects/Test.ice b/cpp/test/Ice/objects/Test.ice
index f019333c638..38214e39951 100644
--- a/cpp/test/Ice/objects/Test.ice
+++ b/cpp/test/Ice/objects/Test.ice
@@ -6,6 +6,8 @@
[["suppress-warning:deprecated"]] // For classes with operations
+[["cpp:source-include:Forward.h"]]
+
module Test
{
@@ -198,6 +200,15 @@ class M
LMap v;
}
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -242,6 +253,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ bool hasF3();
+ F3 opF3(F3 f31, out F3 f32);
}
interface TestIntf
diff --git a/cpp/test/Ice/objects/TestI.cpp b/cpp/test/Ice/objects/TestI.cpp
index df86685aa88..9cfd4c395eb 100644
--- a/cpp/test/Ice/objects/TestI.cpp
+++ b/cpp/test/Ice/objects/TestI.cpp
@@ -388,3 +388,32 @@ UnexpectedObjectExceptionTestI::ice_invoke(ICE_IN(std::vector<Ice::Byte>),
out.finished(outParams);
return true;
}
+
+Test::F1Ptr
+InitialI::opF1(ICE_IN(Test::F1Ptr) f11, Test::F1Ptr& f12, const Ice::Current&)
+{
+ f12 = ICE_MAKE_SHARED(F1, "F12");
+ return f11;
+}
+
+Test::F2PrxPtr
+InitialI::opF2(ICE_IN(Test::F2PrxPtr) f21, Test::F2PrxPtr& f22, const Ice::Current& current)
+{
+ f22 = ICE_UNCHECKED_CAST(F2Prx, current.adapter->getCommunicator()->stringToProxy("F22"));
+ return f21;
+}
+
+Test::F3Ptr
+InitialI::opF3(ICE_IN(Test::F3Ptr) f31, Test::F3Ptr& f32, const Ice::Current& current)
+{
+ f32 = ICE_MAKE_SHARED(F3);
+ f32->f1 = ICE_MAKE_SHARED(F1, "F12");
+ f32->f2 = ICE_UNCHECKED_CAST(F2Prx, current.adapter->getCommunicator()->stringToProxy("F22"));
+ return f31;
+}
+
+bool
+InitialI::hasF3(const Ice::Current&)
+{
+ return true;
+}
diff --git a/cpp/test/Ice/objects/TestI.h b/cpp/test/Ice/objects/TestI.h
index 4a55bb337f6..ee6ef9e19fd 100644
--- a/cpp/test/Ice/objects/TestI.h
+++ b/cpp/test/Ice/objects/TestI.h
@@ -6,6 +6,7 @@
#define TEST_I_H
#include <Test.h>
+#include <Forward.h>
class BI : public Test::B
{
@@ -142,6 +143,11 @@ public:
virtual Test::MPtr opM(ICE_IN(Test::MPtr), Test::MPtr&, const Ice::Current&);
+ virtual Test::F1Ptr opF1(ICE_IN(Test::F1Ptr), Test::F1Ptr&, const Ice::Current&);
+ virtual Test::F2PrxPtr opF2(ICE_IN(Test::F2PrxPtr), Test::F2PrxPtr&, const Ice::Current&);
+ virtual Test::F3Ptr opF3(ICE_IN(Test::F3Ptr), Test::F3Ptr&, const Ice::Current&);
+ virtual bool hasF3(const Ice::Current&);
+
private:
Ice::ObjectAdapterPtr _adapter;
diff --git a/cpp/test/Ice/objects/msbuild/client/client.vcxproj b/cpp/test/Ice/objects/msbuild/client/client.vcxproj
index 95264e5873d..f400cb04677 100644
--- a/cpp/test/Ice/objects/msbuild/client/client.vcxproj
+++ b/cpp/test/Ice/objects/msbuild/client/client.vcxproj
@@ -231,6 +231,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -261,6 +271,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -291,6 +311,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -321,6 +351,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -351,6 +391,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -381,6 +431,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -411,6 +471,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -441,6 +511,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -474,6 +554,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -504,6 +594,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -534,6 +634,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -564,6 +674,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -594,6 +714,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -624,6 +754,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -654,6 +794,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -684,6 +834,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -698,6 +858,7 @@
<ItemGroup>
<SliceCompile Include="..\..\Derived.ice" />
<SliceCompile Include="..\..\DerivedEx.ice" />
+ <SliceCompile Include="..\..\Forward.ice" />
<SliceCompile Include="..\..\Test.ice" />
</ItemGroup>
<ItemGroup>
diff --git a/cpp/test/Ice/objects/msbuild/client/client.vcxproj.filters b/cpp/test/Ice/objects/msbuild/client/client.vcxproj.filters
index 6fe8c625fe2..6324d2645df 100644
--- a/cpp/test/Ice/objects/msbuild/client/client.vcxproj.filters
+++ b/cpp/test/Ice/objects/msbuild/client/client.vcxproj.filters
@@ -82,6 +82,30 @@
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<Filter>Source Files\Win32\Cpp11-Release</Filter>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <Filter>Source Files\x64\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <Filter>Source Files\Win32\Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <Filter>Source Files\x64\Release</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="Header Files">
@@ -231,6 +255,30 @@
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<Filter>Header Files\Win32\Cpp11-Release</Filter>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <Filter>Header Files\Win32\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <Filter>Header Files\x64\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <Filter>Header Files\Win32\Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <Filter>Header Files\x64\Release</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
@@ -245,5 +293,8 @@
<SliceCompile Include="..\..\Test.ice">
<Filter>Slice Files</Filter>
</SliceCompile>
+ <SliceCompile Include="..\..\Forward.ice">
+ <Filter>Slice Files</Filter>
+ </SliceCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj b/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj
index 88477469624..9aa2d6c5d9f 100644
--- a/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj
+++ b/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj
@@ -224,6 +224,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -254,6 +264,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -284,6 +304,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -314,6 +344,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -344,6 +384,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -374,6 +424,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -404,6 +464,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -434,6 +504,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -467,6 +547,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -497,6 +587,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -527,6 +627,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -557,6 +667,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -587,6 +707,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -617,6 +747,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -647,6 +787,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -677,6 +827,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -691,6 +851,7 @@
<ItemGroup>
<SliceCompile Include="..\..\Derived.ice" />
<SliceCompile Include="..\..\DerivedEx.ice" />
+ <SliceCompile Include="..\..\Forward.ice" />
<SliceCompile Include="..\..\Test.ice" />
</ItemGroup>
<ItemGroup>
diff --git a/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj.filters b/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj.filters
index 9600a8c0904..07aaa1171a2 100644
--- a/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj.filters
+++ b/cpp/test/Ice/objects/msbuild/collocated/collocated.vcxproj.filters
@@ -85,6 +85,30 @@
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<Filter>Source Files\Win32\Cpp11-Release</Filter>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <Filter>Source Files\x64\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <Filter>Source Files\Win32\Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <Filter>Source Files\x64\Release</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<Filter Include="Slice Files">
@@ -234,6 +258,30 @@
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<Filter>Header Files\Win32\Cpp11-Release</Filter>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <Filter>Header Files\Win32\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <Filter>Header Files\x64\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <Filter>Header Files\Win32\Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <Filter>Header Files\x64\Release</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
@@ -248,5 +296,8 @@
<SliceCompile Include="..\..\Test.ice">
<Filter>Slice Files</Filter>
</SliceCompile>
+ <SliceCompile Include="..\..\Forward.ice">
+ <Filter>Slice Files</Filter>
+ </SliceCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/cpp/test/Ice/objects/msbuild/server/server.vcxproj b/cpp/test/Ice/objects/msbuild/server/server.vcxproj
index 5cec2e9f9da..7ef708b0141 100644
--- a/cpp/test/Ice/objects/msbuild/server/server.vcxproj
+++ b/cpp/test/Ice/objects/msbuild/server/server.vcxproj
@@ -223,6 +223,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -253,6 +263,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -283,6 +303,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -313,6 +343,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="Win32\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -343,6 +383,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -373,6 +423,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Cpp11-Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -403,6 +463,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Debug\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -433,6 +503,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClCompile>
<ClCompile Include="x64\Release\Test.cpp">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -466,6 +546,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -496,6 +586,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -526,6 +626,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -556,6 +666,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="Win32\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -586,6 +706,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
@@ -616,6 +746,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Cpp11-Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -646,6 +786,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Debug\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -676,6 +826,16 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
<SliceCompileSource>..\..\DerivedEx.ice</SliceCompileSource>
</ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Release|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</ExcludedFromBuild>
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>
+ <SliceCompileSource>..\..\Forward.ice</SliceCompileSource>
+ </ClInclude>
<ClInclude Include="x64\Release\Test.h">
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|x64'">true</ExcludedFromBuild>
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Cpp11-Debug|Win32'">true</ExcludedFromBuild>
@@ -690,6 +850,7 @@
<ItemGroup>
<SliceCompile Include="..\..\Derived.ice" />
<SliceCompile Include="..\..\DerivedEx.ice" />
+ <SliceCompile Include="..\..\Forward.ice" />
<SliceCompile Include="..\..\Test.ice" />
</ItemGroup>
<ItemGroup>
diff --git a/cpp/test/Ice/objects/msbuild/server/server.vcxproj.filters b/cpp/test/Ice/objects/msbuild/server/server.vcxproj.filters
index 1544fcecac1..58603f07cde 100644
--- a/cpp/test/Ice/objects/msbuild/server/server.vcxproj.filters
+++ b/cpp/test/Ice/objects/msbuild/server/server.vcxproj.filters
@@ -154,6 +154,30 @@
<ClCompile Include="Win32\Cpp11-Release\Test.cpp">
<Filter>Source Files\Win32\Cpp11-Release</Filter>
</ClCompile>
+ <ClCompile Include="Win32\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Debug\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\Win32\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Cpp11-Release\Forward.cpp">
+ <Filter>Source Files\x64\Cpp11-Release</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Debug\Forward.cpp">
+ <Filter>Source Files\Win32\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Debug\Forward.cpp">
+ <Filter>Source Files\x64\Debug</Filter>
+ </ClCompile>
+ <ClCompile Include="Win32\Release\Forward.cpp">
+ <Filter>Source Files\Win32\Release</Filter>
+ </ClCompile>
+ <ClCompile Include="x64\Release\Forward.cpp">
+ <Filter>Source Files\x64\Release</Filter>
+ </ClCompile>
</ItemGroup>
<ItemGroup>
<ClInclude Include="..\..\TestI.h">
@@ -231,6 +255,30 @@
<ClInclude Include="Win32\Cpp11-Release\Test.h">
<Filter>Header Files\Win32\Cpp11-Release</Filter>
</ClInclude>
+ <ClInclude Include="Win32\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Debug\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Cpp11-Release\Forward.h">
+ <Filter>Header Files\Win32\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Cpp11-Release\Forward.h">
+ <Filter>Header Files\x64\Cpp11-Release</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Debug\Forward.h">
+ <Filter>Header Files\Win32\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Debug\Forward.h">
+ <Filter>Header Files\x64\Debug</Filter>
+ </ClInclude>
+ <ClInclude Include="Win32\Release\Forward.h">
+ <Filter>Header Files\Win32\Release</Filter>
+ </ClInclude>
+ <ClInclude Include="x64\Release\Forward.h">
+ <Filter>Header Files\x64\Release</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="packages.config" />
@@ -245,5 +293,8 @@
<SliceCompile Include="..\..\Test.ice">
<Filter>Slice Files</Filter>
</SliceCompile>
+ <SliceCompile Include="..\..\Forward.ice">
+ <Filter>Slice Files</Filter>
+ </SliceCompile>
</ItemGroup>
</Project> \ No newline at end of file
diff --git a/csharp/test/Ice/objects/AllTests.cs b/csharp/test/Ice/objects/AllTests.cs
index 150fb10fa64..9fc1caaa27e 100644
--- a/csharp/test/Ice/objects/AllTests.cs
+++ b/csharp/test/Ice/objects/AllTests.cs
@@ -505,6 +505,36 @@ namespace Ice
}
output.WriteLine("ok");
+
+ output.Write("testing forward declared types... ");
+ output.Flush();
+ {
+ F1 f12;
+ F1 f11 = initial.opF1(new F1("F11"), out f12);
+ test(f11.name.Equals("F11"));
+ test(f12.name.Equals("F12"));
+
+ F2Prx f22;
+ F2Prx f21 = initial.opF2(F2PrxHelper.uncheckedCast(communicator.stringToProxy("F21")), out f22);
+ test(f21.ice_getIdentity().name.Equals("F21"));
+ test(f22.ice_getIdentity().name.Equals("F22"));
+
+ if(initial.hasF3())
+ {
+ F3 f32;
+ F3 f31 = initial.opF3(new F3(new F1("F11"),
+ F2PrxHelper.uncheckedCast(communicator.stringToProxy("F21"))),
+ out f32);
+
+ test(f31.f1.name.Equals("F11"));
+ test(f31.f2.ice_getIdentity().name.Equals("F21"));
+
+ test(f32.f1.name.Equals("F12"));
+ test(f32.f2.ice_getIdentity().name.Equals("F22"));
+ }
+ }
+ output.WriteLine("ok");
+
return initial;
}
}
diff --git a/csharp/test/Ice/objects/Forward.ice b/csharp/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..423bc710140
--- /dev/null
+++ b/csharp/test/Ice/objects/Forward.ice
@@ -0,0 +1,23 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+[["cs:typeid-namespace:Ice.objects.TypeId"]]
+["cs:namespace:Ice.objects"]
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/csharp/test/Ice/objects/InitialI.cs b/csharp/test/Ice/objects/InitialI.cs
index 0967479718b..19e34a228d8 100644
--- a/csharp/test/Ice/objects/InitialI.cs
+++ b/csharp/test/Ice/objects/InitialI.cs
@@ -196,6 +196,34 @@ namespace Ice
return v1;
}
+ public override Test.F1
+ opF1(Test.F1 f11, out Test.F1 f12, Ice.Current current)
+ {
+ f12 = new Test.F1("F12");
+ return f11;
+ }
+
+ public override Test.F2Prx
+ opF2(Test.F2Prx f21, out Test.F2Prx f22, Ice.Current current)
+ {
+ f22 = Test.F2PrxHelper.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22"));
+ return f21;
+ }
+
+ public override Test.F3
+ opF3(Test.F3 f31, out Test.F3 f32, Ice.Current current)
+ {
+ f32 = new Test.F3(new Test.F1("F12"),
+ Test.F2PrxHelper.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22")));
+ return f31;
+ }
+
+ public override bool
+ hasF3(Ice.Current current)
+ {
+ return true;
+ }
+
private Ice.ObjectAdapter _adapter;
private Test.B _b1;
private Test.B _b2;
diff --git a/csharp/test/Ice/objects/Test.ice b/csharp/test/Ice/objects/Test.ice
index 306d559f404..9fda575741c 100644
--- a/csharp/test/Ice/objects/Test.ice
+++ b/csharp/test/Ice/objects/Test.ice
@@ -193,6 +193,16 @@ class M
LMap v;
}
+// Forward declarations
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -238,6 +248,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/csharp/test/Ice/objects/msbuild/client/net45/client.csproj b/csharp/test/Ice/objects/msbuild/client/net45/client.csproj
index 12b770689e1..495abce3637 100644
--- a/csharp/test/Ice/objects/msbuild/client/net45/client.csproj
+++ b/csharp/test/Ice/objects/msbuild/client/net45/client.csproj
@@ -67,6 +67,9 @@
<Compile Include="..\..\..\JI.cs">
<Link>JI.cs</Link>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>..\..\..\Forward.ice</SliceCompileSource>
+ </Compile>
<Compile Include="generated\Test.cs" />
</ItemGroup>
<ItemGroup>
@@ -76,6 +79,11 @@
</SliceCompile>
<None Include="packages.config" />
</ItemGroup>
+ <ItemGroup>
+ <SliceCompile Include="..\..\..\Forward.ice">
+ <Link>Forward.ice</Link>
+ </SliceCompile>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildThisFileDirectory)\..\..\..\..\..\..\msbuild\ice.test.props" />
<Target BeforeTargets="PrepareForBuild" Name="EnsureNuGetPackageBuildImports">
diff --git a/csharp/test/Ice/objects/msbuild/client/netstandard2.0/client.csproj b/csharp/test/Ice/objects/msbuild/client/netstandard2.0/client.csproj
index ebec7737dc3..408a9b5fc07 100644
--- a/csharp/test/Ice/objects/msbuild/client/netstandard2.0/client.csproj
+++ b/csharp/test/Ice/objects/msbuild/client/netstandard2.0/client.csproj
@@ -24,8 +24,12 @@
<Compile Include="generated\Test.cs">
<SliceCompileSource>../../../Test.ice</SliceCompileSource>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>../../../Forward.ice</SliceCompileSource>
+ </Compile>
<PackageReference Include="zeroc.icebuilder.msbuild" Version="5.0.4" />
<SliceCompile Include="../../../Test.ice" />
+ <SliceCompile Include="../../../Forward.ice" />
</ItemGroup>
<Choose>
<When Condition="'$(ICE_BIN_DIST)' == 'all'">
diff --git a/csharp/test/Ice/objects/msbuild/collocated/net45/collocated.csproj b/csharp/test/Ice/objects/msbuild/collocated/net45/collocated.csproj
index dbfe3eaff80..c1ab8738a7f 100644
--- a/csharp/test/Ice/objects/msbuild/collocated/net45/collocated.csproj
+++ b/csharp/test/Ice/objects/msbuild/collocated/net45/collocated.csproj
@@ -73,6 +73,9 @@
<Compile Include="..\..\..\UnexpectedObjectExceptionTestI.cs">
<Link>UnexpectedObjectExceptionTestI.cs</Link>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>..\..\..\Forward.ice</SliceCompileSource>
+ </Compile>
<Compile Include="generated\Test.cs" />
</ItemGroup>
<ItemGroup>
@@ -94,6 +97,11 @@
<Install>false</Install>
</BootstrapperPackage>
</ItemGroup>
+ <ItemGroup>
+ <SliceCompile Include="..\..\..\Forward.ice">
+ <Link>Forward.ice</Link>
+ </SliceCompile>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildThisFileDirectory)\..\..\..\..\..\..\msbuild\ice.test.props" />
<Target BeforeTargets="PrepareForBuild" Name="EnsureNuGetPackageBuildImports">
diff --git a/csharp/test/Ice/objects/msbuild/collocated/netstandard2.0/collocated.csproj b/csharp/test/Ice/objects/msbuild/collocated/netstandard2.0/collocated.csproj
index 2219f7cef28..cc882ac2c0b 100644
--- a/csharp/test/Ice/objects/msbuild/collocated/netstandard2.0/collocated.csproj
+++ b/csharp/test/Ice/objects/msbuild/collocated/netstandard2.0/collocated.csproj
@@ -26,8 +26,12 @@
<Compile Include="generated\Test.cs">
<SliceCompileSource>../../../Test.ice</SliceCompileSource>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>../../../Forward.ice</SliceCompileSource>
+ </Compile>
<PackageReference Include="zeroc.icebuilder.msbuild" Version="5.0.4" />
<SliceCompile Include="../../../Test.ice" />
+ <SliceCompile Include="../../../Forward.ice" />
</ItemGroup>
<Choose>
<When Condition="'$(ICE_BIN_DIST)' == 'all'">
diff --git a/csharp/test/Ice/objects/msbuild/server/net45/server.csproj b/csharp/test/Ice/objects/msbuild/server/net45/server.csproj
index 3d843795aab..b699533dce7 100644
--- a/csharp/test/Ice/objects/msbuild/server/net45/server.csproj
+++ b/csharp/test/Ice/objects/msbuild/server/net45/server.csproj
@@ -70,6 +70,9 @@
<Compile Include="..\..\..\UnexpectedObjectExceptionTestI.cs">
<Link>UnexpectedObjectExceptionTestI.cs</Link>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>..\..\..\Forward.ice</SliceCompileSource>
+ </Compile>
<Compile Include="generated\Test.cs" />
</ItemGroup>
<ItemGroup>
@@ -79,6 +82,11 @@
<Link>Test.ice</Link>
</SliceCompile>
</ItemGroup>
+ <ItemGroup>
+ <SliceCompile Include="..\..\..\Forward.ice">
+ <Link>Forward.ice</Link>
+ </SliceCompile>
+ </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<Import Project="$(MSBuildThisFileDirectory)\..\..\..\..\..\..\msbuild\ice.test.props" />
<Target BeforeTargets="PrepareForBuild" Name="EnsureNuGetPackageBuildImports">
diff --git a/csharp/test/Ice/objects/msbuild/server/netstandard2.0/server.csproj b/csharp/test/Ice/objects/msbuild/server/netstandard2.0/server.csproj
index 7629765bdad..515fd138ad4 100644
--- a/csharp/test/Ice/objects/msbuild/server/netstandard2.0/server.csproj
+++ b/csharp/test/Ice/objects/msbuild/server/netstandard2.0/server.csproj
@@ -25,8 +25,12 @@
<Compile Include="generated\Test.cs">
<SliceCompileSource>../../../Test.ice</SliceCompileSource>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>../../../Forward.ice</SliceCompileSource>
+ </Compile>
<PackageReference Include="zeroc.icebuilder.msbuild" Version="5.0.4" />
<SliceCompile Include="../../../Test.ice" />
+ <SliceCompile Include="../../../Forward.ice" />
</ItemGroup>
<Choose>
<When Condition="'$(ICE_BIN_DIST)' == 'all'">
diff --git a/csharp/test/Ice/objects/msbuild/test/netstandard2.0/test.csproj b/csharp/test/Ice/objects/msbuild/test/netstandard2.0/test.csproj
index 8b2f289e8e6..2ce4c0354db 100644
--- a/csharp/test/Ice/objects/msbuild/test/netstandard2.0/test.csproj
+++ b/csharp/test/Ice/objects/msbuild/test/netstandard2.0/test.csproj
@@ -26,9 +26,13 @@
<Compile Include="generated\Test.cs">
<SliceCompileSource>../../../Test.ice</SliceCompileSource>
</Compile>
+ <Compile Include="generated\Forward.cs">
+ <SliceCompileSource>../../../Forward.ice</SliceCompileSource>
+ </Compile>
<PackageReference Include="zeroc.icebuilder.msbuild" Version="5.0.4" />
<ProjectReference Include="..\..\..\..\..\TestCommon\msbuild\testcommon\netstandard2.0\testcommon.csproj" />
<SliceCompile Include="../../../Test.ice" />
+ <SliceCompile Include="../../../Forward.ice" />
</ItemGroup>
<Choose>
<When Condition="'$(ICE_BIN_DIST)' == 'all'">
diff --git a/java-compat/test/src/main/java/test/Ice/objects/AllTests.java b/java-compat/test/src/main/java/test/Ice/objects/AllTests.java
index 7304a0ffb28..8602b6f0d08 100644
--- a/java-compat/test/src/main/java/test/Ice/objects/AllTests.java
+++ b/java-compat/test/src/main/java/test/Ice/objects/AllTests.java
@@ -37,6 +37,13 @@ import test.Ice.objects.Test.UnexpectedObjectExceptionTestPrxHelper;
import test.Ice.objects.Test.StructKey;
import test.Ice.objects.Test.M;
import test.Ice.objects.Test.MHolder;
+import test.Ice.objects.Test.F1;
+import test.Ice.objects.Test.F1Holder;
+import test.Ice.objects.Test.F2Prx;
+import test.Ice.objects.Test.F2PrxHolder;
+import test.Ice.objects.Test.F2PrxHelper;
+import test.Ice.objects.Test.F3;
+import test.Ice.objects.Test.F3Holder;
public class AllTests
{
@@ -406,6 +413,35 @@ public class AllTests
}
out.println("ok");
+ out.print("testing forward declared types... ");
+ out.flush();
+ {
+ F1Holder f12 = new F1Holder();
+ F1 f11 = initial.opF1(new F1("F11"), f12);
+ test(f11.name.equals("F11"));
+ test(f12.value.name.equals("F12"));
+
+ F2PrxHolder f22 = new F2PrxHolder();
+ F2Prx f21 = initial.opF2(F2PrxHelper.uncheckedCast(communicator.stringToProxy("F21")), f22);
+ test(f21.ice_getIdentity().name.equals("F21"));
+ test(f22.value.ice_getIdentity().name.equals("F22"));
+
+ if(initial.hasF3())
+ {
+ F3Holder f32 = new F3Holder();
+ F3 f31 = initial.opF3(new F3(new F1("F11"),
+ F2PrxHelper.uncheckedCast(communicator.stringToProxy("F21"))),
+ f32);
+
+ test(f31.f1.name.equals("F11"));
+ test(f31.f2.ice_getIdentity().name.equals("F21"));
+
+ test(f32.value.f1.name.equals("F12"));
+ test(f32.value.f2.ice_getIdentity().name.equals("F22"));
+ }
+ }
+ out.println("ok");
+
return initial;
}
}
diff --git a/java-compat/test/src/main/java/test/Ice/objects/Forward.ice b/java-compat/test/src/main/java/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..057b9424c6d
--- /dev/null
+++ b/java-compat/test/src/main/java/test/Ice/objects/Forward.ice
@@ -0,0 +1,22 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+[["java:package:test.Ice.objects"]]
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/java-compat/test/src/main/java/test/Ice/objects/InitialI.java b/java-compat/test/src/main/java/test/Ice/objects/InitialI.java
index 5b1bc633643..1a48cf0f7bf 100644
--- a/java-compat/test/src/main/java/test/Ice/objects/InitialI.java
+++ b/java-compat/test/src/main/java/test/Ice/objects/InitialI.java
@@ -30,6 +30,13 @@ import test.Ice.objects.Test.Compact;
import test.Ice.objects.Test.CompactExt;
import test.Ice.objects.Test.M;
import test.Ice.objects.Test.MHolder;
+import test.Ice.objects.Test.F1;
+import test.Ice.objects.Test.F1Holder;
+import test.Ice.objects.Test.F2Prx;
+import test.Ice.objects.Test.F2PrxHolder;
+import test.Ice.objects.Test.F2PrxHelper;
+import test.Ice.objects.Test.F3;
+import test.Ice.objects.Test.F3Holder;
public final class InitialI extends Initial
{
@@ -290,6 +297,38 @@ public final class InitialI extends Initial
return v1;
}
+ @Override
+ public F1
+ opF1(F1 f11, F1Holder f12, Ice.Current current)
+ {
+ f12.value = new F1("F12");
+ return f11;
+ }
+
+ @Override
+ public F2Prx
+ opF2(F2Prx f21, F2PrxHolder f22, Ice.Current current)
+ {
+ f22.value = F2PrxHelper.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22"));
+ return f21;
+ }
+
+ @Override
+ public F3
+ opF3(F3 f31, F3Holder f32, Ice.Current current)
+ {
+ f32.value = new F3(new F1("F12"),
+ F2PrxHelper.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22")));
+ return f31;
+ }
+
+ @Override
+ public boolean
+ hasF3(Ice.Current current)
+ {
+ return true;
+ }
+
private Ice.ObjectAdapter _adapter;
private B _b1;
private B _b2;
diff --git a/java-compat/test/src/main/java/test/Ice/objects/Test.ice b/java-compat/test/src/main/java/test/Ice/objects/Test.ice
index 28f1065a9ec..9af55ef027c 100644
--- a/java-compat/test/src/main/java/test/Ice/objects/Test.ice
+++ b/java-compat/test/src/main/java/test/Ice/objects/Test.ice
@@ -194,6 +194,18 @@ class M
LMap v;
}
+//
+// Forward delcarations
+//
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
class Initial
{
void shutdown();
@@ -239,6 +251,11 @@ class Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/java/test/src/main/java/test/Ice/objects/AllTests.java b/java/test/src/main/java/test/Ice/objects/AllTests.java
index 77129e806c2..f15b0cf83c9 100644
--- a/java/test/src/main/java/test/Ice/objects/AllTests.java
+++ b/java/test/src/main/java/test/Ice/objects/AllTests.java
@@ -35,6 +35,11 @@ import test.Ice.objects.Test.UnexpectedObjectExceptionTestPrx;
import test.Ice.objects.Test.M;
import test.Ice.objects.Test.StructKey;
import test.Ice.objects.Test.Initial.OpMResult;
+
+import test.Ice.objects.Test.F1;
+import test.Ice.objects.Test.F2Prx;
+import test.Ice.objects.Test.F3;
+
public class AllTests
{
private static void test(boolean b)
@@ -404,6 +409,30 @@ public class AllTests
}
out.println("ok");
+ out.print("testing forward declared types... ");
+ out.flush();
+ {
+ Initial.OpF1Result opF1Result = initial.opF1(new F1("F11"));
+ test(opF1Result.returnValue.name.equals("F11"));
+ test(opF1Result.f12.name.equals("F12"));
+
+ Initial.OpF2Result opF2Result = initial.opF2(F2Prx.uncheckedCast(communicator.stringToProxy("F21")));
+ test(opF2Result.returnValue.ice_getIdentity().name.equals("F21"));
+ test(opF2Result.f22.ice_getIdentity().name.equals("F22"));
+
+ if(initial.hasF3())
+ {
+ Initial.OpF3Result opF3Result = initial.opF3(new F3(new F1("F11"),
+ F2Prx.uncheckedCast(communicator.stringToProxy("F21"))));
+ test(opF3Result.returnValue.f1.name.equals("F11"));
+ test(opF3Result.returnValue.f2.ice_getIdentity().name.equals("F21"));
+
+ test(opF3Result.f32.f1.name.equals("F12"));
+ test(opF3Result.f32.f2.ice_getIdentity().name.equals("F22"));
+ }
+ }
+ out.println("ok");
+
return initial;
}
}
diff --git a/java/test/src/main/java/test/Ice/objects/Forward.ice b/java/test/src/main/java/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..057b9424c6d
--- /dev/null
+++ b/java/test/src/main/java/test/Ice/objects/Forward.ice
@@ -0,0 +1,22 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+[["java:package:test.Ice.objects"]]
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/java/test/src/main/java/test/Ice/objects/InitialI.java b/java/test/src/main/java/test/Ice/objects/InitialI.java
index c886195551a..7760480f1e9 100644
--- a/java/test/src/main/java/test/Ice/objects/InitialI.java
+++ b/java/test/src/main/java/test/Ice/objects/InitialI.java
@@ -243,6 +243,40 @@ public final class InitialI implements Initial
return r;
}
+ @Override
+ public Initial.OpF1Result opF1(F1 f11, com.zeroc.Ice.Current current)
+ {
+ Initial.OpF1Result r = new Initial.OpF1Result();
+ r.returnValue = f11;
+ r.f12 = new F1("F12");
+ return r;
+ }
+
+ @Override
+ public Initial.OpF2Result opF2(F2Prx f21, com.zeroc.Ice.Current current)
+ {
+ Initial.OpF2Result r = new Initial.OpF2Result();
+ r.returnValue = f21;
+ r.f22 = F2Prx.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22"));
+ return r;
+ }
+
+ @Override
+ public Initial.OpF3Result opF3(F3 f31, com.zeroc.Ice.Current current)
+ {
+ Initial.OpF3Result r = new Initial.OpF3Result();
+ r.returnValue = f31;
+ r.f32 = new F3(new F1("F12"),
+ F2Prx.uncheckedCast(current.adapter.getCommunicator().stringToProxy("F22")));
+ return r;
+ }
+
+ @Override
+ public boolean hasF3(com.zeroc.Ice.Current current)
+ {
+ return true;
+ }
+
private com.zeroc.Ice.ObjectAdapter _adapter;
private B _b1;
private B _b2;
diff --git a/java/test/src/main/java/test/Ice/objects/Test.ice b/java/test/src/main/java/test/Ice/objects/Test.ice
index cc72f1323c9..50e6248fd4a 100644
--- a/java/test/src/main/java/test/Ice/objects/Test.ice
+++ b/java/test/src/main/java/test/Ice/objects/Test.ice
@@ -194,6 +194,15 @@ class M
LMap v;
}
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -239,6 +248,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/js/test/Common/TestSuites.json b/js/test/Common/TestSuites.json
index 652d6c792f4..cc006b8c164 100644
--- a/js/test/Common/TestSuites.json
+++ b/js/test/Common/TestSuites.json
@@ -74,7 +74,7 @@
},
"Ice/objects":
{
- "files": ["Test.js", "Client.js", "InitialI.js", "Server.js"],
+ "files": ["Test.js", "Forward.js", "Client.js", "InitialI.js", "Server.js"],
"testcases":
[
{
diff --git a/js/test/Ice/objects/.gitignore b/js/test/Ice/objects/.gitignore
index d158d9308ba..e0c127372d7 100644
--- a/js/test/Ice/objects/.gitignore
+++ b/js/test/Ice/objects/.gitignore
@@ -1,2 +1,3 @@
Test.js
+Forward.js
index.html
diff --git a/js/test/Ice/objects/Client.js b/js/test/Ice/objects/Client.js
index 6e8f7602c5c..23984ccaed8 100644
--- a/js/test/Ice/objects/Client.js
+++ b/js/test/Ice/objects/Client.js
@@ -6,6 +6,7 @@
{
const Ice = require("ice").Ice;
const Test = require("Test").Test;
+ require("Forward");
const TestHelper = require("TestHelper").TestHelper;
const test = TestHelper.test;
@@ -464,6 +465,29 @@
}
out.writeLine("ok");
+ out.write("testing forward declarations... ");
+ {
+ const [f11, f12] = await initial.opF1(new Test.F1("F11"));
+ test(f11.name == "F11");
+ test(f12.name == "F12");
+
+ const [f21, f22] = await initial.opF2(Test.F2Prx.uncheckedCast(communicator.stringToProxy("F21")));
+ test(f21.ice_getIdentity().name == "F21");
+ test(f22.ice_getIdentity().name == "F22");
+
+ if(initial.hasF3())
+ {
+ const [f31, f32] = await initial.opF3(
+ new Test.F3(new Test.F1("F11"), Test.F2Prx.uncheckedCast(communicator.stringToProxy("F21"))));
+ test(f31.f1.name == "F11");
+ test(f31.f2.ice_getIdentity().name == "F21");
+
+ test(f32.f1.name == "F12");
+ test(f32.f2.ice_getIdentity().name == "F22");
+ }
+ }
+ out.writeLine("ok");
+
await initial.shutdown();
}
diff --git a/js/test/Ice/objects/Forward.ice b/js/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/js/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/js/test/Ice/objects/InitialI.js b/js/test/Ice/objects/InitialI.js
index 50e7af444bc..e6140642963 100644
--- a/js/test/Ice/objects/InitialI.js
+++ b/js/test/Ice/objects/InitialI.js
@@ -6,6 +6,7 @@
{
const Ice = require("ice").Ice;
const Test = require("Test").Test;
+ require("Forward");
class BI extends Test.B
{
@@ -322,6 +323,28 @@
return [v1, v1];
}
+ opF1(f11, current)
+ {
+ return [f11, new Test.F1("F12")];
+ }
+
+ opF2(f21, current)
+ {
+ return [f21, current.adapter.getCommunicator().stringToProxy("F22")];
+ }
+
+ opF3(f31, current)
+ {
+ return [f31,
+ new Test.F3(new Test.F1("F12"),
+ current.adapter.getCommunicator().stringToProxy("F22"))];
+ }
+
+ hasF3(current)
+ {
+ return true;
+ }
+
shutdown(current)
{
current.adapter.getCommunicator().shutdown();
diff --git a/js/test/Ice/objects/Server.js b/js/test/Ice/objects/Server.js
index 3bd99210f48..fa55ce23596 100644
--- a/js/test/Ice/objects/Server.js
+++ b/js/test/Ice/objects/Server.js
@@ -6,6 +6,7 @@
{
const Ice = require("ice").Ice;
const Test = require("Test").Test;
+ require("Forward");
const TestHelper = require("TestHelper").TestHelper;
const InitialI = require("InitialI").InitialI;
diff --git a/js/test/Ice/objects/Test.ice b/js/test/Ice/objects/Test.ice
index b908511f680..617deda65de 100644
--- a/js/test/Ice/objects/Test.ice
+++ b/js/test/Ice/objects/Test.ice
@@ -197,6 +197,16 @@ class M
LMap v;
}
+// Forward declarations
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -242,6 +252,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/matlab/test/Ice/objects/AllTests.m b/matlab/test/Ice/objects/AllTests.m
index 1f799880dbe..6eecffbf426 100644
--- a/matlab/test/Ice/objects/AllTests.m
+++ b/matlab/test/Ice/objects/AllTests.m
@@ -270,6 +270,27 @@ classdef AllTests
assert(strcmp(m2.v(2).value.data, 'two'));
fprintf('ok\n');
+
+ fprintf('testing forward declarations... ');
+
+ [f11, f12] = initial.opF1(F1('F11'));
+ assert(strcmp(f11.name, 'F11'));
+ assert(strcmp(f12.name, 'F12'));
+
+ [f21, f22] = initial.opF2(F2Prx.uncheckedCast(communicator.stringToProxy('F21')));
+ assert(strcmp(f21.ice_getIdentity().name, 'F21'));
+ assert(strcmp(f22.ice_getIdentity().name, 'F22'));
+
+ if initial.hasF3()
+ [f31, f32] = initial.opF3(F3(f11, f21));
+ assert(strcmp(f31.f1.name, 'F11'));
+ assert(strcmp(f31.f2.ice_getIdentity().name, 'F21'));
+
+ assert(strcmp(f32.f1.name, 'F12'));
+ assert(strcmp(f32.f2.ice_getIdentity().name, 'F22'));
+ end
+ fprintf('ok\n');
+
r = initial;
end
end
diff --git a/matlab/test/Ice/objects/Forward.ice b/matlab/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/matlab/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/matlab/test/Ice/objects/Test.ice b/matlab/test/Ice/objects/Test.ice
index ab0d8c49d37..d05e6feff56 100644
--- a/matlab/test/Ice/objects/Test.ice
+++ b/matlab/test/Ice/objects/Test.ice
@@ -193,6 +193,16 @@ class M
LMap v;
}
+// Forward declarations
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -238,6 +248,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/objective-c/test/Ice/objects/AllTests.m b/objective-c/test/Ice/objects/AllTests.m
index 3e148570879..673e2c8ef40 100644
--- a/objective-c/test/Ice/objects/AllTests.m
+++ b/objective-c/test/Ice/objects/AllTests.m
@@ -5,6 +5,7 @@
#import <objc/Ice.h>
#import <TestCommon.h>
#import <ObjectsTest.h>
+#import <ObjectsForward.h>
#if defined(__clang__)
// For 'Ice::Communicator::findObjectFactory()' deprecation
@@ -688,5 +689,20 @@ objectsAllTests(id<ICECommunicator> communicator, BOOL __unused collocated)
tprintf("ok\n");
}
+ {
+ tprintf("testing forward declarations... ");
+ TestObjectsF1* f12;
+ TestObjectsF1* f11 = [initial opF1:[[TestObjectsF1 alloc] init:@"F11"] f12:&f12];
+ test([f11.name isEqualToString:@"F11"]);
+ test([f12.name isEqualToString:@"F12"]);
+
+ TestObjectsF2Prx* f22;
+ TestObjectsF2Prx* f21 = [initial opF2:[TestObjectsF2Prx uncheckedCast:[communicator stringToProxy:@"F21"]]
+ f22: &f22];
+ test([[f21 ice_getIdentity].name isEqualToString:@"F21"]);
+ test([[f22 ice_getIdentity].name isEqualToString:@"F22"]);
+ tprintf("ok\n");
+ }
+
return initial;
}
diff --git a/objective-c/test/Ice/objects/Makefile.mk b/objective-c/test/Ice/objects/Makefile.mk
index 391c8265c3b..08a7bad516c 100644
--- a/objective-c/test/Ice/objects/Makefile.mk
+++ b/objective-c/test/Ice/objects/Makefile.mk
@@ -3,8 +3,11 @@
#
$(test)_sliceflags := -I$(test)
-$(test)_client_sources = Client.m ObjectsTest.ice ObjectsDerived.ice ObjectsDerivedEx.ice TestI.m AllTests.m
-$(test)_server_sources = Server.m ObjectsTest.ice ObjectsDerived.ice ObjectsDerivedEx.ice TestI.m TestIntfI.m
-$(test)_collocated_sources = Collocated.m ObjectsTest.ice ObjectsDerived.ice ObjectsDerivedEx.ice TestI.m TestIntfI.m AllTests.m
+$(test)_client_sources = Client.m ObjectsForward.ice ObjectsTest.ice ObjectsDerived.ice \
+ ObjectsDerivedEx.ice TestI.m AllTests.m
+$(test)_server_sources = Server.m ObjectsForward.ice ObjectsTest.ice ObjectsDerived.ice \
+ ObjectsDerivedEx.ice TestI.m TestIntfI.m
+$(test)_collocated_sources = Collocated.m ObjectsForward.ice ObjectsTest.ice ObjectsDerived.ice \
+ ObjectsDerivedEx.ice TestI.m TestIntfI.m AllTests.m
tests += $(test)
diff --git a/objective-c/test/Ice/objects/ObjectsForward.ice b/objective-c/test/Ice/objects/ObjectsForward.ice
new file mode 100644
index 00000000000..f405db9f80c
--- /dev/null
+++ b/objective-c/test/Ice/objects/ObjectsForward.ice
@@ -0,0 +1,22 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+["objc:prefix:TestObjects"]
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/objective-c/test/Ice/objects/ObjectsTest.ice b/objective-c/test/Ice/objects/ObjectsTest.ice
index d7bfeabc1f0..b7919f45a9e 100644
--- a/objective-c/test/Ice/objects/ObjectsTest.ice
+++ b/objective-c/test/Ice/objects/ObjectsTest.ice
@@ -208,6 +208,10 @@ class M
LMap v;
}
+// Forward declarations
+class F1;
+interface F2;
+
class Initial
{
void shutdown();
@@ -264,6 +268,11 @@ class Initial
BaseDict getBaseDict(BaseDict d);
BasePrxDict getBasePrxDict(BasePrxDict d);
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+
+ bool hasF3();
}
interface TestIntf
diff --git a/objective-c/test/Ice/objects/TestI.h b/objective-c/test/Ice/objects/TestI.h
index c39c241acae..f89d8612f90 100644
--- a/objective-c/test/Ice/objects/TestI.h
+++ b/objective-c/test/Ice/objects/TestI.h
@@ -3,6 +3,7 @@
//
#import <ObjectsTest.h>
+#import <ObjectsForward.h>
@interface TestObjectsBI : TestObjectsB<TestObjectsB>
{
@@ -66,7 +67,10 @@
-(TestObjectsObjectPrxDict *) getObjectPrxDict:(TestObjectsMutableObjectPrxDict *)d current:(ICECurrent *)current;
-(TestObjectsBaseDict *) getBaseDict:(TestObjectsMutableBaseDict *)d current:(ICECurrent *)current;
-(TestObjectsBasePrxDict *) getBasePrxDict:(TestObjectsMutableBasePrxDict *)d current:(ICECurrent *)current;
- -(TestObjectsM *) opM:(TestObjectsM *)v1 v2:(TestObjectsM **)v2 current:(ICECurrent *)current;
+-(TestObjectsM *) opM:(TestObjectsM *)v1 v2:(TestObjectsM **)v2 current:(ICECurrent *)current;
+-(TestObjectsF1 *) opF1:(TestObjectsF1 *)f11 f12:(TestObjectsF1 **)f12 current:(ICECurrent *)current;
+-(TestObjectsF2Prx *) opF2:(TestObjectsF2Prx *)f21 f22:(TestObjectsF2Prx **)f22 current:(ICECurrent *)current;
+-(BOOL) hasF3:(ICECurrent *)current;
@end
@interface UnexpectedObjectExceptionTestI : ICEBlobject<ICEBlobject>
diff --git a/objective-c/test/Ice/objects/TestI.m b/objective-c/test/Ice/objects/TestI.m
index 5b86e3e94be..652b6ed360f 100644
--- a/objective-c/test/Ice/objects/TestI.m
+++ b/objective-c/test/Ice/objects/TestI.m
@@ -350,6 +350,23 @@
*v2 = v1;
return v1;
}
+
+-(TestObjectsF1 *) opF1:(TestObjectsF1 *)f11 f12:(TestObjectsF1 **)f12 current:(ICECurrent *)__unused current
+{
+ *f12 = [[TestObjectsF1 alloc] init:@"F12"];
+ return f11;
+}
+
+-(TestObjectsF2Prx *) opF2:(TestObjectsF2Prx *)f21 f22:(TestObjectsF2Prx **)f22 current:(ICECurrent *)__unused current
+{
+ *f22 = [TestObjectsF2Prx uncheckedCast:[[current.adapter getCommunicator] stringToProxy:@"F22"]];
+ return f21;
+}
+
+-(BOOL) hasF3:(ICECurrent *)__unused current
+{
+ return NO;
+}
@end
@implementation UnexpectedObjectExceptionTestI
diff --git a/php/test/Ice/objects/.gitignore b/php/test/Ice/objects/.gitignore
index bed01730acc..5c33ecc88c0 100644
--- a/php/test/Ice/objects/.gitignore
+++ b/php/test/Ice/objects/.gitignore
@@ -1 +1,2 @@
Test.php
+Forward.php
diff --git a/php/test/Ice/objects/Client.php b/php/test/Ice/objects/Client.php
index b048c6fe4b0..0e653118147 100644
--- a/php/test/Ice/objects/Client.php
+++ b/php/test/Ice/objects/Client.php
@@ -5,6 +5,7 @@
$NS = function_exists("Ice\\initialize");
require_once('Test.php');
+require_once('Forward.php');
if($NS)
{
@@ -24,6 +25,8 @@ if($NS)
interface Ice_ObjectFactory extends Ice\ObjectFactory {}
interface Ice_ValueFactory extends Ice\ValueFactory {}
class Test_L extends Test\L {}
+ class Test_F1 extends Test\F1 {}
+ class Test_F3 extends Test\F3 {}
EOT;
eval($code);
}
@@ -567,6 +570,29 @@ function allTests($helper)
test($communicator->getValueFactoryManager()->find("TestOF") != null);
echo "ok\n";
+ echo "testing forward declarations... ";
+ $f12 = null;
+ $f11 = $initial->opF1(new Test_F1("F11"), $f12);
+ test($f11->name == "F11");
+ test($f12->name == "F12");
+
+ $f22 = null;
+ $f21 = $initial->opF2($communicator->stringToProxy("F21")->ice_uncheckedCast("::Test::F2"), $f22);
+ test($f21->ice_getIdentity()->name == "F21");
+ test($f22->ice_getIdentity()->name == "F22");
+
+ if($initial->hasF3())
+ {
+ $f32 = null;
+ $f31 = $initial->opF3(new Test_F3($f11, $f22), $f32);
+ test($f31->f1->name == "F11");
+ test($f31->f2->ice_getIdentity()->name = "F21");
+
+ test($f32->f1->name == "F12");
+ test($f32->f2->ice_getIdentity()->name = "F22");
+ }
+ echo "ok\n";
+
return $initial;
}
diff --git a/php/test/Ice/objects/Forward.ice b/php/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/php/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/php/test/Ice/objects/Test.ice b/php/test/Ice/objects/Test.ice
index 08936064c4e..81fc72314b2 100644
--- a/php/test/Ice/objects/Test.ice
+++ b/php/test/Ice/objects/Test.ice
@@ -150,6 +150,16 @@ class L
sequence<Value> ValueSeq;
dictionary<string, Value> ValueMap;
+// Forward declarations
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -186,6 +196,11 @@ interface Initial
BaseSeq opBaseSeq(BaseSeq inSeq, out BaseSeq outSeq);
Compact getCompact();
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
class Empty
diff --git a/python/test/Ice/objects/AllTests.py b/python/test/Ice/objects/AllTests.py
index e47ca1d4089..d2b666a655b 100644
--- a/python/test/Ice/objects/AllTests.py
+++ b/python/test/Ice/objects/AllTests.py
@@ -335,4 +335,24 @@ def allTests(helper, communicator):
print("ok")
+ sys.stdout.write("testing forward declarations... ")
+ sys.stdout.flush()
+ f11, f12 = initial.opF1(Test.F1("F11"))
+ test(f11.name == "F11")
+ test(f12.name == "F12")
+
+ f21, f22 = initial.opF2(Test.F2Prx.uncheckedCast(communicator.stringToProxy("F21")))
+ test(f21.ice_getIdentity().name == "F21")
+ test(f22.ice_getIdentity().name == "F22")
+
+ if initial.hasF3():
+ f31, f32 = initial.opF3(Test.F3(f11, f21))
+
+ test(f31.f1.name == "F11")
+ test(f31.f2.ice_getIdentity().name == "F21")
+
+ test(f32.f1.name == "F12")
+ test(f32.f2.ice_getIdentity().name == "F22")
+ print("ok")
+
return initial
diff --git a/python/test/Ice/objects/Client.py b/python/test/Ice/objects/Client.py
index 441f6a1a83c..89cb791cc20 100755
--- a/python/test/Ice/objects/Client.py
+++ b/python/test/Ice/objects/Client.py
@@ -4,7 +4,7 @@
#
from TestHelper import TestHelper
-TestHelper.loadSlice("Test.ice ClientPrivate.ice")
+TestHelper.loadSlice("Test.ice Forward.ice ClientPrivate.ice")
import AllTests
diff --git a/python/test/Ice/objects/Collocated.py b/python/test/Ice/objects/Collocated.py
index ada3bc0d82b..ba6d78fd96e 100755
--- a/python/test/Ice/objects/Collocated.py
+++ b/python/test/Ice/objects/Collocated.py
@@ -4,7 +4,7 @@
#
from TestHelper import TestHelper
-TestHelper.loadSlice("Test.ice ClientPrivate.ice")
+TestHelper.loadSlice("Test.ice Forward.ice ClientPrivate.ice")
import Ice
import TestI
import AllTests
diff --git a/python/test/Ice/objects/Forward.ice b/python/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/python/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/python/test/Ice/objects/Server.py b/python/test/Ice/objects/Server.py
index 033ac8911e9..2a9df124f4c 100755
--- a/python/test/Ice/objects/Server.py
+++ b/python/test/Ice/objects/Server.py
@@ -4,7 +4,7 @@
#
from TestHelper import TestHelper
-TestHelper.loadSlice("Test.ice ServerPrivate.ice")
+TestHelper.loadSlice("Test.ice Forward.ice ServerPrivate.ice")
import TestI
import Ice
diff --git a/python/test/Ice/objects/Test.ice b/python/test/Ice/objects/Test.ice
index 3b4bf7807c9..e6e4828ffb9 100644
--- a/python/test/Ice/objects/Test.ice
+++ b/python/test/Ice/objects/Test.ice
@@ -193,6 +193,16 @@ class M
LMap v;
}
+// Forward declarations
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
interface Initial
{
void shutdown();
@@ -238,6 +248,11 @@ interface Initial
void throwInnerSubEx() throws Inner::Sub::Ex;
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
}
diff --git a/python/test/Ice/objects/TestI.py b/python/test/Ice/objects/TestI.py
index 921f5d8b485..e28c882a1bf 100644
--- a/python/test/Ice/objects/TestI.py
+++ b/python/test/Ice/objects/TestI.py
@@ -193,6 +193,19 @@ class InitialI(Test.Initial):
def opM(self, m, current=None):
return (m, m)
+ def opF1(self, f11, current=None):
+ return (f11, Test.F1("F12"))
+
+ def opF2(self, f21, current=None):
+ return (f21, current.adapter.getCommunicator().stringToProxy("F22"))
+
+ def opF3(self, f31, current):
+ return (f31, Test.F3(Test.F1("F12"), current.adapter.getCommunicator().stringToProxy("F22")))
+
+ def hasF3(self, current):
+ return True
+
+
class UnexpectedObjectExceptionTestI(Test.UnexpectedObjectExceptionTest):
def op(self, current=None):
return Test.AlsoEmpty()
diff --git a/ruby/test/Ice/objects/AllTests.rb b/ruby/test/Ice/objects/AllTests.rb
index 69abd80f806..9e92f11131a 100644
--- a/ruby/test/Ice/objects/AllTests.rb
+++ b/ruby/test/Ice/objects/AllTests.rb
@@ -384,5 +384,24 @@ def allTests(helper, communicator)
test(m2.v[k2].data == "two")
puts "ok"
+ print "testing forward declarations... "
+ STDOUT.flush
+ f11, f12 = initial.opF1(Test::F1.new("F11"))
+ test(f11.name == "F11")
+ test(f12.name == "F12")
+
+ f21, f22 = initial.opF2(Test::F2Prx::uncheckedCast(communicator.stringToProxy("F21")))
+ test(f21.ice_getIdentity().name == "F21")
+ test(f22.ice_getIdentity().name == "F22")
+
+ if initial.hasF3() then
+ f31, f32 = initial.opF3(Test::F3.new(f11, f21))
+ test(f31.f1.name == "F11")
+ test(f31.f2.ice_getIdentity().name == "F21")
+
+ test(f32.f1.name == "F12")
+ test(f32.f2.ice_getIdentity().name == "F22")
+ end
+ puts "ok"
return initial
end
diff --git a/ruby/test/Ice/objects/Client.rb b/ruby/test/Ice/objects/Client.rb
index 1e9516066b6..53d3faf3a14 100755
--- a/ruby/test/Ice/objects/Client.rb
+++ b/ruby/test/Ice/objects/Client.rb
@@ -5,6 +5,7 @@
require 'Ice'
Ice::loadSlice('Test.ice')
+Ice::loadSlice('Forward.ice')
Ice::loadSlice('ClientPrivate.ice')
require './AllTests'
diff --git a/ruby/test/Ice/objects/Forward.ice b/ruby/test/Ice/objects/Forward.ice
new file mode 100644
index 00000000000..5cc93e83b4a
--- /dev/null
+++ b/ruby/test/Ice/objects/Forward.ice
@@ -0,0 +1,20 @@
+//
+// Copyright (c) ZeroC, Inc. All rights reserved.
+//
+
+#pragma once
+
+module Test
+{
+
+class F1
+{
+ string name;
+}
+
+interface F2
+{
+ void op();
+}
+
+};
diff --git a/ruby/test/Ice/objects/Test.ice b/ruby/test/Ice/objects/Test.ice
index d22849cb7cb..b4e0f3fd690 100644
--- a/ruby/test/Ice/objects/Test.ice
+++ b/ruby/test/Ice/objects/Test.ice
@@ -163,6 +163,16 @@ class M
LMap v;
}
+// Forward declaration
+class F1;
+interface F2;
+
+class F3
+{
+ F1 f1;
+ F2* f2;
+}
+
class Initial
{
void shutdown();
@@ -202,6 +212,11 @@ class Initial
Compact getCompact();
M opM(M v1, out M v2);
+
+ F1 opF1(F1 f11, out F1 f12);
+ F2* opF2(F2* f21, out F2* f22);
+ F3 opF3(F3 f31, out F3 f32);
+ bool hasF3();
}
}