196573859SHaojian Wu // RUN: not %clang_cc1 -triple x86_64-unknown-unknown -Wno-unused-value -fcxx-exceptions -std=gnu++17 -ast-dump %s | FileCheck -strict-whitespace %s
296573859SHaojian Wu 
AA396573859SHaojian Wu struct A { A(int, int) {} };
496573859SHaojian Wu class ForwardDecl;
596573859SHaojian Wu 
test()696573859SHaojian Wu void test() {
789d9912cSHaojian Wu   // Verify the valid-bit of the VarDecl.
889d9912cSHaojian Wu 
996573859SHaojian Wu   // CHECK: `-VarDecl {{.*}} a1 'A'
1096573859SHaojian Wu   A a1;
1196573859SHaojian Wu   // CHECK: `-VarDecl {{.*}} a2 'const A'
1296573859SHaojian Wu   const A a2;
1396573859SHaojian Wu   // CHECK: `-VarDecl {{.*}} a3 'A'
1496573859SHaojian Wu   A a3 = garbage();
15*c673d67bSHaojian Wu   // CHECK: `-VarDecl {{.*}} a4 'const A &'
16*c673d67bSHaojian Wu   const A& a4;
1796573859SHaojian Wu 
1896573859SHaojian Wu 
1996573859SHaojian Wu   // CHECK: `-VarDecl {{.*}} invalid b2 'ForwardDecl'
2096573859SHaojian Wu   ForwardDecl b2;
2189d9912cSHaojian Wu   // CHECK: `-VarDecl {{.*}} invalid b3 'auto'
2289d9912cSHaojian Wu   auto b3 = garbage();
2389d9912cSHaojian Wu   // CHECK: `-VarDecl {{.*}} invalid b4 'auto'
2489d9912cSHaojian Wu   auto b4 = A(1);
2589d9912cSHaojian Wu   // CHECK: `-VarDecl {{.*}} invalid b5 'auto'
2689d9912cSHaojian Wu   auto b5 = A{1};
2796573859SHaojian Wu }