lawrence_danna marked 2 inline comments as done.
lawrence_danna added inline comments.


================
Comment at: 
lldb/packages/Python/lldbsuite/test/python_api/file_handle/TestFileHandle.py:854
             files = list(i(sbf))
+            # delete them in reverse order, again because each is a borrow
+            # of the previous.
----------------
mgorny wrote:
> For the record, this doesn't really guarantee specific order of destruction. 
> Generally, in Python code you shouldn't rely on destructors being called at 
> all and close files manually. That's why `with` is commonly used with files.
The point is not to rely on the file being closed at a certain time.   They 
point is that each file added to the list is a borrowed reference to the 
previous one, and we should not allow those references to become dangling by 
letting the older ones go to zero-references before the younger ones.

Now that I say it, I wonder if it was a bad idea to expose this kind of C++ 
object lifetime semantics to python programs.
I put in `GetFile` mainly so that in the case that a SBFile was a proxy of a 
python file, you could get the python file back.

It might be better to restrict it to that case, and return None instead of a 
borrowed file in other cases.

On the other hand, there's value in having a consistent API.  Under the current 
semantics this just works:

```
print("foo",   file=debugger.GetOutputFile().GetFile())
```

Overall I think I'd lean towards keeping GetFile the way it is, but I can see 
the argument for restricting it.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D69488/new/

https://reviews.llvm.org/D69488



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to