diff --git a/clang/lib/AST/TypePrinter.cpp b/clang/lib/AST/TypePrinter.cpp index 3c7a6b8b9e95..e573037db10e 100644 --- a/clang/lib/AST/TypePrinter.cpp +++ b/clang/lib/AST/TypePrinter.cpp @@ -242,6 +242,7 @@ bool TypePrinter::canPrefixQualifiers(const Type *T, T->isObjCQualifiedIdType() || T->isObjCQualifiedClassType(); break; + case Type::VariableArray: case Type::DependentSizedArray: NeedARCStrongQualifier = true; LLVM_FALLTHROUGH; @@ -251,9 +252,6 @@ bool TypePrinter::canPrefixQualifiers(const Type *T, return canPrefixQualifiers( cast(UnderlyingType)->getElementType().getTypePtr(), NeedARCStrongQualifier); - case Type::VariableArray: - NeedARCStrongQualifier = true; - LLVM_FALLTHROUGH; case Type::Adjusted: case Type::Decayed: diff --git a/clang/test/Sema/vla.cpp b/clang/test/Sema/vla.cpp new file mode 100644 index 000000000000..b4416a07cf0e --- /dev/null +++ b/clang/test/Sema/vla.cpp @@ -0,0 +1,6 @@ +// RUN: %clang_cc1 %s -verify -fsyntax-only + +void f1(int n) { + typedef int x[n]; + const x y; // expected-error {{default initialization of an object of const type 'const x' (aka 'const int [n]')}} +}