Index: lib/Sema/SemaCodeComplete.cpp =================================================================== --- lib/Sema/SemaCodeComplete.cpp +++ lib/Sema/SemaCodeComplete.cpp @@ -1899,6 +1899,7 @@ Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace); Builder.AddPlaceholderChunk("identifier"); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("declarations"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); @@ -2046,6 +2047,7 @@ SemaRef.getLangOpts().CXXExceptions) { Builder.AddTypedTextChunk("try"); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("statements"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); @@ -2054,6 +2056,7 @@ Builder.AddPlaceholderChunk("declaration"); Builder.AddChunk(CodeCompletionString::CK_RightParen); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("statements"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); @@ -2072,6 +2075,7 @@ Builder.AddPlaceholderChunk("expression"); Builder.AddChunk(CodeCompletionString::CK_RightParen); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("statements"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); @@ -2087,6 +2091,8 @@ Builder.AddChunk(CodeCompletionString::CK_RightParen); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); + Builder.AddPlaceholderChunk("cases"); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); Results.AddResult(Result(Builder.TakeString())); } @@ -2117,6 +2123,7 @@ Builder.AddPlaceholderChunk("expression"); Builder.AddChunk(CodeCompletionString::CK_RightParen); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("statements"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); @@ -2125,6 +2132,7 @@ // do { statements } while ( expression ); Builder.AddTypedTextChunk("do"); Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddPlaceholderChunk("statements"); Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); Index: test/CodeCompletion/ordinary-name-cxx11.cpp =================================================================== --- test/CodeCompletion/ordinary-name-cxx11.cpp +++ test/CodeCompletion/ordinary-name-cxx11.cpp @@ -14,7 +14,9 @@ // 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{<#statements#> + // 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 @@ -24,7 +26,9 @@ // CHECK-CC1-NEXT: COMPLETION: foo : [#void#]foo() // CHECK-CC1-NEXT: COMPLETION: Pattern : for(<#init-statement#>;<#condition#>;<#inc-expression#>){ // CHECK-CC1: COMPLETION: Pattern : goto <#label#>; - // CHECK-CC1-NEXT: COMPLETION: Pattern : if(<#condition#>){<#statements#> + // 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#>) @@ -47,7 +51,9 @@ // CHECK-CC1-NEXT: COMPLETION: thread_local // CHECK-CC1-NEXT: COMPLETION: Pattern : [#void#]throw <#expression#> // CHECK-CC1-NEXT: COMPLETION: Pattern : [#bool#]true - // CHECK-CC1-NEXT: COMPLETION: Pattern : try{<#statements#> + // CHECK-CC1-NEXT: COMPLETION: Pattern : try{ + // 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#>) @@ -60,7 +66,9 @@ // CHECK-CC1-NEXT: COMPLETION: void // CHECK-CC1-NEXT: COMPLETION: volatile // CHECK-CC1-NEXT: COMPLETION: wchar_t - // CHECK-CC1-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#> + // 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#>) @@ -83,7 +91,9 @@ // CHECK-CC2-NEXT: COMPLETION: inline // CHECK-CC2-NEXT: COMPLETION: int // CHECK-CC2-NEXT: COMPLETION: long - // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#>{<#declarations#> + // 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 @@ -209,7 +219,9 @@ // 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{<#statements#> + // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : do{ + // CHECK-NO-RTTI-NEXT: <#statements#> + // CHECK-NO-RTTI-NEXT: } // CHECK-NO-RTTI: COMPLETION: double // CHECK-NO-RTTI-NOT: dynamic_cast // CHECK-NO-RTTI: COMPLETION: enum @@ -219,7 +231,9 @@ // 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#>){<#statements#> + // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : if(<#condition#>){ + // CHECK-NO-RTTI-NEXT: <#statements#> + // CHECK-NO-RTTI-NEXT: } // CHECK-NO-RTTI: COMPLETION: int // CHECK-NO-RTTI-NEXT: COMPLETION: long // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : new <#type#>(<#expressions#>) @@ -254,7 +268,7 @@ // 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#>){<#statements#> + // 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#>) Index: test/CodeCompletion/ordinary-name.cpp =================================================================== --- test/CodeCompletion/ordinary-name.cpp +++ test/CodeCompletion/ordinary-name.cpp @@ -12,7 +12,9 @@ // 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{<#statements#> + // 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 @@ -21,8 +23,12 @@ // 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#>){<#statements#> + // 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#>) @@ -40,7 +46,11 @@ // 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{<#statements#> + // 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#>) @@ -53,7 +63,9 @@ // CHECK-CC1-NEXT: COMPLETION: void // CHECK-CC1-NEXT: COMPLETION: volatile // CHECK-CC1-NEXT: COMPLETION: wchar_t - // CHECK-CC1-NEXT: COMPLETION: Pattern : while(<#condition#>){<#statements#> + // 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#>) @@ -71,7 +83,9 @@ // CHECK-CC2-NEXT: COMPLETION: inline // CHECK-CC2-NEXT: COMPLETION: int // CHECK-CC2-NEXT: COMPLETION: long - // CHECK-CC2-NEXT: COMPLETION: Pattern : namespace <#identifier#>{<#declarations#> + // 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 @@ -181,7 +195,7 @@ // 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{<#statements#> + // CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : do{ // CHECK-NO-RTTI: COMPLETION: double // CHECK-NO-RTTI-NOT: dynamic_cast // CHECK-NO-RTTI: COMPLETION: enum @@ -191,7 +205,7 @@ // 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#>){<#statements#> + // 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#>) @@ -222,7 +236,7 @@ // 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#>){<#statements#> + // 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#>)