struct X { int x; };
void z(int);
typedef struct t TYPEDEF;

void foo() {
  int y = 17;
  // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:14 -std=gnu++98 %s -o - | FileCheck -check-prefix=CHECK-CC1 %s
  // CHECK-CC1: COMPLETION: bool
  // CHECK-CC1-NEXT: COMPLETION: char
  // CHECK-CC1-NEXT: COMPLETION: class
  // CHECK-CC1-NEXT: COMPLETION: const
  // CHECK-CC1-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
  // CHECK-CC1: COMPLETION: Pattern : [#void#]delete <#expression#>
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
  // CHECK-CC1-NEXT: COMPLETION: Pattern : do {
  // CHECK-CC1-NEXT: <#statements#>
  // CHECK-CC1-NEXT: }
  // CHECK-CC1: COMPLETION: double
  // CHECK-CC1-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
  // CHECK-CC1-NEXT: COMPLETION: enum
  // CHECK-CC1-NEXT: COMPLETION: extern
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]false
  // CHECK-CC1-NEXT: COMPLETION: float
  // CHECK-CC1-NEXT: COMPLETION: foo : [#void#]foo()
  // CHECK-CC1-NEXT: COMPLETION: Pattern : for (<#init-statement#>; <#condition#>; <#inc-expression#>) {
  // CHECK-CC1-NEXT: <#statements#>{{$}}
  // CHECK-CC1-NEXT: }
  // CHECK-CC1: COMPLETION: Pattern : goto <#label#>;
  // CHECK-CC1-NEXT: COMPLETION: Pattern : if (<#condition#>) {
  // CHECK-CC1-NEXT: <#statements#>{{$}}
  // CHECK-CC1-NEXT: }
  // CHECK-CC1: COMPLETION: int
  // CHECK-CC1-NEXT: COMPLETION: long
  // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
  // CHECK-CC1-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
  // CHECK-CC1-NEXT: COMPLETION: operator
  // CHECK-CC1-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
  // CHECK-CC1-NEXT: COMPLETION: Pattern : return;
  // CHECK-CC1-NEXT: COMPLETION: short
  // CHECK-CC1-NEXT: COMPLETION: signed
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
  // CHECK-CC1-NEXT: COMPLETION: static
  // CHECK-CC1-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
  // CHECK-CC1-NEXT: COMPLETION: struct
  // CHECK-CC1-NEXT: COMPLETION: Pattern : switch (<#condition#>) {
  // CHECK-CC1: COMPLETION: t : t
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]true
  // CHECK-CC1-NEXT: COMPLETION: Pattern : try {
  // CHECK-CC1-NEXT: <#statements#>
  // CHECK-CC1-NEXT: } catch (<#declaration#>) {
  // CHECK-CC1-NEXT: <#statements#>
  // CHECK-CC1-NEXT: }
  // CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
  // CHECK-CC1-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
  // CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
  // CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
  // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof <#expression#>
  // CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#type#>)
  // CHECK-CC1-NEXT: COMPLETION: union
  // CHECK-CC1-NEXT: COMPLETION: unsigned
  // CHECK-CC1-NEXT: COMPLETION: Pattern : using namespace <#identifier#>;
  // CHECK-CC1-NEXT: COMPLETION: void
  // CHECK-CC1-NEXT: COMPLETION: volatile
  // CHECK-CC1-NEXT: COMPLETION: wchar_t
  // CHECK-CC1-NEXT: COMPLETION: Pattern : while (<#condition#>) {
  // CHECK-CC1-NEXT: <#statements#>
  // CHECK-CC1-NEXT: }
  // CHECK-CC1: COMPLETION: X : X
  // CHECK-CC1-NEXT: COMPLETION: y : [#int#]y
  // CHECK-CC1-NEXT: COMPLETION: z : [#void#]z(<#int#>)

  // RUN: %clang_cc1 -fsyntax-only  -code-completion-patterns -code-completion-at=%s:4:1 -std=gnu++98 %s -o - | FileCheck -check-prefix=CHECK-CC2 %s
  // CHECK-CC2: COMPLETION: Pattern : asm(<#string-literal#>)
  // CHECK-CC2-NEXT: COMPLETION: bool
  // CHECK-CC2-NEXT: COMPLETION: char
  // CHECK-CC2-NEXT: COMPLETION: class
  // CHECK-CC2-NEXT: COMPLETION: const
  // CHECK-CC2-NEXT: COMPLETION: double
  // CHECK-CC2-NEXT: COMPLETION: enum
  // CHECK-CC2-NEXT: COMPLETION: extern
  // CHECK-CC2-NEXT: COMPLETION: float
  // CHECK-CC2-NEXT: COMPLETION: inline
  // CHECK-CC2-NEXT: COMPLETION: int
  // CHECK-CC2-NEXT: COMPLETION: long
  // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#> {
  // CHECK-CC2-NEXT: <#declarations#>
  // CHECK-CC2-NEXT: }
  // CHECK-CC2: COMPLETION: Pattern : namespace <#name#> = <#namespace#>;
  // CHECK-CC2-NEXT: COMPLETION: operator
  // CHECK-CC2-NEXT: COMPLETION: short
  // CHECK-CC2-NEXT: COMPLETION: signed
  // CHECK-CC2-NEXT: COMPLETION: static
  // CHECK-CC2-NEXT: COMPLETION: struct
  // CHECK-CC2-NEXT: COMPLETION: t : t
  // CHECK-CC2-NEXT: COMPLETION: Pattern : template <#declaration#>
  // CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>>
  // CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
  // CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
  // CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
  // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof <#expression#>
  // CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#type#>)
  // CHECK-CC2-NEXT: COMPLETION: union
  // CHECK-CC2-NEXT: COMPLETION: unsigned
  // CHECK-CC2-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>;
  // CHECK-CC2-NEXT: COMPLETION: Pattern : using namespace <#identifier#>;
  // CHECK-CC2-NEXT: COMPLETION: void
  // CHECK-CC2-NEXT: COMPLETION: volatile
  // CHECK-CC2-NEXT: COMPLETION: wchar_t
  // CHECK-CC2-NEXT: COMPLETION: X : X

  // RUN: %clang_cc1 -fsyntax-only -code-completion-patterns -code-completion-at=%s:1:19 -std=gnu++98 %s -o - | FileCheck -check-prefix=CHECK-CC3 %s
  // CHECK-CC3: COMPLETION: bool
  // CHECK-CC3-NEXT: COMPLETION: char
  // CHECK-CC3-NEXT: COMPLETION: class
  // CHECK-CC3-NEXT: COMPLETION: const
  // CHECK-CC3-NEXT: COMPLETION: double
  // CHECK-CC3-NEXT: COMPLETION: enum
  // CHECK-CC3-NEXT: COMPLETION: explicit
  // CHECK-CC3-NEXT: COMPLETION: extern
  // CHECK-CC3-NEXT: COMPLETION: float
  // CHECK-CC3-NEXT: COMPLETION: friend
  // CHECK-CC3-NEXT: COMPLETION: inline
  // CHECK-CC3-NEXT: COMPLETION: int
  // CHECK-CC3-NEXT: COMPLETION: long
  // CHECK-CC3-NEXT: COMPLETION: mutable
  // CHECK-CC3-NEXT: COMPLETION: operator
  // CHECK-CC3-NEXT: COMPLETION: Pattern : private: 
  // CHECK-CC3-NEXT: COMPLETION: Pattern : protected: 
  // CHECK-CC3-NEXT: COMPLETION: Pattern : public: 
  // CHECK-CC3-NEXT: COMPLETION: short
  // CHECK-CC3-NEXT: COMPLETION: signed
  // CHECK-CC3-NEXT: COMPLETION: static
  // CHECK-CC3-NEXT: COMPLETION: struct
  // CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
  // CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
  // CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
  // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#>
  // CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#type#>)
  // CHECK-CC3-NEXT: COMPLETION: union
  // CHECK-CC3-NEXT: COMPLETION: unsigned
  // CHECK-CC3-NEXT: COMPLETION: Pattern : using <#qualifier#>::<#name#>;
  // CHECK-CC3-NEXT: COMPLETION: virtual
  // CHECK-CC3-NEXT: COMPLETION: void
  // CHECK-CC3-NEXT: COMPLETION: volatile
  // CHECK-CC3-NEXT: COMPLETION: wchar_t
  // CHECK-CC3-NEXT: COMPLETION: X : X

  // RUN: %clang_cc1 -fsyntax-only -fcxx-exceptions -code-completion-patterns -code-completion-at=%s:6:11 -std=gnu++98 %s -o - | FileCheck -check-prefix=CHECK-CC4 %s
  // CHECK-CC4: COMPLETION: bool
  // CHECK-CC4-NEXT: COMPLETION: char
  // CHECK-CC4-NEXT: COMPLETION: class
  // CHECK-CC4-NEXT: COMPLETION: const
  // CHECK-CC4-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete <#expression#>
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
  // CHECK-CC4-NEXT: COMPLETION: double
  // CHECK-CC4-NEXT: COMPLETION: Pattern : dynamic_cast<<#type#>>(<#expression#>)
  // CHECK-CC4-NEXT: COMPLETION: enum
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]false
  // CHECK-CC4-NEXT: COMPLETION: float
  // CHECK-CC4-NEXT: COMPLETION: foo : [#void#]foo()
  // CHECK-CC4-NEXT: COMPLETION: int
  // CHECK-CC4-NEXT: COMPLETION: long
  // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
  // CHECK-CC4-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
  // CHECK-CC4-NEXT: COMPLETION: operator
  // CHECK-CC4-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
  // CHECK-CC4-NEXT: COMPLETION: short
  // CHECK-CC4-NEXT: COMPLETION: signed
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
  // CHECK-CC4-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
  // CHECK-CC4-NEXT: COMPLETION: struct
  // CHECK-CC4-NEXT: COMPLETION: t : t
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#>
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]true
  // CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
  // CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
  // CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
  // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof <#expression#>
  // CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#type#>)
  // CHECK-CC4-NEXT: COMPLETION: union
  // CHECK-CC4-NEXT: COMPLETION: unsigned
  // CHECK-CC4-NEXT: COMPLETION: void
  // CHECK-CC4-NEXT: COMPLETION: volatile
  // CHECK-CC4-NEXT: COMPLETION: wchar_t
  // CHECK-CC4-NEXT: COMPLETION: X : X
  // CHECK-CC4-NEXT: COMPLETION: z : [#void#]z(<#int#>)

  // RUN: %clang_cc1 -fsyntax-only -fno-rtti -code-completion-patterns -code-completion-at=%s:6:14 -std=gnu++98 %s -o - | FileCheck -check-prefix=CHECK-NO-RTTI %s
  // CHECK-NO-RTTI: COMPLETION: bool
  // CHECK-NO-RTTI-NEXT: COMPLETION: char
  // CHECK-NO-RTTI-NEXT: COMPLETION: class
  // CHECK-NO-RTTI-NEXT: COMPLETION: const
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : const_cast<<#type#>>(<#expression#>)
  // CHECK-NO-RTTI: COMPLETION: Pattern : [#void#]delete <#expression#>
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#void#]delete [] <#expression#>
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : do {
  // CHECK-NO-RTTI: COMPLETION: double
  // CHECK-NO-RTTI-NOT: dynamic_cast
  // CHECK-NO-RTTI: COMPLETION: enum
  // CHECK-NO-RTTI-NEXT: COMPLETION: extern
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#bool#]false
  // CHECK-NO-RTTI-NEXT: COMPLETION: float
  // CHECK-NO-RTTI-NEXT: COMPLETION: foo : [#void#]foo()
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : for (<#init-statement#>; <#condition#>; <#inc-expression#>) {
  // CHECK-NO-RTTI: COMPLETION: Pattern : goto <#label#>;
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : if (<#condition#>) {
  // CHECK-NO-RTTI: COMPLETION: int
  // CHECK-NO-RTTI-NEXT: COMPLETION: long
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>[<#size#>](<#expressions#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: operator
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : reinterpret_cast<<#type#>>(<#expression#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : return;
  // CHECK-NO-RTTI-NEXT: COMPLETION: short
  // CHECK-NO-RTTI-NEXT: COMPLETION: signed
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : [#size_t#]sizeof(<#expression-or-type#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: static
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : static_cast<<#type#>>(<#expression#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: struct
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : switch (<#condition#>) {
  // CHECK-NO-RTTI: COMPLETION: t : t
  // CHECK-NO-RTTI-NOT: throw
  // CHECK-NO-RTTI: COMPLETION: Pattern : [#bool#]true
  // CHECK-NO-RTTI-NOT: try
  // CHECK-NO-RTTI: COMPLETION: TYPEDEF : TYPEDEF
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
  // CHECK-NO-RTTI-NOT: typeid
  // CHECK-NO-RTTI: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof <#expression#>
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof(<#type#>)
  // CHECK-NO-RTTI-NEXT: COMPLETION: union
  // CHECK-NO-RTTI-NEXT: COMPLETION: unsigned
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : using namespace <#identifier#>;
  // CHECK-NO-RTTI-NEXT: COMPLETION: void
  // CHECK-NO-RTTI-NEXT: COMPLETION: volatile
  // CHECK-NO-RTTI-NEXT: COMPLETION: wchar_t
  // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : while (<#condition#>) {
  // CHECK-NO-RTTI: COMPLETION: X : X
  // CHECK-NO-RTTI-NEXT: COMPLETION: y : [#int#]y
  // CHECK-NO-RTTI-NEXT: COMPLETION: z : [#void#]z(<#int#>)
