From: Chandler Carruth Date: Sat, 16 Jun 2012 03:54:11 +0000 (+0000) Subject: Work around a bug with MSVC 10 where it fails to recognize a valid use X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=7027ba92dd7381188d3014d2ae1d9bedef9a218e;p=oota-llvm.git Work around a bug with MSVC 10 where it fails to recognize a valid use of typename. GCC and Clang were fine with this, but MSVC won't accept it. Fortunately, it also doesn't need it. Yuck. Thanks to Nakamura for pointing this out in IRC. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@158593 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/unittests/ADT/DenseMapTest.cpp b/unittests/ADT/DenseMapTest.cpp index e04bba76229..3fe35c91edc 100644 --- a/unittests/ADT/DenseMapTest.cpp +++ b/unittests/ADT/DenseMapTest.cpp @@ -66,8 +66,17 @@ TYPED_TEST(DenseMapTest, EmptyIntMapTest) { // Lookup tests EXPECT_FALSE(this->Map.count(this->getKey())); EXPECT_TRUE(this->Map.find(this->getKey()) == this->Map.end()); +#ifndef _MSC_VER EXPECT_EQ(typename TypeParam::mapped_type(), this->Map.lookup(this->getKey())); +#else + // MSVC, at least old versions, cannot parse the typename to disambiguate + // TypeParam::mapped_type as a type. However, because MSVC doesn't implement + // two-phase name lookup, it also doesn't require the typename. Deal with + // this mutual incompatibility through specialized code. + EXPECT_EQ(TypeParam::mapped_type(), + this->Map.lookup(this->getKey())); +#endif } // Constant map tests