Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Fix GetDIEForDeclContext so it only returns entries matching the prov…
…ided context Currently, we return all the entries such that their decl_ctx pointer >= decl_ctx provided. Instead, we should return only the ones that decl_ctx pointer == decl_ctx provided. Differential Revision: https://reviews.llvm.org/D66357 Patch by Guilherme Andrade <guiandrade@google.com>. llvm-svn: 370374
- Loading branch information
Showing
3 changed files
with
52 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,4 +1,5 @@ | ||
add_lldb_unittest(SymbolFileDWARFTests | ||
DWARFASTParserClangTests.cpp | ||
SymbolFileDWARFTests.cpp | ||
|
||
LINK_LIBS | ||
|
47 changes: 47 additions & 0 deletions
47
lldb/unittests/SymbolFile/DWARF/DWARFASTParserClangTests.cpp
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,47 @@ | ||
//===-- DWARFASTParserClangTests.cpp ----------------------------*- C++ -*-===// | ||
// | ||
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. | ||
// See https://llvm.org/LICENSE.txt for license information. | ||
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception | ||
// | ||
//===----------------------------------------------------------------------===// | ||
|
||
#include "gtest/gtest.h" | ||
|
||
#include "Plugins/SymbolFile/DWARF/DWARFASTParserClang.h" | ||
#include "Plugins/SymbolFile/DWARF/DWARFDIE.h" | ||
|
||
using namespace lldb; | ||
using namespace lldb_private; | ||
|
||
namespace { | ||
class DWARFASTParserClangStub : public DWARFASTParserClang { | ||
public: | ||
using DWARFASTParserClang::DWARFASTParserClang; | ||
using DWARFASTParserClang::LinkDeclContextToDIE; | ||
}; | ||
} // namespace | ||
|
||
// If your implementation needs to dereference the dummy pointers we are | ||
// defining here, causing this test to fail, feel free to delete it. | ||
TEST(DWARFASTParserClangTests, | ||
TestGetDIEForDeclContextReturnsOnlyMatchingEntries) { | ||
ClangASTContext ast_ctx; | ||
DWARFASTParserClangStub ast_parser(ast_ctx); | ||
|
||
DWARFUnit *unit = nullptr; | ||
DWARFDIE die1(unit, (DWARFDebugInfoEntry *)1LL); | ||
DWARFDIE die2(unit, (DWARFDebugInfoEntry *)2LL); | ||
DWARFDIE die3(unit, (DWARFDebugInfoEntry *)3LL); | ||
DWARFDIE die4(unit, (DWARFDebugInfoEntry *)4LL); | ||
ast_parser.LinkDeclContextToDIE((clang::DeclContext *)1LL, die1); | ||
ast_parser.LinkDeclContextToDIE((clang::DeclContext *)2LL, die2); | ||
ast_parser.LinkDeclContextToDIE((clang::DeclContext *)2LL, die3); | ||
ast_parser.LinkDeclContextToDIE((clang::DeclContext *)3LL, die4); | ||
|
||
auto die_list = ast_parser.GetDIEForDeclContext( | ||
CompilerDeclContext(nullptr, (clang::DeclContext *)2LL)); | ||
ASSERT_EQ(2u, die_list.size()); | ||
ASSERT_EQ(die2, die_list[0]); | ||
ASSERT_EQ(die3, die_list[1]); | ||
} |