[Lldb-commits] [lldb] 1197ee3 - [lldb] Unconditionally strip the `.py(c)` extension when loading a module

Jonas Devlieghere via lldb-commits lldb-commits at lists.llvm.org
Tue Oct 13 23:51:04 PDT 2020


Author: Jonas Devlieghere
Date: 2020-10-13T23:50:57-07:00
New Revision: 1197ee35b84e1fe1c1884b3228b95351719fbb09

URL: https://github.com/llvm/llvm-project/commit/1197ee35b84e1fe1c1884b3228b95351719fbb09
DIFF: https://github.com/llvm/llvm-project/commit/1197ee35b84e1fe1c1884b3228b95351719fbb09.diff

LOG: [lldb] Unconditionally strip the `.py(c)` extension when loading a module

Currently we only strip the Python extension when the file exists on
disk because we assumed that if it didn't exist it was a module.
However, with the change from D89334 this is no longer the case as we
want to be able to import a relative path to a .py as a module. Since we
always import a scripting module as a "python module" we should always
strip the extension if present.

Differential revision: https://reviews.llvm.org/D89352

Added: 
    

Modified: 
    lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp

Removed: 
    


################################################################################
diff  --git a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
index f67572c1f029..17ba2db38b4d 100644
--- a/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
+++ b/lldb/source/Plugins/ScriptInterpreter/Python/ScriptInterpreterPython.cpp
@@ -2797,19 +2797,20 @@ bool ScriptInterpreterPythonImpl::LoadScriptingModule(
         return false;
       }
 
-      // strip .py or .pyc extension
-      ConstString extension = target_file.GetFileNameExtension();
-      if (extension) {
-        if (llvm::StringRef(extension.GetCString()) == ".py")
-          basename.resize(basename.length() - 3);
-        else if (llvm::StringRef(extension.GetCString()) == ".pyc")
-          basename.resize(basename.length() - 4);
-      }
     } else {
       error.SetErrorString("no known way to import this module specification");
       return false;
     }
 
+    // Strip .py or .pyc extension
+    llvm::StringRef extension = target_file.GetFileNameExtension().GetCString();
+    if (!extension.empty()) {
+      if (extension == ".py")
+        basename.resize(basename.length() - 3);
+      else if (extension == ".pyc")
+        basename.resize(basename.length() - 4);
+    }
+
     // check if the module is already import-ed
     command_stream.Clear();
     command_stream.Printf("sys.modules.__contains__('%s')", basename.c_str());


        


More information about the lldb-commits mailing list