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 @@
//
// scoped_ptr<Foo> foo(new Foo());
// 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_
#define BASE_MEMORY_SCOPED_PTR_H_
......@@ -436,17 +426,6 @@ class scoped_ptr {
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:
// Needed to reach into |impl_| in the constructor.
template <typename U, typename V> friend class scoped_ptr;
......
......@@ -94,11 +94,6 @@ scoped_ptr<ConDecLogger> TestReturnOfType(int* constructed) {
return scoped_ptr<ConDecLogger>(new ConDecLogger(constructed));
}
scoped_ptr<ConDecLoggerParent> UpcastUsingPassAs(
scoped_ptr<ConDecLogger> object) {
return object.PassAs<ConDecLoggerParent>();
}
} // namespace
TEST(ScopedPtrTest, ScopedPtr) {
......@@ -462,22 +457,6 @@ TEST(ScopedPtrTest, ReturnTypeBehavior) {
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) {
double dummy_value; // Custom deleter never touches this value.
int deletes = 0;
......
......@@ -191,12 +191,6 @@ def CheckScopedPtr(input_api, output_api,
errors.append(output_api.PresubmitError(
'%s:%d uses scoped_ptr<T>(). Use nullptr instead.' %
(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
def FindUnquotedQuote(contents, pos):
......
......@@ -1822,7 +1822,7 @@ TEST_F(SSLClientSocketTest, Connect_WithZeroReturn) {
SynchronousErrorStreamSocket* raw_transport = transport.get();
scoped_ptr<SSLClientSocket> sock(
CreateSSLClientSocket(transport.PassAs<StreamSocket>(),
CreateSSLClientSocket(transport.Pass(),
test_server.host_port_pair(),
kDefaultSSLConfig));
......@@ -1859,7 +1859,7 @@ TEST_F(SSLClientSocketTest, Read_WithZeroReturn) {
SynchronousErrorStreamSocket* raw_transport = transport.get();
scoped_ptr<SSLClientSocket> sock(
CreateSSLClientSocket(transport.PassAs<StreamSocket>(),
CreateSSLClientSocket(transport.Pass(),
test_server.host_port_pair(),
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