1*9ca5c425SRichard Smith // RUN: %clang_cc1 -std=c++11 -fsyntax-only -verify %s
202e85f3bSRichard Smith 
f()302e85f3bSRichard Smith void f() {
402e85f3bSRichard Smith   int b;
502e85f3bSRichard Smith   int arr[] = {1, 2, 3};
602e85f3bSRichard Smith 
702e85f3bSRichard Smith   if (bool b = true) // expected-note 2{{previous definition}}
802e85f3bSRichard Smith     bool b; // expected-error {{redefinition}}
902e85f3bSRichard Smith   else
1002e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
1102e85f3bSRichard Smith   while (bool b = true) // expected-note {{previous definition}}
1202e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
1302e85f3bSRichard Smith   for (int c; // expected-note 2{{previous definition}}
1402e85f3bSRichard Smith        bool c = true;) // expected-error {{redefinition}}
1502e85f3bSRichard Smith     double c; // expected-error {{redefinition}}
1602e85f3bSRichard Smith   switch (int n = 37 + 5) // expected-note {{previous definition}}
1702e85f3bSRichard Smith     int n; // expected-error {{redefinition}}
1802e85f3bSRichard Smith   for (int a : arr) // expected-note {{previous definition}}
1902e85f3bSRichard Smith     int a = 0; // expected-error {{redefinition}}
2002e85f3bSRichard Smith 
2102e85f3bSRichard Smith   if (bool b = true) { // expected-note 2{{previous definition}}
2202e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
2302e85f3bSRichard Smith   } else {
2402e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
2502e85f3bSRichard Smith   }
2602e85f3bSRichard Smith   while (bool b = true) { // expected-note {{previous definition}}
2702e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
2802e85f3bSRichard Smith   }
2902e85f3bSRichard Smith   for (int c; // expected-note 2{{previous definition}}
3002e85f3bSRichard Smith        bool c = true;) { // expected-error {{redefinition}}
3102e85f3bSRichard Smith     double c; // expected-error {{redefinition}}
3202e85f3bSRichard Smith   }
3302e85f3bSRichard Smith   switch (int n = 37 + 5) { // expected-note {{previous definition}}
3402e85f3bSRichard Smith     int n; // expected-error {{redefinition}}
3502e85f3bSRichard Smith   }
3602e85f3bSRichard Smith   for (int &a : arr) { // expected-note {{previous definition}}
3702e85f3bSRichard Smith     int a = 0; // expected-error {{redefinition}}
3802e85f3bSRichard Smith   }
3902e85f3bSRichard Smith 
4002e85f3bSRichard Smith   if (bool b = true) {{ // expected-note {{previous definition}}
4102e85f3bSRichard Smith     bool b;
4202e85f3bSRichard Smith   }} else {
4302e85f3bSRichard Smith     int b; // expected-error {{redefinition}}
4402e85f3bSRichard Smith   }
4502e85f3bSRichard Smith   if (bool b = true) { // expected-note {{previous definition}}
4602e85f3bSRichard Smith     bool b; // expected-error {{redefinition}}
4702e85f3bSRichard Smith   } else {{
4802e85f3bSRichard Smith     int b;
4902e85f3bSRichard Smith   }}
5002e85f3bSRichard Smith   if (bool b = true) {{
5102e85f3bSRichard Smith     bool b;
5202e85f3bSRichard Smith   }} else {{
5302e85f3bSRichard Smith     int b;
5402e85f3bSRichard Smith   }}
5502e85f3bSRichard Smith   while (bool b = true) {{
5602e85f3bSRichard Smith     int b;
5702e85f3bSRichard Smith   }}
5802e85f3bSRichard Smith   for (int c; // expected-note {{previous definition}}
5902e85f3bSRichard Smith        bool c = true; ) {{ // expected-error {{redefinition}}
6002e85f3bSRichard Smith     double c;
6102e85f3bSRichard Smith   }}
6202e85f3bSRichard Smith   switch (int n = 37 + 5) {{
6302e85f3bSRichard Smith     int n;
6402e85f3bSRichard Smith   }}
6502e85f3bSRichard Smith   for (int &a : arr) {{
6602e85f3bSRichard Smith     int a = 0;
6702e85f3bSRichard Smith   }}
6802e85f3bSRichard Smith }
69