Googletest export
Merge 3bdefdb473d304803d2a38e2a2cd5cdc1827c3bd into fb49e6c164
Closes #2407
COPYBARA_INTEGRATE_REVIEW=https://github.com/google/googletest/pull/2407 from kuzkry:StaticAssertTypeEq 3bdefdb473d304803d2a38e2a2cd5cdc1827c3bd
PiperOrigin-RevId: 269255328
This commit is contained in:
committed by
Shaindel Schwartz
parent
cad3bc46c2
commit
f2fb48c3b3
@@ -2068,15 +2068,15 @@ class ContainerEqMatcher {
|
||||
typedef typename View::type StlContainer;
|
||||
typedef typename View::const_reference StlContainerReference;
|
||||
|
||||
static_assert(!std::is_const<Container>::value,
|
||||
"Container type must not be const");
|
||||
static_assert(!std::is_reference<Container>::value,
|
||||
"Container type must not be a reference");
|
||||
|
||||
// We make a copy of expected in case the elements in it are modified
|
||||
// after this matcher is created.
|
||||
explicit ContainerEqMatcher(const Container& expected)
|
||||
: expected_(View::Copy(expected)) {
|
||||
// Makes sure the user doesn't instantiate this class template
|
||||
// with a const or reference type.
|
||||
(void)testing::StaticAssertTypeEq<Container,
|
||||
GTEST_REMOVE_REFERENCE_AND_CONST_(Container)>();
|
||||
}
|
||||
: expected_(View::Copy(expected)) {}
|
||||
|
||||
void DescribeTo(::std::ostream* os) const {
|
||||
*os << "equals ";
|
||||
@@ -2243,15 +2243,15 @@ class PointwiseMatcher {
|
||||
typedef typename RhsView::type RhsStlContainer;
|
||||
typedef typename RhsStlContainer::value_type RhsValue;
|
||||
|
||||
static_assert(!std::is_const<RhsContainer>::value,
|
||||
"RhsContainer type must not be const");
|
||||
static_assert(!std::is_reference<RhsContainer>::value,
|
||||
"RhsContainer type must not be a reference");
|
||||
|
||||
// Like ContainerEq, we make a copy of rhs in case the elements in
|
||||
// it are modified after this matcher is created.
|
||||
PointwiseMatcher(const TupleMatcher& tuple_matcher, const RhsContainer& rhs)
|
||||
: tuple_matcher_(tuple_matcher), rhs_(RhsView::Copy(rhs)) {
|
||||
// Makes sure the user doesn't instantiate this class template
|
||||
// with a const or reference type.
|
||||
(void)testing::StaticAssertTypeEq<RhsContainer,
|
||||
GTEST_REMOVE_REFERENCE_AND_CONST_(RhsContainer)>();
|
||||
}
|
||||
: tuple_matcher_(tuple_matcher), rhs_(RhsView::Copy(rhs)) {}
|
||||
|
||||
template <typename LhsContainer>
|
||||
operator Matcher<LhsContainer>() const {
|
||||
|
||||
@@ -384,9 +384,8 @@ class StlContainerView {
|
||||
typedef const type& const_reference;
|
||||
|
||||
static const_reference ConstReference(const RawContainer& container) {
|
||||
// Ensures that RawContainer is not a const type.
|
||||
testing::StaticAssertTypeEq<
|
||||
RawContainer, typename std::remove_const<RawContainer>::type>();
|
||||
static_assert(!std::is_const<RawContainer>::value,
|
||||
"RawContainer type must not be const");
|
||||
return container;
|
||||
}
|
||||
static type Copy(const RawContainer& container) { return container; }
|
||||
@@ -406,8 +405,8 @@ class StlContainerView<Element[N]> {
|
||||
typedef const type const_reference;
|
||||
|
||||
static const_reference ConstReference(const Element (&array)[N]) {
|
||||
// Ensures that Element is not a const type.
|
||||
testing::StaticAssertTypeEq<Element, RawElement>();
|
||||
static_assert(std::is_same<Element, RawElement>::value,
|
||||
"Element type must not be const");
|
||||
return type(array, N, RelationToSourceReference());
|
||||
}
|
||||
static type Copy(const Element (&array)[N]) {
|
||||
|
||||
@@ -57,7 +57,6 @@ using testing::ReturnPointee;
|
||||
using testing::SaveArg;
|
||||
using testing::SaveArgPointee;
|
||||
using testing::SetArgReferee;
|
||||
using testing::StaticAssertTypeEq;
|
||||
using testing::Unused;
|
||||
using testing::WithArg;
|
||||
using testing::WithoutArgs;
|
||||
|
||||
Reference in New Issue
Block a user