sammccall added a comment.

Nice!

Yet another case of "do we need to stop here" though. Do you have a doc or bug 
or somewhere to collect the different directions we could/should extend in?



================
Comment at: clang/lib/Sema/SemaDecl.cpp:11852
+      // There are unresolved typos in Init. Usually it indicates the
+      // initializer is very ill-formed, just drop it.
       RealDecl->setInvalidDecl();
----------------
Do you have an example to back this up? (Not to include in the comment, just 
curious).

ISTM when there are errors in the input, you can get "lucky" and they turn into 
recoveryexpr and survive here, or you get "unlucky" and they turn into typoexpr 
and are dropped here after correction fails. And lucky/unlucky might mostly 
depend on details about the type of error, not how ill-formed the code is?

This suggests two possible recovery strategies:
 - if CorrectDelayedTyposInExpr fails typo-correction, it could rebuild with 
the typos "degraded" to RecoveryExpr of some sort
 - or we could just wrap `Init` in `RecoveryExpr`, TypoExprs and all. With the 
assumption that stuff that doesn't handle TypoExpr should either treate 
RecoveryExpr as opaque or should bail out at the top-level based on 
ContainsErrors.

The former seems more precise and more general, probably more work too.

None of this needs to be addressed in this patch except maybe a FIXME and/or a 
tweak to the existing comment.


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D78365



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

Reply via email to