vsk added a comment.

In https://reviews.llvm.org/D43912#1023078, @jingham wrote:

> In https://reviews.llvm.org/D43912#1022916, @aprantl wrote:
>
> > > Going forward, we should transition to a model in which CompilerTypes are 
> > > either valid or do not exist.
> >
> > I don't understand very well how the LLDB type system works so excuse my 
> > naive questions: Does this account for lazyness? I.e., could there be value 
> > in having an unverified type that might be sufficient for what LLDB is 
> > trying to do with it, where validating it (which may involve recursively 
> > materializing all of its children) might fail? I could imagine that for 
> > some use-cases just knowing the size of a type would be sufficient.
> >  I guess what I'm trying to say is: Are there code paths in LLDB that do 
> > something useful with a type where `type.IsValid()==false` ?
>


If we discover code like this, transitioning the code into a model where types 
are force-checked will require caution, but would still be possible/desirable. 
For example, we could refactor the operations on invalid type s.t they use a 
different type, i.e one without the same validity requirement as CompilerType.

> No, I don't think so.  Laziness might make a type go from valid (we only got 
> the forward type) to invalid if the attempt to complete it fails for some 
> reason (base class missing, for instance).  But a not yet fully completed 
> type will call itself valid, not invalid.

Thanks for the explanation Jim!


https://reviews.llvm.org/D43912



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

Reply via email to