diff options
| author | Akira Hatanaka <ahatanaka@apple.com> | 2016-09-01 01:03:21 +0000 |
|---|---|---|
| committer | Akira Hatanaka <ahatanaka@apple.com> | 2016-09-01 01:03:21 +0000 |
| commit | 3e34cfe8b62d2bfae7a7ccb4d7ac7bec57b54ca5 (patch) | |
| tree | e9718eb193b2921db0934f93477eef8599c58705 /clang/lib/Sema | |
| parent | 10a7086700780a325a6eb1f7927e81a97a7a9c7d (diff) | |
| download | bcm5719-llvm-3e34cfe8b62d2bfae7a7ccb4d7ac7bec57b54ca5.tar.gz bcm5719-llvm-3e34cfe8b62d2bfae7a7ccb4d7ac7bec57b54ca5.zip | |
[Sema] Don't diagnose an array type mismatch when the new or previous
declaration has a dependent type.
This fixes a bug where clang errors out on a valid code.
rdar://problem/28051467
Differential Revision: https://reviews.llvm.org/D24110
llvm-svn: 280330
Diffstat (limited to 'clang/lib/Sema')
| -rw-r--r-- | clang/lib/Sema/SemaDecl.cpp | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/clang/lib/Sema/SemaDecl.cpp b/clang/lib/Sema/SemaDecl.cpp index 9df9c63cfdf..8b148af8cce 100644 --- a/clang/lib/Sema/SemaDecl.cpp +++ b/clang/lib/Sema/SemaDecl.cpp @@ -3367,11 +3367,11 @@ void Sema::MergeVarDeclTypes(VarDecl *New, VarDecl *Old, // We are merging a variable declaration New into Old. If it has an array // bound, and that bound differs from Old's bound, we should diagnose the // mismatch. - if (!NewArray->isIncompleteArrayType()) { + if (!NewArray->isIncompleteArrayType() && !NewArray->isDependentType()) { for (VarDecl *PrevVD = Old->getMostRecentDecl(); PrevVD; PrevVD = PrevVD->getPreviousDecl()) { const ArrayType *PrevVDTy = Context.getAsArrayType(PrevVD->getType()); - if (PrevVDTy->isIncompleteArrayType()) + if (PrevVDTy->isIncompleteArrayType() || PrevVDTy->isDependentType()) continue; if (!Context.hasSameType(NewArray, PrevVDTy)) |

