1f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Copyright (c) 2014 The Chromium Authors. All rights reserved.
2f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// found in the LICENSE file.
4f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
562ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdoch#include "scoped_refptr.h"
6f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
762ed631aa0ff23db68a47fd423efa9c019ff2c9eBen Murdochstruct Foo {
8f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  int dummy;
9f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch};
10f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch
11f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// An example of an unsafe conversion, since the reference is bound to a
12f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// scoped_refptr with local storage. The tool should ignore this, since it
13f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch// should prefer letting a human manually resolve trickier cases like this.
14f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen MurdochFoo* TestFunction() {
15f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  scoped_refptr<Foo> a;
16f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  scoped_refptr<Foo>& b = a;
17f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch  return b;
18f91f0611dbaf29ca0f1d4aecb357ce243a19d2faBen Murdoch}
19