1*67e74705SXin Li // RUN: %clang_cc1 -fsyntax-only -verify %s 2*67e74705SXin Li // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits %s 2>&1 | FileCheck %s 3*67e74705SXin Li // RUN: not %clang_cc1 -fsyntax-only -fdiagnostics-parseable-fixits -x c++ %s 2>&1 | FileCheck %s 4*67e74705SXin Li 5*67e74705SXin Li // expected-note@+1 2{{previous definition is here}} main()6*67e74705SXin Liint main() { 7*67e74705SXin Li return 0; 8*67e74705SXin Li } 9*67e74705SXin Li 10*67e74705SXin Li // expected-error@+2 {{static declaration of 'main' follows non-static declaration}} 11*67e74705SXin Li // expected-warning@+1 {{'main' should not be declared static}} main()12*67e74705SXin Listatic int main() { 13*67e74705SXin Li // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:8}:"" 14*67e74705SXin Li return 0; 15*67e74705SXin Li } 16*67e74705SXin Li 17*67e74705SXin Li // expected-error@+2 {{redefinition of 'main'}} 18*67e74705SXin Li // expected-error@+1 {{'main' is not allowed to be declared inline}} main()19*67e74705SXin Liinline int main() { 20*67e74705SXin Li // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:8}:"" 21*67e74705SXin Li return 0; 22*67e74705SXin Li } 23*67e74705SXin Li 24*67e74705SXin Li // expected-warning@+5 {{function 'main' declared 'noreturn' should not return}} 25*67e74705SXin Li // expected-warning@+2 {{'main' is not allowed to be declared _Noreturn}} 26*67e74705SXin Li // expected-note@+1 {{remove '_Noreturn'}} main()27*67e74705SXin Li_Noreturn int main() { 28*67e74705SXin Li // CHECK: fix-it:"{{.*}}":{[[@LINE-1]]:1-[[@LINE-1]]:11}:"" 29*67e74705SXin Li return 0; 30*67e74705SXin Li } 31*67e74705SXin Li 32*67e74705SXin Li // expected-warning@+1 {{'main' is not allowed to be declared variadic}} main(int argc,char ** argv,...)33*67e74705SXin Liint main(int argc, char**argv, ...) { return 0; } 34