[Lldb-commits] [lldb] r342424 - Revert "[DataFormatters] Add formatter for C++17 std::variant"

Shafik Yaghmour via lldb-commits lldb-commits at lists.llvm.org
Mon Sep 17 16:15:35 PDT 2018


Author: shafik
Date: Mon Sep 17 16:15:35 2018
New Revision: 342424

URL: http://llvm.org/viewvc/llvm-project?rev=342424&view=rev
Log:
Revert "[DataFormatters] Add formatter for C++17 std::variant"

This reverts commit r342421.

Because it breaks build bot http://green.lab.llvm.org/green/job/lldb-cmake-clang-5.0.2//418/console

Removed:
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
    lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/main.cpp
    lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp
    lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.h
Modified:
    lldb/trunk/lldb.xcodeproj/project.pbxproj
    lldb/trunk/source/Plugins/Language/CPlusPlus/CMakeLists.txt
    lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
    lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.h

Modified: lldb/trunk/lldb.xcodeproj/project.pbxproj
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/lldb.xcodeproj/project.pbxproj?rev=342424&r1=342423&r2=342424&view=diff
==============================================================================
--- lldb/trunk/lldb.xcodeproj/project.pbxproj (original)
+++ lldb/trunk/lldb.xcodeproj/project.pbxproj Mon Sep 17 16:15:35 2018
@@ -401,8 +401,6 @@
 		AF9FF1F71FAA79FE00474976 /* LibCxxQueue.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */; };
 		AF9FF1F51FAA79A400474976 /* LibCxxTuple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */; };
 		945261C41B9A11FC00BF138D /* LibCxxUnorderedMap.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */; };
-		E414F6F121388F6C00C50BC6 /* LibCxxVariant.cpp in Sources */ = {isa = PBXBuildFile; fileRef = E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */; };
-		E414F6EE21388F0300C50BC6 /* LibCxxVariant.h in Headers */ = {isa = PBXBuildFile; fileRef = E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */; };
 		945261C51B9A11FC00BF138D /* LibCxxVector.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BB1B9A11E800BF138D /* LibCxxVector.cpp */; };
 		945261C61B9A11FC00BF138D /* LibStdcpp.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 945261BC1B9A11E800BF138D /* LibStdcpp.cpp */; };
 		4CDB8D6E1DBA91B6006C5B13 /* LibStdcppTuple.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 4CDB8D681DBA91A6006C5B13 /* LibStdcppTuple.cpp */; };
@@ -2058,8 +2056,6 @@
 		AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxQueue.cpp; path = Language/CPlusPlus/LibCxxQueue.cpp; sourceTree = "<group>"; };
 		AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxTuple.cpp; path = Language/CPlusPlus/LibCxxTuple.cpp; sourceTree = "<group>"; };
 		945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxUnorderedMap.cpp; path = Language/CPlusPlus/LibCxxUnorderedMap.cpp; sourceTree = "<group>"; };
-		E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxVariant.cpp; path = Language/CPlusPlus/LibCxxVariant.cpp; sourceTree = "<group>"; };
-		E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = LibCxxVariant.h; path = Language/CPlusPlus/LibCxxVariant.h; sourceTree = "<group>"; };
 		945261BB1B9A11E800BF138D /* LibCxxVector.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibCxxVector.cpp; path = Language/CPlusPlus/LibCxxVector.cpp; sourceTree = "<group>"; };
 		945261BC1B9A11E800BF138D /* LibStdcpp.cpp */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.cpp; name = LibStdcpp.cpp; path = Language/CPlusPlus/LibStdcpp.cpp; sourceTree = "<group>"; };
 		945261BD1B9A11E800BF138D /* LibStdcpp.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; name = LibStdcpp.h; path = Language/CPlusPlus/LibStdcpp.h; sourceTree = "<group>"; };
@@ -6479,8 +6475,6 @@
 				AF9FF1F61FAA79FE00474976 /* LibCxxQueue.cpp */,
 				AF9FF1F41FAA79A400474976 /* LibCxxTuple.cpp */,
 				945261BA1B9A11E800BF138D /* LibCxxUnorderedMap.cpp */,
