[PATCH] D24110: [Sema] Don't diagnose an array type mismatch when the new or previous declaration has a dependent type
Richard Smith via cfe-commits
cfe-commits at lists.llvm.org
Wed Aug 31 17:30:04 PDT 2016
rsmith added inline comments.
================
Comment at: lib/Sema/SemaDecl.cpp:3377-3378
@@ -3376,4 +3376,4 @@
if (!Context.hasSameType(NewArray, PrevVDTy))
return diagnoseVarDeclTypeMismatch(*this, New, PrevVD);
}
----------------
ahatanak wrote:
> rsmith wrote:
> > If you do use `isDependentSizedArrayType()`, you'll need to change this to check the bounds of the array types rather than the type.
> It seems to me that you don't want to do the check when either the array bound or the element type is dependent. Which case would we miss if isDependentType is used here instead of isDependentSizedArrayType? Could you show an example?
Sure. We could diagnose both declarations in the template here:
int a[5];
int b[5];
template<typename T, int N> void f() {
extern T a[6];
extern float b[N];
}
... because in both cases the type can never match. However, we don't do this sort of partial type matching in any other cases, so it's very much just a "nice-to-have".
https://reviews.llvm.org/D24110
More information about the cfe-commits
mailing list