diff options
| -rw-r--r-- | clang/lib/Sema/SemaChecking.cpp | 4 | ||||
| -rw-r--r-- | clang/test/SemaCXX/vla.cpp | 3 |
2 files changed, 7 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaChecking.cpp b/clang/lib/Sema/SemaChecking.cpp index e557c50e027..d4390e53f0b 100644 --- a/clang/lib/Sema/SemaChecking.cpp +++ b/clang/lib/Sema/SemaChecking.cpp @@ -7713,6 +7713,10 @@ static void diagnoseArrayStarInParamType(Sema &S, QualType PType, diagnoseArrayStarInParamType(S, PointerTy->getPointeeType(), Loc); return; } + if (const auto *ReferenceTy = dyn_cast<ReferenceType>(PType)) { + diagnoseArrayStarInParamType(S, ReferenceTy->getPointeeType(), Loc); + return; + } if (const auto *ParenTy = dyn_cast<ParenType>(PType)) { diagnoseArrayStarInParamType(S, ParenTy->getInnerType(), Loc); return; diff --git a/clang/test/SemaCXX/vla.cpp b/clang/test/SemaCXX/vla.cpp index dae6450553a..6efb648e786 100644 --- a/clang/test/SemaCXX/vla.cpp +++ b/clang/test/SemaCXX/vla.cpp @@ -17,3 +17,6 @@ namespace PR18581 { incomplete c[n]; // expected-error {{incomplete}} } } + +void pr23151(int (&)[*]) { // expected-error {{variable length array must be bound in function definition}} +} |