-				E414F6ED21388F0200C50BC6 /* LibCxxVariant.h */,
-				E414F6F021388F6B00C50BC6 /* LibCxxVariant.cpp */,
 				945261BB1B9A11E800BF138D /* LibCxxVector.cpp */,
 				945261BD1B9A11E800BF138D /* LibStdcpp.h */,
 				945261BC1B9A11E800BF138D /* LibStdcpp.cpp */,
@@ -7087,7 +7081,6 @@
 				6D0F614F1C80AB0C00A4ECEE /* JavaLanguageRuntime.h in Headers */,
 				AF27AD561D3603EA00CF2833 /* DynamicLoaderDarwin.h in Headers */,
 				AFCB2BBE1BF577F40018B553 /* PythonExceptionState.h in Headers */,
-				E414F6EE21388F0300C50BC6 /* LibCxxVariant.h in Headers */,
 				267F684B1CC02DED0086832B /* ABISysV_s390x.h in Headers */,
 				AF8AD6311BEC28A400150209 /* PlatformAppleWatchSimulator.h in Headers */,
 			);
@@ -7943,7 +7936,6 @@
 				AF0C112818580CD800C4C45B /* QueueItem.cpp in Sources */,
 				AF254E31170CCC33007AE5C9 /* PlatformDarwinKernel.cpp in Sources */,
 				2689004913353E0400698AC0 /* Scalar.cpp in Sources */,
-				E414F6F121388F6C00C50BC6 /* LibCxxVariant.cpp in Sources */,
 				263FDE601A79A01500E68013 /* FormatEntity.cpp in Sources */,
 				AF8AD62E1BEC28A400150209 /* PlatformAppleTVSimulator.cpp in Sources */,
 				2689004A13353E0400698AC0 /* SearchFilter.cpp in Sources */,

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile?rev=342423&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/Makefile (removed)
@@ -1,7 +0,0 @@
-LEVEL = ../../../../../make
-
-CXX_SOURCES := main.cpp
-
-USE_LIBCPP := 1
-include $(LEVEL)/Makefile.rules
-CXXFLAGS += -std=c++17

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py?rev=342423&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/TestDataFormatterLibcxxVariant.py (removed)
@@ -1,81 +0,0 @@
-"""
-Test lldb data formatter subsystem.
-"""
-
-from __future__ import print_function
-
-
-import os
-import time
-import lldb
-from lldbsuite.test.decorators import *
-from lldbsuite.test.lldbtest import *
-from lldbsuite.test import lldbutil
-
-class LibcxxOptionalDataFormatterTestCase(TestBase):
-
-    mydir = TestBase.compute_mydir(__file__)
-
-    @add_test_categories(["libc++"])
-    ## We are skipping clang version less that 5.0 since this test requires -std=c++17
-    @skipIf(oslist=no_match(["macosx"]), compiler="clang", compiler_version=['<', '5.0'])
-    ## We are skipping gcc version less that 5.1 since this test requires -std=c++17
-    @skipIf(compiler="gcc", compiler_version=['<', '5.1'])
-
-    def test_with_run_command(self):
-        """Test that that file and class static variables display correctly."""
-        self.build()
-
-        (self.target, self.process, _, bkpt) = lldbutil.run_to_source_breakpoint(self, '// break here',
-                lldb.SBFileSpec("main.cpp", False))
-
-        self.runCmd( "frame variable has_variant" )
-
-        output = self.res.GetOutput()
-
-        ## The variable has_variant tells us if the test program
-        ## detected we have a sufficient libc++ version to support variant
-        ## false means we do not and therefore should skip the test
-        if output.find("(bool) has_variant = false") != -1 :
-            self.skipTest( "std::variant not supported" )
-
-        lldbutil.continue_to_breakpoint(self.process, bkpt)
-
-        self.expect("frame variable v1",
-                substrs=['v1 =  Active Type = int  {',
-                               'Value = 12',
-                               '}'])
-
-        self.expect("frame variable v1_ref",
-                substrs=['v1_ref =  Active Type = int : {',
-                               'Value = 12',
-                               '}'])
-
-        self.expect("frame variable v_v1",
-                substrs=['v_v1 =  Active Type = std::__1::variant<int, double, char>  {',
-                                 'Value =  Active Type = int  {',
-                                   'Value = 12',
-                                 '}',
-                               '}'])
-
-        lldbutil.continue_to_breakpoint(self.process, bkpt)
-
-        self.expect("frame variable v1",
-                substrs=['v1 =  Active Type = double  {',
-                               'Value = 2',
-                               '}'])
-
-        lldbutil.continue_to_breakpoint(self.process, bkpt)
-
-        self.expect("frame variable v2",
-                substrs=['v2 =  Active Type = double  {',
-                               'Value = 2',
-                               '}'])
-
-        self.expect("frame variable v3",
-                substrs=['v3 =  Active Type = char  {',
-                               'Value = \'A\'',
-                               '}'])
-
-        self.expect("frame variable v_no_value",
-                    substrs=['v_no_value =  No Value'])

