diff options
Diffstat (limited to 'source/Core/SourceManager.cpp')
-rw-r--r-- | source/Core/SourceManager.cpp | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/source/Core/SourceManager.cpp b/source/Core/SourceManager.cpp index 324ed34bfaacb..a69e75fe244a2 100644 --- a/source/Core/SourceManager.cpp +++ b/source/Core/SourceManager.cpp @@ -18,7 +18,6 @@ #include "lldb/Core/Module.h" #include "lldb/Core/RegularExpression.h" #include "lldb/Core/Stream.h" -#include "lldb/Symbol/ClangNamespaceDecl.h" #include "lldb/Symbol/CompileUnit.h" #include "lldb/Symbol/Function.h" #include "lldb/Symbol/SymbolContext.h" @@ -83,6 +82,10 @@ SourceManager::GetFile (const FileSpec &file_spec) if (target_sp && file_sp && file_sp->GetSourceMapModificationID() != target_sp->GetSourcePathMap().GetModificationID()) file_sp.reset(); + // Update the file contents if needed if we found a file + if (file_sp) + file_sp->UpdateIfNeeded(); + // If file_sp is no good or it points to a non-existent file, reset it. if (!file_sp || !file_sp->GetFileSpec().Exists()) { @@ -492,8 +495,8 @@ SourceManager::File::LineIsValid (uint32_t line) return false; } -size_t -SourceManager::File::DisplaySourceLines (uint32_t line, uint32_t context_before, uint32_t context_after, Stream *s) +void +SourceManager::File::UpdateIfNeeded () { // TODO: use host API to sign up for file modifications to anything in our // source cache and only update when we determine a file has been updated. @@ -506,7 +509,11 @@ SourceManager::File::DisplaySourceLines (uint32_t line, uint32_t context_before, m_data_sp = m_file_spec.ReadFileContents (); m_offsets.clear(); } +} +size_t +SourceManager::File::DisplaySourceLines (uint32_t line, uint32_t context_before, uint32_t context_after, Stream *s) +{ // Sanity check m_data_sp before proceeding. if (!m_data_sp) return 0; @@ -538,14 +545,6 @@ SourceManager::File::DisplaySourceLines (uint32_t line, uint32_t context_before, void SourceManager::File::FindLinesMatchingRegex (RegularExpression& regex, uint32_t start_line, uint32_t end_line, std::vector<uint32_t> &match_lines) { - TimeValue curr_mod_time (m_file_spec.GetModificationTime()); - if (m_mod_time != curr_mod_time) - { - m_mod_time = curr_mod_time; - m_data_sp = m_file_spec.ReadFileContents (); - m_offsets.clear(); - } - match_lines.clear(); if (!LineIsValid(start_line) || (end_line != UINT32_MAX && !LineIsValid(end_line))) @@ -645,14 +644,14 @@ SourceManager::File::CalculateLineOffsets (uint32_t line) else { // Some lines have been populated, start where we last left off - assert("Not implemented yet" == NULL); + assert("Not implemented yet" && false); } } else { // Calculate all line offsets up to "line" - assert("Not implemented yet" == NULL); + assert("Not implemented yet" && false); } return false; } |