[Lldb-commits] [PATCH] D46783: FileSpec objects that resolve to "." should have "." in m_filename and m_directory empty.

Greg Clayton via lldb-commits lldb-commits at lists.llvm.org
Thu May 17 10:12:01 PDT 2018


The patch in the differential is off, this is the fixed version of this patch?


> On May 17, 2018, at 10:09 AM, Pavel Labath <labath at google.com> wrote:
> 
> This has broken the unit tests. Looks like a bad merge that did not take
> into account the refactoring in r332088.
> On Thu, 17 May 2018 at 17:16, Phabricator via Phabricator <
> reviews at reviews.llvm.org> wrote:
> 
>> This revision was automatically updated to reflect the committed changes.
>> Closed by commit rL332618: FileSpec objects that resolve to "."
> should have "." in m_filename and… (authored by gclayton,
> committed by ).
>> Herald added a subscriber: llvm-commits.
> 
>> Changed prior to commit:
>>    https://reviews.llvm.org/D46783?vs=146434&id=147329#toc
> 
>> Repository:
>>    rL LLVM
> 
>> https://reviews.llvm.org/D46783
> 
>> Files:
>>    lldb/trunk/source/Utility/FileSpec.cpp
>>    lldb/trunk/unittests/Utility/FileSpecTest.cpp
> 
> 
>> Index: lldb/trunk/unittests/Utility/FileSpecTest.cpp
>> ===================================================================
>> --- lldb/trunk/unittests/Utility/FileSpecTest.cpp
>> +++ lldb/trunk/unittests/Utility/FileSpecTest.cpp
>> @@ -199,9 +199,10 @@
>>         {"/..", "/"},
>>         {"/.", "/"},
>>         {"..", ".."},
>> -      {".", ""},
>> +      {".", "."},
>> +      {"", "."},
>>         {"../..", "../.."},
>> -      {"foo/..", ""},
>> +      {"foo/..", "."},
>>         {"foo/../bar", "bar"},
>>         {"../foo/..", ".."},
>>         {"./foo", "foo"},
>> @@ -230,17 +231,18 @@
>>         {R"(\..)", R"(\..)"},
>>         //      {R"(c:..)", R"(c:..)"},
>>         {R"(..)", R"(..)"},
>> -      {R"(.)", R"()"},
>> +      {R"(.)", R"(.)"},
>>         // TODO: fix llvm::sys::path::remove_dots() to return "c:\" below.
>>         {R"(c:..\..)", R"(c:\..\..)"},
>>         {R"(..\..)", R"(..\..)"},
>> -      {R"(foo\..)", R"()"},
>> +      {R"(foo\..)", R"(.)"},
>>         {R"(foo\..\bar)", R"(bar)"},
>>         {R"(..\foo\..)", R"(..)"},
>>         {R"(.\foo)", R"(foo)"},
>>         {R"(.\.\foo)", R"(foo)"},
>>         {R"(..\foo)", R"(..\foo)"},
>>         {R"(..\..\foo)", R"(..\..\foo)"},
>> +      {"", "."},
>>     };
>>     for (auto test : windows_tests) {
>>       EXPECT_EQ(test.second,
>> Index: lldb/trunk/source/Utility/FileSpec.cpp
>> ===================================================================
>> --- lldb/trunk/source/Utility/FileSpec.cpp
>> +++ lldb/trunk/source/Utility/FileSpec.cpp
>> @@ -258,6 +258,14 @@
>>     if (m_style == Style::windows)
>>       std::replace(resolved.begin(), resolved.end(), '\\', '/');
> 
>> +  if (resolved.empty()) {
>> +    // If we have no path after normalization set the path to the current
>> +    // directory. This matches what python does and also a few other path
>> +    // utilities.
>> +    m_filename.SetString(".");
>> +    return;
>> +  }
>> +
>>     m_filename.SetString(llvm::sys::path::filename(resolved, m_style));
>>     llvm::StringRef dir = llvm::sys::path::parent_path(resolved, m_style);
>>     if (!dir.empty())



More information about the lldb-commits mailing list