================
@@ -4210,6 +4215,7 @@ class Parser : public CodeCompletionHandler {
/// \endverbatim
ExprResult ParseParenExpression(ParenParseOption &ExprType,
bool stopIfCastExpr, bool isTypeCast,
+ bool ParenKnownToBeNonCast,
----------------
AaronBallman wrote:
> Actually on that note, TypeCastState is a thing. Can we just merge this
> parameter with the isTypeCast one and make it a TypeCastState?
`TypeCastState` is cursed in that it doesn't mean what you might think it
means:
https://github.com/llvm/llvm-project/commit/77e21fca3cd1a9db882ac13ac5ddef3f278dfff2
So it doesn't mean "this is, is not, or maybe a cast expression", it means "if
there's a typo, should we allow type names or not?" I verified this is not
vestigial code after delayed typo correction was removed; it's still used for
typo correction today. We probably should rename some stuff to make this far
more clear though, because your suggestion is what I initially tried to
implement and broke approximately every test in the suite.
> How about introducing a new enumeration here?
Given that there's three bools in a row, yeah, that's not a bad idea.
How about this for a solution:
1) Rename `TypeCastState` to `TypoCorrectionTypeBehavior`
2) Rename `NotTypeCast`, `IsTypeCast`, and `MaybeTypeCast` to `AllowNonTypes,
`AllowTypes`, and `AllowBoth`
3) Add a new enumeration `TypeCastState` with members `IsTypeCast`,
`IsNotTypeCast`, and `Unknown`
4) Change `ParseParenExpression` to take both a `TypoCorrectionTypeBehavior`
and a `TypeCastState`.
WDYT?
https://github.com/llvm/llvm-project/pull/146394
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits