// RUN: %clang_cc1 -Wdeprecated %s -fsyntax-only -verify

// expected-error@+1{{expected (}}
#pragma clang deprecated

// expected-error@+1{{expected identifier}}
#pragma clang deprecated(4

// expected-error@+1{{no macro named 'foo'}}
#pragma clang deprecated(foo)

#define bar 1
// expected-note@+1{{macro marked 'deprecated' here}} 
#pragma clang deprecated(bar, "bar is deprecated use 1")

// expected-warning@+1{{macro 'bar' has been marked as deprecated: bar is deprecated use 1}}
#if bar
#endif

#define foo 1
// expected-note@+8{{macro marked 'deprecated' here}} 
// expected-note@+7{{macro marked 'deprecated' here}} 
// expected-note@+6{{macro marked 'deprecated' here}} 
// expected-note@+5{{macro marked 'deprecated' here}} 
// expected-note@+4{{macro marked 'deprecated' here}} 
// expected-note@+3{{macro marked 'deprecated' here}} 
// expected-note@+2{{macro marked 'deprecated' here}} 
// expected-note@+1{{macro marked 'deprecated' here}} 
#pragma clang deprecated(foo)

// expected-error@+1{{expected )}}
#pragma clang deprecated(foo

// expected-warning@+1{{macro 'foo' has been marked as deprecated}}
#if foo
#endif

// expected-warning@+1{{macro 'foo' has been marked as deprecated}}
#if defined(foo)
#endif

// expected-warning@+1{{macro 'foo' has been marked as deprecated}}
#ifdef foo
#endif

// expected-warning@+1{{macro 'foo' has been marked as deprecated}}
#ifndef foo
#endif

int main(int argc, char** argv) {
// expected-error@+1{{no macro named 'main'}}
#pragma clang deprecated(main)

  // expected-warning@+1{{macro 'foo' has been marked as deprecated}}
  return foo;
}

#define frobble 1
#pragma clang deprecated(frobble)

// not-expected-warning@+1{{macro 'frobble' has been marked as deprecated}}
#undef frobble // Expect no diagnostics here

// not-expected-warning@+1{{macro 'frobble' has been marked as deprecated}}
#define frobble 1 // How about here given that this was undefined?

// not-expected-warning@+1{{macro 'frobble' has been marked as deprecated}}
#if defined(frobble)
#endif

// Test that we diagnose on #elif.
#if 0
#elif foo
// expected-warning@-1{{macro 'foo' has been marked as deprecated}}
#endif


// Test that we diagnose on #elifdef.
#ifdef baz
#elifdef foo
// expected-warning@-1{{macro 'foo' has been marked as deprecated}}
// expected-warning@-2{{use of a '#elifdef' directive is a C2x extension}}
#endif

// Test that we diagnose on #elifndef.
#ifdef baz
#elifndef foo
#endif
// expected-warning@-2{{macro 'foo' has been marked as deprecated}}
// expected-warning@-3{{use of a '#elifndef' directive is a C2x extension}}

// FIXME: These cases are currently not handled because clang doesn't expand
// conditions on skipped #elif* blocks. See the FIXME notes in
// Preprocessor::SkipExcludedConditionalBlock.

#ifdef frobble
// not-expected-warning@+2{{macro 'foo' has been marked as deprecated}}
// expected-warning@+1{{use of a '#elifndef' directive is a C2x extension}}
#elifndef foo
#endif

#ifdef frobble
// not-expected-warning@+2{{macro 'foo' has been marked as deprecated}}
// expected-warning@+1{{use of a '#elifdef' directive is a C2x extension}}
#elifdef foo
#endif

#if 1
// not-expected-warning@+1{{macro 'foo' has been marked as deprecated}}
#elif foo
#endif
