aboutsummaryrefslogtreecommitdiffstats
path: root/include
diff options
context:
space:
mode:
authorzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2011-03-16 17:10:39 +0000
committerzhanyong.wan <zhanyong.wan@8415998a-534a-0410-bf83-d39667b30386>2011-03-16 17:10:39 +0000
commit86d2eeb1120a330cec8396aee97914dae909e237 (patch)
treebdc2612a9fa4a6cdcbdf3aec02fdea28ad9c7976 /include
parentfc8c6c479a5250b709ed7b4406e025439037e18e (diff)
downloadgoogletest-86d2eeb1120a330cec8396aee97914dae909e237.tar.gz
googletest-86d2eeb1120a330cec8396aee97914dae909e237.tar.bz2
googletest-86d2eeb1120a330cec8396aee97914dae909e237.zip
Prevents ADL in AllOf() and AnyOf() (by Manuel Klimek).
Diffstat (limited to 'include')
-rw-r--r--include/gmock/gmock-generated-matchers.h39
-rw-r--r--include/gmock/gmock-generated-matchers.h.pump8
2 files changed, 25 insertions, 22 deletions
diff --git a/include/gmock/gmock-generated-matchers.h b/include/gmock/gmock-generated-matchers.h
index 68af306b..6feaf1a2 100644
--- a/include/gmock/gmock-generated-matchers.h
+++ b/include/gmock/gmock-generated-matchers.h
@@ -850,7 +850,7 @@ ElementsAreArray(const T (&array)[N]) {
}
// AllOf(m1, m2, ..., mk) matches any value that matches all of the given
-// sub-matchers.
+// sub-matchers. AllOf is called fully qualified to prevent ADL from firing.
template <typename Matcher1, typename Matcher2>
inline internal::BothOfMatcher<Matcher1, Matcher2>
@@ -862,7 +862,7 @@ template <typename Matcher1, typename Matcher2, typename Matcher3>
inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
Matcher3> >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3) {
- return AllOf(m1, AllOf(m2, m3));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -870,7 +870,7 @@ template <typename Matcher1, typename Matcher2, typename Matcher3,
inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
internal::BothOfMatcher<Matcher3, Matcher4> > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4) {
- return AllOf(m1, AllOf(m2, m3, m4));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -879,7 +879,7 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
internal::BothOfMatcher<Matcher3, internal::BothOfMatcher<Matcher4,
Matcher5> > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5) {
- return AllOf(m1, AllOf(m2, m3, m4, m5));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -889,7 +889,7 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
internal::BothOfMatcher<Matcher5, Matcher6> > > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6) {
- return AllOf(m1, AllOf(m2, m3, m4, m5, m6));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5, m6));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -900,7 +900,7 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
Matcher7> > > > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7) {
- return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5, m6, m7));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -912,7 +912,7 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
internal::BothOfMatcher<Matcher7, Matcher8> > > > > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8) {
- return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5, m6, m7, m8));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -925,7 +925,7 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
Matcher9> > > > > > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9) {
- return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8, m9));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5, m6, m7, m8, m9));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -938,11 +938,12 @@ inline internal::BothOfMatcher<Matcher1, internal::BothOfMatcher<Matcher2,
internal::BothOfMatcher<Matcher9, Matcher10> > > > > > > > >
AllOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9, Matcher10 m10) {
- return AllOf(m1, AllOf(m2, m3, m4, m5, m6, m7, m8, m9, m10));
+ return ::testing::AllOf(m1, ::testing::AllOf(m2, m3, m4, m5, m6, m7, m8, m9,
+ m10));
}
// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
-// sub-matchers.
+// sub-matchers. AnyOf is called fully qualified to prevent ADL from firing.
template <typename Matcher1, typename Matcher2>
inline internal::EitherOfMatcher<Matcher1, Matcher2>
@@ -954,7 +955,7 @@ template <typename Matcher1, typename Matcher2, typename Matcher3>
inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
Matcher3> >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3) {
- return AnyOf(m1, AnyOf(m2, m3));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -962,7 +963,7 @@ template <typename Matcher1, typename Matcher2, typename Matcher3,
inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
internal::EitherOfMatcher<Matcher3, Matcher4> > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4) {
- return AnyOf(m1, AnyOf(m2, m3, m4));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -971,7 +972,7 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
internal::EitherOfMatcher<Matcher3, internal::EitherOfMatcher<Matcher4,
Matcher5> > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -981,7 +982,7 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
internal::EitherOfMatcher<Matcher5, Matcher6> > > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5, m6));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -992,7 +993,7 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
Matcher7> > > > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5, m6, m7));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -1004,7 +1005,7 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
internal::EitherOfMatcher<Matcher7, Matcher8> > > > > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5, m6, m7, m8));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -1017,7 +1018,7 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
Matcher9> > > > > > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8, m9));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5, m6, m7, m8, m9));
}
template <typename Matcher1, typename Matcher2, typename Matcher3,
@@ -1030,11 +1031,13 @@ inline internal::EitherOfMatcher<Matcher1, internal::EitherOfMatcher<Matcher2,
internal::EitherOfMatcher<Matcher9, Matcher10> > > > > > > > >
AnyOf(Matcher1 m1, Matcher2 m2, Matcher3 m3, Matcher4 m4, Matcher5 m5,
Matcher6 m6, Matcher7 m7, Matcher8 m8, Matcher9 m9, Matcher10 m10) {
- return AnyOf(m1, AnyOf(m2, m3, m4, m5, m6, m7, m8, m9, m10));
+ return ::testing::AnyOf(m1, ::testing::AnyOf(m2, m3, m4, m5, m6, m7, m8, m9,
+ m10));
}
} // namespace testing
+
// The MATCHER* family of macros can be used in a namespace scope to
// define custom matchers easily.
//
diff --git a/include/gmock/gmock-generated-matchers.h.pump b/include/gmock/gmock-generated-matchers.h.pump
index cebdd0e6..8c09444c 100644
--- a/include/gmock/gmock-generated-matchers.h.pump
+++ b/include/gmock/gmock-generated-matchers.h.pump
@@ -303,7 +303,7 @@ ElementsAreArray(const T (&array)[N]) {
}
// AllOf(m1, m2, ..., mk) matches any value that matches all of the given
-// sub-matchers.
+// sub-matchers. AllOf is called fully qualified to prevent ADL from firing.
$range i 2..n
$for i [[
@@ -318,7 +318,7 @@ AllOf($for j, [[Matcher$j m$j]]) {
$if i == 2 [[
return internal::BothOfMatcher<Matcher1, Matcher2>(m1, m2);
]] $else [[
- return AllOf(m1, AllOf($for k, [[m$(k + 1)]]));
+ return ::testing::AllOf(m1, ::testing::AllOf($for k, [[m$(k + 1)]]));
]]
}
@@ -326,7 +326,7 @@ $if i == 2 [[
]]
// AnyOf(m1, m2, ..., mk) matches any value that matches any of the given
-// sub-matchers.
+// sub-matchers. AnyOf is called fully qualified to prevent ADL from firing.
$range i 2..n
$for i [[
@@ -341,7 +341,7 @@ AnyOf($for j, [[Matcher$j m$j]]) {
$if i == 2 [[
return internal::EitherOfMatcher<Matcher1, Matcher2>(m1, m2);
]] $else [[
- return AnyOf(m1, AnyOf($for k, [[m$(k + 1)]]));
+ return ::testing::AnyOf(m1, ::testing::AnyOf($for k, [[m$(k + 1)]]));
]]
}