summaryrefslogtreecommitdiffstats
path: root/clang/test/Sema
diff options
context:
space:
mode:
authorHans Wennborg <hans@hanshq.net>2011-12-06 09:46:12 +0000
committerHans Wennborg <hans@hanshq.net>2011-12-06 09:46:12 +0000
commit2fb8b91f6f96363b87e9a501260343c664701ff4 (patch)
treeb4cf1e55ae72e8062c96673d456be3c7df9bb58f /clang/test/Sema
parent83320e03e6fdcbf2aff73f72c78edeffbbd878ef (diff)
downloadbcm5719-llvm-2fb8b91f6f96363b87e9a501260343c664701ff4.tar.gz
bcm5719-llvm-2fb8b91f6f96363b87e9a501260343c664701ff4.zip
Suggest typo corrections for implicit function declarations.
A mistyped function call becomes an inmplicit function declaration in C. Suggest typo correction when one can be found. llvm-svn: 145930
Diffstat (limited to 'clang/test/Sema')
-rw-r--r--clang/test/Sema/builtins.c4
-rw-r--r--clang/test/Sema/c89.c9
-rw-r--r--clang/test/Sema/implicit-decl.c9
3 files changed, 18 insertions, 4 deletions
diff --git a/clang/test/Sema/builtins.c b/clang/test/Sema/builtins.c
index 64efefc7fda..0850cc4ee4b 100644
--- a/clang/test/Sema/builtins.c
+++ b/clang/test/Sema/builtins.c
@@ -78,7 +78,8 @@ void test12(void) {
}
void test_unknown_builtin(int a, int b) {
- __builtin_foo(a, b); // expected-error{{use of unknown builtin}}
+ __builtin_isles(a, b); // expected-error{{use of unknown builtin}} \
+ // expected-note{{did you mean '__builtin_isless'?}}
}
int test13() {
@@ -101,4 +102,3 @@ int test16() {
return __builtin_constant_p() + // expected-error{{too few arguments}}
__builtin_constant_p(1, 2); // expected-error {{too many arguments}}
}
-
diff --git a/clang/test/Sema/c89.c b/clang/test/Sema/c89.c
index 670dd15539f..e4cdc11be1c 100644
--- a/clang/test/Sema/c89.c
+++ b/clang/test/Sema/c89.c
@@ -1,4 +1,4 @@
-/* RUN: %clang_cc1 %s -std=c89 -pedantic -fsyntax-only -verify
+/* RUN: %clang_cc1 %s -std=c89 -pedantic -fsyntax-only -verify -Wimplicit-function-declaration
*/
void test1() {
{
@@ -82,3 +82,10 @@ void test13b() {
int test14() { return (&*test14)(); }
int test15[5] = { [2] = 1 }; /* expected-warning {{designated initializers are a C99 feature}} */
+
+extern int printf(__const char *__restrict __format, ...); /* expected-note{{'printf' declared here}} */
+
+void test16() {
+ printg("Hello, world!\n"); /* expected-warning {{implicit declaration of function 'printg'}}
+ expected-note {{did you mean 'printf'?}} */
+}
diff --git a/clang/test/Sema/implicit-decl.c b/clang/test/Sema/implicit-decl.c
index f4559775366..72e42e05bb6 100644
--- a/clang/test/Sema/implicit-decl.c
+++ b/clang/test/Sema/implicit-decl.c
@@ -3,6 +3,8 @@
typedef int int32_t;
typedef unsigned char Boolean;
+extern int printf(__const char *__restrict __format, ...); // expected-note{{'printf' declared here}}
+
void func() {
int32_t *vector[16];
const char compDesc[16 + 1];
@@ -10,8 +12,13 @@ void func() {
if (_CFCalendarDecomposeAbsoluteTimeV(compDesc, vector, compCount)) { // expected-note {{previous implicit declaration is here}} \
expected-warning {{implicit declaration of function '_CFCalendarDecomposeAbsoluteTimeV' is invalid in C99}}
}
+
+ printg("Hello, World!\n"); // expected-warning{{implicit declaration of function 'printg' is invalid in C99}} \
+ // expected-note{{did you mean 'printf'?}}
+
+ __builtin_is_les(1, 3); // expected-error{{use of unknown builtin '__builtin_is_les'}} \
+ // expected-note{did you mean '__builtin_is_less'?}}
}
Boolean _CFCalendarDecomposeAbsoluteTimeV(const char *componentDesc, int32_t **vector, int32_t count) { // expected-error{{conflicting types for '_CFCalendarDecomposeAbsoluteTimeV'}}
return 0;
}
-
OpenPOWER on IntegriCloud