felipepiovezan wrote:

> > This LGTM!
> > I don't think I can see far enough ahead on what you are planning here, but 
> > I was just wondering if the ultimate goal is to have the 
> > `option_arg.getAsT` return an `Expected<T>`. In this case, wouldn't all 
> > these arguments (short option, long option, additional context) have to be 
> > part of the interface of `getAsT`? I suspect this is not your goal, but I 
> > can't see a way around that
> 
> The ultimate goal is to have option parsing be much more streamlined and 
> automated. The majority of option parsing is just taking some primitive value 
> and trying to grab its value from a string. There are places where we need 
> additional context (e.g. in this PR, there's a place where we want to select 
> a thread ID so there's more validation needed). I want to be able to write 
> those pretty naturally too.
> 
> The first step in my plan is to centralize how we create error messages. The 
> majority of parsing errors will be "I couldn't turn this into a 
> boolean/integer/address/other", so I'm going to create something that is 
> better than what we have today. The step after that will be to revamp the 
> parsing step. Ideally instead of writing `OptionArgParser::ToBoolean` the way 
> we do today, there will be something like `llvm::Expected<bool> 
> value_or_error = ParseAsBool(option);` where `option` is the actual 
> OptionDefinition. I'm not tied to these abstractions, but I am committed to 
> the path of making this easier to write and maintain.


Ohhh I think I see it now!

> where `option` is the actual OptionDefinition

And the `option` itself would know how to report / construct the error strings?


https://github.com/llvm/llvm-project/pull/82273
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to