Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[lldb] Fix SourceManager::SourceFileCache insertion
Summary: Lookup and subsequent insert was done using uninitialized FileSpec object, which caused the cache to be a no-op. Bug: llvm.org/PR45310 Depends on D76804. Reviewers: labath, JDevlieghere Reviewed By: labath Subscribers: mgorny, jingham, lldb-commits Tags: #lldb Differential Revision: https://reviews.llvm.org/D76805
- Loading branch information
1 parent
acae69d
commit 1f820fa
Showing
3 changed files
with
50 additions
and
1 deletion.
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
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,48 @@ | ||
//===-- SourceManagerTest.cpp ---------------------------------------------===// | ||
// | ||
// 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 "lldb/Core/SourceManager.h" | ||
#include "lldb/Host/FileSystem.h" | ||
#include "gtest/gtest.h" | ||
|
||
using namespace lldb; | ||
using namespace lldb_private; | ||
|
||
class SourceFileCache : public ::testing::Test { | ||
public: | ||
void SetUp() override { FileSystem::Initialize(); } | ||
void TearDown() override { FileSystem::Terminate(); } | ||
}; | ||
|
||
TEST_F(SourceFileCache, FindSourceFileFound) { | ||
SourceManager::SourceFileCache cache; | ||
|
||
// Insert: foo | ||
FileSpec foo_file_spec("foo"); | ||
auto foo_file_sp = | ||
std::make_shared<SourceManager::File>(foo_file_spec, nullptr); | ||
cache.AddSourceFile(foo_file_sp); | ||
|
||
// Query: foo, expect found. | ||
FileSpec another_foo_file_spec("foo"); | ||
ASSERT_EQ(cache.FindSourceFile(another_foo_file_spec), foo_file_sp); | ||
} | ||
|
||
TEST_F(SourceFileCache, FindSourceFileNotFound) { | ||
SourceManager::SourceFileCache cache; | ||
|
||
// Insert: foo | ||
FileSpec foo_file_spec("foo"); | ||
auto foo_file_sp = | ||
std::make_shared<SourceManager::File>(foo_file_spec, nullptr); | ||
cache.AddSourceFile(foo_file_sp); | ||
|
||
// Query: bar, expect not found. | ||
FileSpec bar_file_spec("bar"); | ||
ASSERT_EQ(cache.FindSourceFile(bar_file_spec), nullptr); | ||
} |