[PATCH] D149612: [Sema] avoid merge error type

Sam McCall via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Tue May 16 07:06:22 PDT 2023


sammccall added a comment.

Unless I'm wildly misremembering (@hokein knows better), the type should also be dependent in C.

The intuition is that the code has some meaning that depends on how the error is resolved (by the programmer changing the code!), and that "dependent" is a good first-approximation way to model this (defer further analysis, suppress diagnostics) and "contains-errors" allows us to specifically handle the cases that need it.

Of course this allows dependent constructs to occur in new places, in non-template code in C++ (this was handled quite early), and also in C (this is why the "all languages" D89046 <https://reviews.llvm.org/D89046> came later).

I'm surprised this only came up now! Ideally I think we'd use `DependentSizedArrayType` as the types of these variables, dependent types are supposed to work in C. It seems OK to have mergeTypes() return QualType() for types that have errors in them - this will result in a followup diagnostic that ideally we'd drop, but we also emit that diagnostic in this case in C++. You could also make the case for returning the first type, or the type with errors, or the type without errors (i.e. *assume* that the types are the same after errors are fixed).


Repository:
  rG LLVM Github Monorepo

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

https://reviews.llvm.org/D149612



More information about the cfe-commits mailing list