[Lldb-commits] [PATCH] D30789: Make file and directory name completion work properly on Windows.
Pavel Labath via Phabricator via lldb-commits
lldb-commits at lists.llvm.org
Fri Mar 10 01:59:30 PST 2017
labath added a comment.
Seems very reasonable. A couple of details I noticed are in the inline comments.
As for the name, I'd suggest just dropping the `2` and letting overload resolution handle that. If we don't need the interpreter argument, then maybe we should aim for removing that overload in the future.
================
Comment at: lldb/include/lldb/Utility/TildeExpressionResolver.h:18
+namespace lldb_private {
+struct TildeExpressionResolver {
+public:
----------------
Is there a reason why one these is a struct and the other a class?
btw, if you move the destructor definition into the .cpp file, it will also serve as a key method.
================
Comment at: lldb/source/Commands/CommandCompletions.cpp:112
+ if (!Resolver)
+ Resolver = &SR;
+
----------------
amccarth wrote:
> This leaves the caller with no way to say the don't want a tilde resolver. I didn't expect that from reading the API. Perhaps a comment on the API could clarify that you're going to get this default behavior if you specify nullptr.
I agree with Adrian.
What do you think about an API like:
`DiskFilesOrDirectories(..., const TildeExpressionResolver &Resolver = StandardTildeExpressionResolver())` ?
================
Comment at: lldb/source/Commands/CommandCompletions.cpp:116
+
+ llvm::SmallString<PATH_MAX> CompletionBuffer;
+ llvm::SmallString<PATH_MAX> Storage;
----------------
in `PosixApi.h` you define PATH_MAX as 32768, which sees a bit too much for a stack object. As this doesn't actually impact correctness, should we use a more down-to-earth value here?
================
Comment at: lldb/source/Commands/CommandCompletions.cpp:167
- if (remainder[0] == '\0' || strstr(name, remainder) == name) {
- if (strlen(name) + parameters->baselen >= PATH_MAX)
- return FileSpec::eEnumerateDirectoryResultNext;
+ // We want to keep the form the user typed, so we special case this to
+ // search
----------------
This comment could use some reformatting.
================
Comment at: lldb/source/Utility/TildeExpressionResolver.cpp:44
+#if defined(LLVM_ON_WIN32)
+ return false;
+#else
----------------
return 0;
================
Comment at: lldb/source/Utility/TildeExpressionResolver.cpp:49
+ struct passwd *user_entry;
+ Expr = Expr.drop_front();
+
----------------
Is this function allowed to be called with an empty `Expr`? The assert above seems to indicate that is the case, but then this will be undefined.
https://reviews.llvm.org/D30789
More information about the lldb-commits
mailing list