diff --git a/lldb/bindings/interface/SBDebuggerExtensions.i b/lldb/bindings/interface/SBDebuggerExtensions.i index ff2a0359b1363..7895fcdd72468 100644 --- a/lldb/bindings/interface/SBDebuggerExtensions.i +++ b/lldb/bindings/interface/SBDebuggerExtensions.i @@ -45,4 +45,17 @@ STRING_EXTENSION_OUTSIDE(SBDebugger) lldb::FileSP GetErrorFileHandle() { return self->GetErrorFile().GetFile(); } + +#ifdef SWIGPYTHON + %pythoncode %{ + class staticproperty: + def __init__(self, func): + self.func = func + def __get__(self, instance, owner): + return self.func() + @staticproperty + def version(): + return SBDebugger.GetVersionString() + %} +#endif } diff --git a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py index 646ccce36530d..43f45f330ee2a 100644 --- a/lldb/test/API/python_api/debugger/TestDebuggerAPI.py +++ b/lldb/test/API/python_api/debugger/TestDebuggerAPI.py @@ -286,3 +286,11 @@ def remove_bar(dbg_id): ('remove bar ret', False), # remove_bar should fail, because it's already invoked and removed ('foo called', original_dbg_id), # foo should be called ]) + + def test_version(self): + instance_str = self.dbg.GetVersionString() + class_str = lldb.SBDebugger.GetVersionString() + property_str = lldb.SBDebugger.version + + self.assertEqual(instance_str, class_str) + self.assertEqual(class_str, property_str)