// RUN: clang-cc -fsyntax-only -verify -pedantic %s

char *funk(int format);
enum Test {A=-1};
char *funk(enum Test x);

int eli(float b); // expected-note {{previous declaration is here}}
int b(int c) {return 1;}

int foo();
int foo()
{
    int eli(int (int)); // expected-error {{conflicting types for 'eli'}}
    eli(b); // expected-error{{incompatible type passing}}
	return 0;	
}

int bar();
int bar(int i) // expected-note {{previous definition is here}}
{
	return 0;
}
int bar() // expected-error {{redefinition of 'bar'}} 
{
	return 0;
}

int foobar(int); // note {{previous declaration is here}}
int foobar() // error {{conflicting types for 'foobar'}}
{
	return 0;
}

int wibble(); // expected-note {{previous declaration is here}}
float wibble() // expected-error {{conflicting types for 'wibble'}}
{
	return 0.0f;
}
