/home/arjun/llvm-project/llvm/utils/unittest/googletest/include/gtest/internal/custom/raw-ostream.h
| Line | Count | Source (jump to first uncovered line) | 
| 1 |  | //===-- raw-ostream.h - Support for printing using raw_ostream --*- C++ -*-===// | 
| 2 |  | // | 
| 3 |  | // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | 
| 4 |  | // See https://llvm.org/LICENSE.txt for license information. | 
| 5 |  | // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | 
| 6 |  | // | 
| 7 |  | //===----------------------------------------------------------------------===// | 
| 8 |  | // This file is not part of gtest, but extends it to support LLVM libraries. | 
| 9 |  | // This is not a public API for testing - it's a detail of LLVM's gtest. | 
| 10 |  | // | 
| 11 |  | // gtest allows providing printers for custom types by defining operator<<. | 
| 12 |  | // In LLVM, operator<< usually takes llvm:raw_ostream& instead of std::ostream&. | 
| 13 |  | // | 
| 14 |  | // This file defines a template printable(V), which returns a version of V that | 
| 15 |  | // can be streamed into a std::ostream. | 
| 16 |  | // | 
| 17 |  | // This interface is chosen so that in the default case (printable(V) is V), | 
| 18 |  | // the main gtest code calls operator<<(OS, V) itself. gtest-printers carefully | 
| 19 |  | // controls the lookup to enable fallback printing (see testing::internal2). | 
| 20 |  | //===----------------------------------------------------------------------===// | 
| 21 |  |  | 
| 22 |  | #ifndef GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_RAW_OSTREAM_H_ | 
| 23 |  | #define GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_RAW_OSTREAM_H_ | 
| 24 |  |  | 
| 25 |  | namespace llvm_gtest { | 
| 26 |  | // StreamSwitch is a trait that tells us how to stream a T into a std::ostream. | 
| 27 |  | // By default, we just stream the T directly. We'll specialize this later. | 
| 28 |  | template <typename T, typename Enable = void> struct StreamSwitch { | 
| 29 | 0 |   static const T& printable(const T& V) { return V; }Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIN7testing14TestPartResultEvE9printableERKS2_Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIN7testing7MessageEvE9printableERKS2_ | 
| 30 |  | }; | 
| 31 |  |  | 
| 32 |  | // printable() returns a version of its argument that can be streamed into a | 
| 33 |  | // std::ostream. This may be the argument itself, or some other representation. | 
| 34 | 690 | template <typename T> decltype(auto) printable(const T &V) { | 
| 35 | 690 |   // We delegate to the trait, to allow partial specialization. | 
| 36 | 690 |   return StreamSwitch<T>::printable(V); | 
| 37 | 690 | } _ZN10llvm_gtest9printableIlEEDcRKT_| Line | Count | Source |  | 34 | 4 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 4 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 4 |   return StreamSwitch<T>::printable(V); |  | 37 | 4 | } | 
_ZN10llvm_gtest9printableIiEEDcRKT_| Line | Count | Source |  | 34 | 16 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 16 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 16 |   return StreamSwitch<T>::printable(V); |  | 37 | 16 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA12_cEEDcRKT__ZN10llvm_gtest9printableIPKcEEDcRKT_| Line | Count | Source |  | 34 | 32 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 32 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 32 |   return StreamSwitch<T>::printable(V); |  | 37 | 32 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA3_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA5_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableImEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA9_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA256_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA53_cEEDcRKT__ZN10llvm_gtest9printableIxEEDcRKT_| Line | Count | Source |  | 34 | 16 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 16 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 16 |   return StreamSwitch<T>::printable(V); |  | 37 | 16 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA11_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA2_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA10_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIN7testing14TestPartResultEEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA14_cEEDcRKT__ZN10llvm_gtest9printableIcEEDcRKT_| Line | Count | Source |  | 34 | 588 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 588 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 588 |   return StreamSwitch<T>::printable(V); |  | 37 | 588 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA17_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA18_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA15_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA13_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIdEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA29_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA40_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA64_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA59_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA24_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA6_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA30_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA39_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA62_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA31_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA63_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA37_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA68_cEEDcRKT__ZN10llvm_gtest9printableIA7_cEEDcRKT_| Line | Count | Source |  | 34 | 32 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 32 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 32 |   return StreamSwitch<T>::printable(V); |  | 37 | 32 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA4_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA8_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA41_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA19_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA48_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA16_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA35_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA21_cEEDcRKT__ZN10llvm_gtest9printableIPcEEDcRKT_| Line | Count | Source |  | 34 | 2 | template <typename T> decltype(auto) printable(const T &V) { |  | 35 | 2 |   // We delegate to the trait, to allow partial specialization. |  | 36 | 2 |   return StreamSwitch<T>::printable(V); |  | 37 | 2 | } | 
Unexecuted instantiation: _ZN10llvm_gtest9printableIA25_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA22_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA28_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA33_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA47_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA51_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA52_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIN7testing7MessageEEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA50_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA20_cEEDcRKT_Unexecuted instantiation: _ZN10llvm_gtest9printableIA34_cEEDcRKT_ | 
| 38 |  | } // namespace llvm_gtest | 
| 39 |  |  | 
| 40 |  | // If raw_ostream support is enabled, we specialize for types with operator<< | 
| 41 |  | // that takes a raw_ostream. | 
| 42 |  | #if !GTEST_NO_LLVM_SUPPORT | 
| 43 |  | #include "llvm/ADT/Optional.h" | 
| 44 |  | #include "llvm/Support/raw_os_ostream.h" | 
| 45 |  | #include "llvm/Support/raw_ostream.h" | 
| 46 |  | #include <ostream> | 
| 47 |  | namespace llvm_gtest { | 
| 48 |  |  | 
| 49 |  | // The printable() of a raw_ostream-enabled type T is a RawStreamProxy<T>. | 
| 50 |  | // It uses raw_os_ostream to write the wrapped value to a std::ostream. | 
| 51 |  | template <typename T> | 
| 52 |  | struct RawStreamProxy { | 
| 53 |  |   const T& V; | 
| 54 | 690 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { | 
| 55 | 690 |     llvm::raw_os_ostream OS(S); | 
| 56 | 690 |     OS << V.V; | 
| 57 | 690 |     return S; | 
| 58 | 690 |   } _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIlEE| Line | Count | Source |  | 54 | 4 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 4 |     llvm::raw_os_ostream OS(S); |  | 56 | 4 |     OS << V.V; |  | 57 | 4 |     return S; |  | 58 | 4 |   } | 
_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIiEE| Line | Count | Source |  | 54 | 16 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 16 |     llvm::raw_os_ostream OS(S); |  | 56 | 16 |     OS << V.V; |  | 57 | 16 |     return S; |  | 58 | 16 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA12_cEE_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIPKcEE| Line | Count | Source |  | 54 | 32 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 32 |     llvm::raw_os_ostream OS(S); |  | 56 | 32 |     OS << V.V; |  | 57 | 32 |     return S; |  | 58 | 32 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA3_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA5_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyImEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA9_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA256_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA53_cEE_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIxEE| Line | Count | Source |  | 54 | 16 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 16 |     llvm::raw_os_ostream OS(S); |  | 56 | 16 |     OS << V.V; |  | 57 | 16 |     return S; |  | 58 | 16 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA11_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA2_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA10_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA14_cEE_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIcEE| Line | Count | Source |  | 54 | 588 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 588 |     llvm::raw_os_ostream OS(S); |  | 56 | 588 |     OS << V.V; |  | 57 | 588 |     return S; |  | 58 | 588 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA17_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA18_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA15_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA13_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIdEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA29_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA40_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA64_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA59_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA24_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA6_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA30_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA39_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA62_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA31_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA63_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA37_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA68_cEE_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA7_cEE| Line | Count | Source |  | 54 | 32 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 32 |     llvm::raw_os_ostream OS(S); |  | 56 | 32 |     OS << V.V; |  | 57 | 32 |     return S; |  | 58 | 32 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA4_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA8_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA41_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA19_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA48_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA16_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA35_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA21_cEE_ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIPcEE| Line | Count | Source |  | 54 | 2 |   friend std::ostream &operator<<(std::ostream &S, const RawStreamProxy<T> &V) { |  | 55 | 2 |     llvm::raw_os_ostream OS(S); |  | 56 | 2 |     OS << V.V; |  | 57 | 2 |     return S; |  | 58 | 2 |   } | 
Unexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA25_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA22_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA28_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA33_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA47_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA51_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA52_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA50_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA20_cEEUnexecuted instantiation: _ZN10llvm_gtestlsERSoRKNS_14RawStreamProxyIA34_cEE | 
| 59 |  | }; | 
| 60 |  |  | 
| 61 |  | // We enable raw_ostream treatment if `(raw_ostream&) << (const T&)` is valid. | 
| 62 |  | // We don't want implicit conversions on the RHS (e.g. to bool!), so "consume" | 
| 63 |  | // the possible conversion by passing something convertible to const T& instead. | 
| 64 |  | template <typename T> struct ConvertibleTo { operator T(); }; | 
| 65 |  | template <typename T> | 
| 66 |  | struct StreamSwitch<T, decltype((void)(std::declval<llvm::raw_ostream &>() | 
| 67 |  |                                        << ConvertibleTo<const T &>()))> { | 
| 68 | 690 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; }_ZN10llvm_gtest12StreamSwitchIlvE9printableERKl| Line | Count | Source |  | 68 | 4 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
_ZN10llvm_gtest12StreamSwitchIivE9printableERKi| Line | Count | Source |  | 68 | 16 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA12_cvE9printableERA12_Kc_ZN10llvm_gtest12StreamSwitchIPKcvE9printableERKS2_| Line | Count | Source |  | 68 | 32 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA3_cvE9printableERA3_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchINSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEvE9printableERKS6_Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA5_cvE9printableERA5_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchImvE9printableERKmUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA9_cvE9printableERA9_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA256_cvE9printableERA256_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA53_cvE9printableERA53_Kc_ZN10llvm_gtest12StreamSwitchIxvE9printableERKx| Line | Count | Source |  | 68 | 16 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA11_cvE9printableERA11_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA2_cvE9printableERA2_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA10_cvE9printableERA10_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA14_cvE9printableERA14_Kc_ZN10llvm_gtest12StreamSwitchIcvE9printableERKc| Line | Count | Source |  | 68 | 588 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA17_cvE9printableERA17_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA18_cvE9printableERA18_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA15_cvE9printableERA15_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA13_cvE9printableERA13_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIdvE9printableERKdUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA29_cvE9printableERA29_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA40_cvE9printableERA40_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA64_cvE9printableERA64_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA59_cvE9printableERA59_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA24_cvE9printableERA24_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA6_cvE9printableERA6_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA30_cvE9printableERA30_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA39_cvE9printableERA39_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA62_cvE9printableERA62_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA31_cvE9printableERA31_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA63_cvE9printableERA63_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA37_cvE9printableERA37_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA68_cvE9printableERA68_Kc_ZN10llvm_gtest12StreamSwitchIA7_cvE9printableERA7_Kc| Line | Count | Source |  | 68 | 32 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA4_cvE9printableERA4_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA8_cvE9printableERA8_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA41_cvE9printableERA41_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA19_cvE9printableERA19_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA48_cvE9printableERA48_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA16_cvE9printableERA16_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA35_cvE9printableERA35_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA21_cvE9printableERA21_Kc_ZN10llvm_gtest12StreamSwitchIPcvE9printableERKS1_| Line | Count | Source |  | 68 | 2 |   static const RawStreamProxy<T> printable(const T &V) { return {V}; } | 
Unexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA25_cvE9printableERA25_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA22_cvE9printableERA22_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA28_cvE9printableERA28_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA33_cvE9printableERA33_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA47_cvE9printableERA47_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA51_cvE9printableERA51_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA52_cvE9printableERA52_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA50_cvE9printableERA50_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA20_cvE9printableERA20_KcUnexecuted instantiation: _ZN10llvm_gtest12StreamSwitchIA34_cvE9printableERA34_Kc | 
| 69 |  | }; | 
| 70 |  |  | 
| 71 |  | // llvm::Optional has a template operator<<, which means it will not accept any | 
| 72 |  | // implicit conversions, so we need to special-case it here. | 
| 73 |  | template <typename T> | 
| 74 |  | struct StreamSwitch<llvm::Optional<T>, | 
| 75 |  |                     decltype((void)(std::declval<llvm::raw_ostream &>() | 
| 76 |  |                                     << std::declval<llvm::Optional<T>>()))> { | 
| 77 |  |   static const RawStreamProxy<llvm::Optional<T>> | 
| 78 |  |   printable(const llvm::Optional<T> &V) { | 
| 79 |  |     return {V}; | 
| 80 |  |   } | 
| 81 |  | }; | 
| 82 |  | } // namespace llvm_gtest | 
| 83 |  | #endif  // !GTEST_NO_LLVM_SUPPORT | 
| 84 |  |  | 
| 85 |  | #endif // GTEST_INCLUDE_GTEST_INTERNAL_CUSTOM_RAW_OSTREAM_H_ |