diff options
author | John McCall <rjmccall@apple.com> | 2009-07-25 04:36:53 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2009-07-25 04:36:53 +0000 |
commit | 13591ed054d1b2d6d392151ba05cbc883e640648 (patch) | |
tree | fd8fc1b96adba37ca67e4b27a204c8ff536cf261 /include/clang/Basic | |
parent | 8fceb57f6980c67bb8f12e29d75736cf057951e8 (diff) |
Semantic checking for main().
Fix some invalid main() methods in the test suite that were nicely
exposed by the new checks.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@77047 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/clang/Basic')
-rw-r--r-- | include/clang/Basic/DiagnosticSemaKinds.td | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/include/clang/Basic/DiagnosticSemaKinds.td b/include/clang/Basic/DiagnosticSemaKinds.td index 9540091a82..9d2b2a9adf 100644 --- a/include/clang/Basic/DiagnosticSemaKinds.td +++ b/include/clang/Basic/DiagnosticSemaKinds.td @@ -126,6 +126,19 @@ def err_builtin_definition : Error<"definition of builtin function %0">; def err_types_compatible_p_in_cplusplus : Error< "__builtin_types_compatible_p is not valid in C++">; +/// main() +// static/inline main() are not errors in C, just in C++. +def warn_unusual_main_decl : Warning<"'main' should not be declared " + "%select{static|inline|static or inline}0">; +def err_unusual_main_decl : Error<"'main' is not allowed to be declared " + "%select{static|inline|static or inline}0">; +def err_main_returns_nonint : Error<"'main' must return 'int'">; +def err_main_surplus_args : Error<"%0 is too many arguments for 'main': " + "must be 0, 2, or 3">; +def warn_main_one_arg : Warning<"one-argument 'main' is usually a mistake">; +def err_main_arg_wrong : Error<"%select{first|second|third}0 argument of " + "'main' should be of type %1">; + /// parser diagnostics def ext_typedef_without_a_name : ExtWarn<"typedef requires a name">; def err_statically_allocated_object : Error< |