Removed: lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/main.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/main.cpp?rev=342423&view=auto
==============================================================================
--- lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/main.cpp (original)
+++ lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/variant/main.cpp (removed)
@@ -1,60 +0,0 @@
-#include <cstdio>
-#include <string>
-#include <vector>
-
-// If we have libc++ 4.0 or greater we should have <variant>
-// According to libc++ C++1z status page https://libcxx.llvm.org/cxx1z_status.html
-#if _LIBCPP_VERSION >= 4000
-#include <variant>
-#define HAVE_VARIANT 1
-#else
-#define HAVE_VARIANT 0
-#endif
-
-struct S {
-  operator int() { throw 42; }
-} ;
-
-
-int main()
-{
-    bool has_variant = HAVE_VARIANT ;
-
-    printf( "%d\n", has_variant ) ; // break here
-
-#if HAVE_VARIANT == 1
-    std::variant<int, double, char> v1;
-    std::variant<int, double, char> &v1_ref = v1;
-    std::variant<int, double, char> v2;
-    std::variant<int, double, char> v3;
-    std::variant<std::variant<int,double,char>> v_v1 ;
-    std::variant<int, double, char> v_no_value;
-
-    v1 = 12; // v contains int
-    v_v1 = v1 ;
-    int i = std::get<int>(v1);
-    printf( "%d\n", i ); // break here
-
-    v2 = 2.0 ;
-    double d = std::get<double>(v2) ;
-    printf( "%f\n", d );
-
-    v3 = 'A' ;
-    char c = std::get<char>(v3) ;
-    printf( "%d\n", c );
-
-    // Checking v1 above and here to make sure we done maintain the incorrect
-    // state when we change its value.
-    v1 = 2.0;
-    d = std::get<double>(v1) ;
-    printf( "%f\n", d ); // break here
-
-     try {
-       v_no_value.emplace<0>(S());
-     } catch( ... ) {}
-
-     printf( "%zu\n", v_no_value.index() ) ;
-#endif
-
-    return 0; // break here
-}

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CMakeLists.txt
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CMakeLists.txt?rev=342424&r1=342423&r2=342424&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/CMakeLists.txt (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/CMakeLists.txt Mon Sep 17 16:15:35 2018
@@ -13,7 +13,6 @@ add_lldb_library(lldbPluginCPlusPlusLang
   LibCxxQueue.cpp
   LibCxxTuple.cpp
   LibCxxUnorderedMap.cpp
-  LibCxxVariant.cpp
   LibCxxVector.cpp
   LibStdcpp.cpp
   LibStdcppTuple.cpp

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp?rev=342424&r1=342423&r2=342424&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/CPlusPlusLanguage.cpp Mon Sep 17 16:15:35 2018
@@ -39,7 +39,6 @@
 #include "CxxStringTypes.h"
 #include "LibCxx.h"
 #include "LibCxxAtomic.h"
-#include "LibCxxVariant.h"
 #include "LibStdcpp.h"
 
 using namespace lldb;
@@ -517,10 +516,6 @@ static void LoadLibCxxFormatters(lldb::T
                   "libc++ std::optional synthetic children",
                   ConstString("^std::__(ndk)?1::optional<.+>(( )?&)?$"),
                   stl_synth_flags, true);
-  AddCXXSynthetic(cpp_category_sp, LibcxxVariantFrontEndCreator,
-                  "libc++ std::variant synthetic children",
-                  ConstString("^std::__(ndk)?1::variant<.+>(( )?&)?$"),
-                  stl_synth_flags, true);
   AddCXXSynthetic(
       cpp_category_sp,
       lldb_private::formatters::LibcxxAtomicSyntheticFrontEndCreator,
@@ -622,11 +617,6 @@ static void LoadLibCxxFormatters(lldb::T
                 "libc++ std::optional summary provider",
                 ConstString("^std::__(ndk)?1::optional<.+>(( )?&)?$"),
                 stl_summary_flags, true);
-  AddCXXSummary(cpp_category_sp,
-                lldb_private::formatters::LibcxxVariantSummaryProvider,
-                "libc++ std::variant summary provider",
-                ConstString("^std::__(ndk)?1::variant<.+>(( )?&)?$"),
-                stl_summary_flags, true);
 
   stl_summary_flags.SetSkipPointers(true);
 

Modified: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.h?rev=342424&r1=342423&r2=342424&view=diff
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.h (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxx.h Mon Sep 17 16:15:35 2018
@@ -142,10 +142,6 @@ SyntheticChildrenFrontEnd *
 LibcxxOptionalFrontEndCreator(CXXSyntheticChildren *,
                               lldb::ValueObjectSP valobj_sp);
 
-SyntheticChildrenFrontEnd *
-LibcxxVariantFrontEndCreator(CXXSyntheticChildren *,
-                             lldb::ValueObjectSP valobj_sp);
-
 } // namespace formatters
 } // namespace lldb_private
 

Removed: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp?rev=342423&view=auto
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.cpp (removed)
@@ -1,273 +0,0 @@
-//===-- LibCxxVariant.cpp --------------------------------------*- C++ -*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#include "LibCxxVariant.h"
-#include "lldb/DataFormatters/FormattersHelpers.h"
-
-#include "llvm/ADT/Optional.h"
-#include "llvm/ADT/ScopeExit.h"
-
-using namespace lldb;
-using namespace lldb_private;
-
-// libc++ variant implementation contains two members that we care about both
-// are contained in the __impl member.
-// - __index which tells us which of the variadic template types is the active
-//   type for the variant
-// - __data is a variadic union which recursively contains itself as member
-//   which refers to the tailing variadic types.
-//   - __head which refers to the leading non pack type
-//     - __value refers to the actual value contained
-//   - __tail which refers to the remaining pack types
-//
-// e.g. given std::variant<int,double,char> v1
-//
-// (lldb) frame var -R v1.__impl.__data
-//(... __union<... 0, int, double, char>) v1.__impl.__data = {
-// ...
-//  __head = {
-//    __value = ...
-//  }
-//  __tail = {
-//  ...
-//    __head = {
-//      __value = ...
-//    }
-//    __tail = {
-//    ...
-//      __head = {
-//        __value = ...
-//  ...
-//
-// So given
-// - __index equal to 0 the active value is contained in
-//
-//     __data.__head.__value
-//
-// - __index equal to 1 the active value is contained in
-//
-//     __data.__tail.__head.__value
-//
-// - __index equal to 2 the active value is contained in
-//
-//      __data.__tail.__tail.__head.__value
-//
-
-namespace {
-// libc++ std::variant index could have one of three states
-// 1) VALID, we can obtain it and its not variant_npos
-// 2) INVALID, we can't obtain it or it is not a type we expect
-// 3) NPOS, its value is variant_npos which means the variant has no value
-enum class LibcxxVariantIndexValidity { VALID, INVALID, NPOS };
-
-LibcxxVariantIndexValidity
-LibcxxVariantGetIndexValidity(ValueObjectSP &impl_sp) {
-  ValueObjectSP index_sp(
-      impl_sp->GetChildMemberWithName(ConstString("__index"), true));
-
-  if (!index_sp)
-    return LibcxxVariantIndexValidity::INVALID;
-
-  int64_t index_value = index_sp->GetValueAsSigned(0);
-
-  CompilerType index_compiler_type = index_sp->GetCompilerType();
-
-  // We are expecting two layers of typedefs before we obtain the basic type
-  // The next two checks verify this.
-  if (!index_compiler_type.IsTypedefType())
-    return LibcxxVariantIndexValidity::INVALID;
-
-  if (!index_compiler_type.GetTypedefedType().IsTypedefType())
-    return LibcxxVariantIndexValidity::INVALID;
-
-  lldb::BasicType index_basic_type = index_compiler_type.GetTypedefedType()
-                                         .GetTypedefedType()
-                                         .GetBasicTypeEnumeration();
-
-  if (index_basic_type == eBasicTypeInvalid)
-    return LibcxxVariantIndexValidity::INVALID;
-
-  if (index_value == -1)
-    return LibcxxVariantIndexValidity::NPOS;
-
-  return LibcxxVariantIndexValidity::VALID;
-}
-
-llvm::Optional<uint64_t> LibcxxVariantIndexValue(ValueObjectSP &impl_sp) {
-  ValueObjectSP index_sp(
-      impl_sp->GetChildMemberWithName(ConstString("__index"), true));
-
-  if (!index_sp)
-    return {};
-
-  return {index_sp->GetValueAsUnsigned(0)};
-}
-
-ValueObjectSP LibcxxVariantGetNthHead(ValueObjectSP &impl_sp, uint64_t index) {
-  ValueObjectSP data_sp(
-      impl_sp->GetChildMemberWithName(ConstString("__data"), true));
-
-  if (!data_sp)
-    return ValueObjectSP{};
-
-  ValueObjectSP current_level = data_sp;
-  for (uint64_t n = index; n != 0; --n) {
-    ValueObjectSP tail_sp(
-        current_level->GetChildMemberWithName(ConstString("__tail"), true));
-
-    if (!tail_sp)
-      return ValueObjectSP{};
-
-    current_level = tail_sp;
-  }
-
-  return current_level->GetChildMemberWithName(ConstString("__head"), true);
-};
-} // namespace
-
-namespace lldb_private {
-namespace formatters {
-bool LibcxxVariantSummaryProvider(ValueObject &valobj, Stream &stream,
-                                  const TypeSummaryOptions &options) {
-  ValueObjectSP valobj_sp(valobj.GetNonSyntheticValue());
-  if (!valobj_sp)
-    return false;
-
-  ValueObjectSP impl_sp(
-      valobj_sp->GetChildMemberWithName(ConstString("__impl"), true));
-
-  if (!impl_sp)
-    return false;
-
-  LibcxxVariantIndexValidity validity = LibcxxVariantGetIndexValidity(impl_sp);
-
-  if (validity == LibcxxVariantIndexValidity::INVALID)
-    return false;
-
-  if (validity == LibcxxVariantIndexValidity::NPOS) {
-    stream.Printf(" No Value");
-    return true;
-  }
-
-  auto optional_index_value = LibcxxVariantIndexValue(impl_sp);
-
-  if (!optional_index_value)
-    return false;
-
-  uint64_t index_value = *optional_index_value;
-
-  ValueObjectSP nth_head = LibcxxVariantGetNthHead(impl_sp, index_value);
-
-  if (!nth_head)
-    return false;
-
-  CompilerType head_type = nth_head->GetCompilerType();
-
-  if (!head_type)
-    return false;
-
-  CompilerType template_type = head_type.GetTypeTemplateArgument(1);
-
-  if (!template_type)
-    return false;
-
-  stream.Printf(" Active Type = %s ", template_type.GetTypeName().GetCString());
-
-  return true;
-}
-} // namespace formatters
-} // namespace lldb_private
-
-namespace {
-class VariantFrontEnd : public SyntheticChildrenFrontEnd {
-public:
-  VariantFrontEnd(ValueObject &valobj) : SyntheticChildrenFrontEnd(valobj) {
-    Update();
-  }
-
-  size_t GetIndexOfChildWithName(const ConstString &name) override {
-    return formatters::ExtractIndexFromString(name.GetCString());
-  }
-
-  bool MightHaveChildren() override { return true; }
-  bool Update() override;
-  size_t CalculateNumChildren() override { return m_size; }
-  ValueObjectSP GetChildAtIndex(size_t idx) override;
-
-private:
-  size_t m_size = 0;
-  ValueObjectSP m_base_sp;
-};
-} // namespace
-
-bool VariantFrontEnd::Update() {
-  m_size = 0;
-  ValueObjectSP impl_sp(
-      m_backend.GetChildMemberWithName(ConstString("__impl"), true));
-  if (!impl_sp)
-    return false;
-
-  LibcxxVariantIndexValidity validity = LibcxxVariantGetIndexValidity(impl_sp);
-
-  if (validity == LibcxxVariantIndexValidity::INVALID)
-    return false;
-
-  if (validity == LibcxxVariantIndexValidity::NPOS)
-    return true;
-
-  m_size = 1;
-
-  return false;
-}
-
-ValueObjectSP VariantFrontEnd::GetChildAtIndex(size_t idx) {
-  if (idx >= m_size)
-    return ValueObjectSP();
-
-  ValueObjectSP impl_sp(
-      m_backend.GetChildMemberWithName(ConstString("__impl"), true));
-
-  auto optional_index_value = LibcxxVariantIndexValue(impl_sp);
-
-  if (!optional_index_value)
-    return ValueObjectSP();
-
-  uint64_t index_value = *optional_index_value;
-
-  ValueObjectSP nth_head = LibcxxVariantGetNthHead(impl_sp, index_value);
-
-  if (!nth_head)
-    return ValueObjectSP();
-
-  CompilerType head_type = nth_head->GetCompilerType();
-
-  if (!head_type)
-    return ValueObjectSP();
-
-  CompilerType template_type = head_type.GetTypeTemplateArgument(1);
-
-  if (!template_type)
-    return ValueObjectSP();
-
-  ValueObjectSP head_value(
-      nth_head->GetChildMemberWithName(ConstString("__value"), true));
-
-  if (!head_value)
-    return ValueObjectSP();
-
-  return head_value->Clone(ConstString(ConstString("Value").AsCString()));
-}
-
-SyntheticChildrenFrontEnd *
-formatters::LibcxxVariantFrontEndCreator(CXXSyntheticChildren *,
-                                         lldb::ValueObjectSP valobj_sp) {
-  if (valobj_sp)
-    return new VariantFrontEnd(*valobj_sp);
-  return nullptr;
-}

Removed: lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.h?rev=342423&view=auto
==============================================================================
--- lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.h (original)
+++ lldb/trunk/source/Plugins/Language/CPlusPlus/LibCxxVariant.h (removed)
@@ -1,31 +0,0 @@
-//===-- LibCxxVariant.h -------------------------------------------*- C++
-//-*-===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-
-#ifndef liblldb_LibCxxVariant_h_
-#define liblldb_LibCxxVariant_h_
-
-#include "lldb/Core/ValueObject.h"
-#include "lldb/DataFormatters/TypeSummary.h"
-#include "lldb/DataFormatters/TypeSynthetic.h"
-#include "lldb/Utility/Stream.h"
-
-namespace lldb_private {
-namespace formatters {
-bool LibcxxVariantSummaryProvider(
-    ValueObject &valobj, Stream &stream,
-    const TypeSummaryOptions &options); // libc++ std::variant<>
-
-SyntheticChildrenFrontEnd *LibcxxVariantFrontEndCreator(CXXSyntheticChildren *,
-                                                        lldb::ValueObjectSP);
-
-} // namespace formatters
-} // namespace lldb_private
-
-#endif // liblldb_LibCxxVariant_h_




More information about the lldb-commits mailing list