1 // RUN: %clang_cc1 -std=c++14 -fsyntax-only -verify %s
2 // RUN: %clang_cc1 -std=c++20 -fsyntax-only -verify %s
3 
4 // Check that we don't get any extra warning for "return" without an
5 // expression, in a function that might have been intended to return
6 // void all along.
7 auto f1() {
8   return 1;
9   return; // expected-error {{deduced as 'void' here but deduced as 'int' in earlier return statement}}
10 }
11 
12 decltype(auto) f2() {
13   return 1;
14   return; // expected-error {{deduced as 'void' here but deduced as 'int' in earlier return statement}}
15 }
16 
17 auto *g() {
18   return; // expected-error {{cannot deduce return type 'auto *' from omitted return expression}}
19 }
20 
21 decltype(h1) h1() { // expected-error {{use of undeclared identifier 'h1'}}
22   return;
23 }
24