Commit 19b6b65f authored by dcheng's avatar dcheng Committed by Commit bot

Clean up final uses of scoped_ptr<T>::PassAs() and remove it.

This helper to upcast in return statements is no longer needed.

BUG=423621

Review URL: https://codereview.chromium.org/663243003

Cr-Commit-Position: refs/heads/master@{#300548}
parent ccbfe27c
...@@ -73,16 +73,6 @@ ...@@ -73,16 +73,6 @@
// //
// scoped_ptr<Foo> foo(new Foo()); // scoped_ptr<Foo> foo(new Foo());
// scoped_ptr<FooParent> parent(foo.Pass()); // scoped_ptr<FooParent> parent(foo.Pass());
//
// PassAs<>() should be used to upcast return value in return statement:
//
// scoped_ptr<Foo> CreateFoo() {
// scoped_ptr<FooChild> result(new FooChild());
// return result.PassAs<Foo>();
// }
//
// Note that PassAs<>() is implemented only for scoped_ptr<T>, but not for
// scoped_ptr<T[]>. This is because casting array pointers may not be safe.
#ifndef BASE_MEMORY_SCOPED_PTR_H_ #ifndef BASE_MEMORY_SCOPED_PTR_H_
#define BASE_MEMORY_SCOPED_PTR_H_ #define BASE_MEMORY_SCOPED_PTR_H_
...@@ -436,17 +426,6 @@ class scoped_ptr { ...@@ -436,17 +426,6 @@ class scoped_ptr {
return impl_.release(); return impl_.release();
} }
// C++98 doesn't support functions templates with default parameters which
// makes it hard to write a PassAs() that understands converting the deleter
// while preserving simple calling semantics.
//
// Until there is a use case for PassAs() with custom deleters, just ignore
// the custom deleter.
template <typename PassAsType>
scoped_ptr<PassAsType> PassAs() {
return scoped_ptr<PassAsType>(Pass());
}
private: private:
// Needed to reach into |impl_| in the constructor. // Needed to reach into |impl_| in the constructor.
template <typename U, typename V> friend class scoped_ptr; template <typename U, typename V> friend class scoped_ptr;
......
...@@ -94,11 +94,6 @@ scoped_ptr<ConDecLogger> TestReturnOfType(int* constructed) { ...@@ -94,11 +94,6 @@ scoped_ptr<ConDecLogger> TestReturnOfType(int* constructed) {
return scoped_ptr<ConDecLogger>(new ConDecLogger(constructed)); return scoped_ptr<ConDecLogger>(new ConDecLogger(constructed));
} }
scoped_ptr<ConDecLoggerParent> UpcastUsingPassAs(
scoped_ptr<ConDecLogger> object) {
return object.PassAs<ConDecLoggerParent>();
}
} // namespace } // namespace
TEST(ScopedPtrTest, ScopedPtr) { TEST(ScopedPtrTest, ScopedPtr) {
...@@ -462,22 +457,6 @@ TEST(ScopedPtrTest, ReturnTypeBehavior) { ...@@ -462,22 +457,6 @@ TEST(ScopedPtrTest, ReturnTypeBehavior) {
EXPECT_EQ(0, constructed); EXPECT_EQ(0, constructed);
} }
TEST(ScopedPtrTest, PassAs) {
int constructed = 0;
{
scoped_ptr<ConDecLogger> scoper(new ConDecLogger(&constructed));
EXPECT_EQ(1, constructed);
EXPECT_TRUE(scoper.get());
scoped_ptr<ConDecLoggerParent> scoper_parent;
scoper_parent = UpcastUsingPassAs(scoper.Pass());
EXPECT_EQ(1, constructed);
EXPECT_TRUE(scoper_parent.get());
EXPECT_FALSE(scoper.get());
}
EXPECT_EQ(0, constructed);
}
TEST(ScopedPtrTest, CustomDeleter) { TEST(ScopedPtrTest, CustomDeleter) {
double dummy_value; // Custom deleter never touches this value. double dummy_value; // Custom deleter never touches this value.
int deletes = 0; int deletes = 0;
......
...@@ -191,12 +191,6 @@ def CheckScopedPtr(input_api, output_api, ...@@ -191,12 +191,6 @@ def CheckScopedPtr(input_api, output_api,
errors.append(output_api.PresubmitError( errors.append(output_api.PresubmitError(
'%s:%d uses scoped_ptr<T>(). Use nullptr instead.' % '%s:%d uses scoped_ptr<T>(). Use nullptr instead.' %
(f.LocalPath(), line_number))) (f.LocalPath(), line_number)))
# Disallow:
# foo.PassAs<T>();
if re.search(r'\bPassAs<.*?>\(\)', line):
errors.append(output_api.PresubmitError(
'%s:%d uses PassAs<T>(). Use Pass() instead.' %
(f.LocalPath(), line_number)))
return errors return errors
def FindUnquotedQuote(contents, pos): def FindUnquotedQuote(contents, pos):
......
...@@ -1822,7 +1822,7 @@ TEST_F(SSLClientSocketTest, Connect_WithZeroReturn) { ...@@ -1822,7 +1822,7 @@ TEST_F(SSLClientSocketTest, Connect_WithZeroReturn) {
SynchronousErrorStreamSocket* raw_transport = transport.get(); SynchronousErrorStreamSocket* raw_transport = transport.get();
scoped_ptr<SSLClientSocket> sock( scoped_ptr<SSLClientSocket> sock(
CreateSSLClientSocket(transport.PassAs<StreamSocket>(), CreateSSLClientSocket(transport.Pass(),
test_server.host_port_pair(), test_server.host_port_pair(),
kDefaultSSLConfig)); kDefaultSSLConfig));
...@@ -1859,7 +1859,7 @@ TEST_F(SSLClientSocketTest, Read_WithZeroReturn) { ...@@ -1859,7 +1859,7 @@ TEST_F(SSLClientSocketTest, Read_WithZeroReturn) {
SynchronousErrorStreamSocket* raw_transport = transport.get(); SynchronousErrorStreamSocket* raw_transport = transport.get();
scoped_ptr<SSLClientSocket> sock( scoped_ptr<SSLClientSocket> sock(
CreateSSLClientSocket(transport.PassAs<StreamSocket>(), CreateSSLClientSocket(transport.Pass(),
test_server.host_port_pair(), test_server.host_port_pair(),
ssl_config)); ssl_config));
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment