Skip to content

Commit 834c718

Browse files
committed
[CodeComplete] Tweak code completion for typename.
Summary: Currently, clangd always completes `typename` as `typename qualifier::name`, I think the current behavior is not useful when the code completion is triggered in `template <>`. So I tweak it to `typename identifier`. Patch by @lh123 ! Reviewers: sammccall, kadircet Reviewed By: kadircet Subscribers: ilya-biryukov, usaxena95, cfe-commits Tags: #clang Differential Revision: https://reviews.llvm.org/D82373
1 parent 1a30eab commit 834c718

File tree

3 files changed

+11
-13
lines changed

3 files changed

+11
-13
lines changed

clang/lib/Sema/SemaCodeComplete.cpp

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1687,11 +1687,9 @@ static void AddTypeSpecifierResults(const LangOptions &LangOpts,
16871687
Results.AddResult(Result("class", CCP_Type));
16881688
Results.AddResult(Result("wchar_t", CCP_Type));
16891689

1690-
// typename qualified-id
1690+
// typename name
16911691
Builder.AddTypedTextChunk("typename");
16921692
Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace);
1693-
Builder.AddPlaceholderChunk("qualifier");
1694-
Builder.AddTextChunk("::");
16951693
Builder.AddPlaceholderChunk("name");
16961694
Results.AddResult(Result(Builder.TakeString()));
16971695

clang/test/CodeCompletion/ordinary-name-cxx11.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void foo() {
5757
// CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
5858
// CHECK-CC1-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
5959
// CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
60-
// CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
60+
// CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#name#>
6161
// CHECK-CC1-NEXT: COMPLETION: Pattern : typeof <#expression#>
6262
// CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#type#>)
6363
// CHECK-CC1-NEXT: COMPLETION: union
@@ -107,7 +107,7 @@ void foo() {
107107
// CHECK-CC2-NEXT: COMPLETION: thread_local
108108
// CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
109109
// CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
110-
// CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
110+
// CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#name#>
111111
// CHECK-CC2-NEXT: COMPLETION: Pattern : typeof <#expression#>
112112
// CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#type#>)
113113
// CHECK-CC2-NEXT: COMPLETION: union
@@ -150,7 +150,7 @@ void foo() {
150150
// CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
151151
// CHECK-CC3-NEXT: COMPLETION: thread_local
152152
// CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
153-
// CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
153+
// CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#name#>
154154
// CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#>
155155
// CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#type#>)
156156
// CHECK-CC3-NEXT: COMPLETION: union
@@ -198,7 +198,7 @@ void foo() {
198198
// CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]true
199199
// CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
200200
// CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
201-
// CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
201+
// CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#name#>
202202
// CHECK-CC4-NEXT: COMPLETION: Pattern : typeof <#expression#>
203203
// CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#type#>)
204204
// CHECK-CC4-NEXT: COMPLETION: union
@@ -259,7 +259,7 @@ void foo() {
259259
// CHECK-NO-RTTI: COMPLETION: TYPEDEF : TYPEDEF
260260
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
261261
// CHECK-NO-RTTI-NOT: typeid
262-
// CHECK-NO-RTTI: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
262+
// CHECK-NO-RTTI: COMPLETION: Pattern : typename <#name#>
263263
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof <#expression#>
264264
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof(<#type#>)
265265
// CHECK-NO-RTTI-NEXT: COMPLETION: union

clang/test/CodeCompletion/ordinary-name.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ void foo() {
5454
// CHECK-CC1: COMPLETION: TYPEDEF : TYPEDEF
5555
// CHECK-CC1-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
5656
// CHECK-CC1-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
57-
// CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
57+
// CHECK-CC1-NEXT: COMPLETION: Pattern : typename <#name#>
5858
// CHECK-CC1-NEXT: COMPLETION: Pattern : typeof <#expression#>
5959
// CHECK-CC1-NEXT: COMPLETION: Pattern : typeof(<#type#>)
6060
// CHECK-CC1-NEXT: COMPLETION: union
@@ -97,7 +97,7 @@ void foo() {
9797
// CHECK-CC2-NEXT: COMPLETION: Pattern : template<<#parameters#>>
9898
// CHECK-CC2-NEXT: COMPLETION: TYPEDEF : TYPEDEF
9999
// CHECK-CC2-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
100-
// CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
100+
// CHECK-CC2-NEXT: COMPLETION: Pattern : typename <#name#>
101101
// CHECK-CC2-NEXT: COMPLETION: Pattern : typeof <#expression#>
102102
// CHECK-CC2-NEXT: COMPLETION: Pattern : typeof(<#type#>)
103103
// CHECK-CC2-NEXT: COMPLETION: union
@@ -134,7 +134,7 @@ void foo() {
134134
// CHECK-CC3-NEXT: COMPLETION: struct
135135
// CHECK-CC3-NEXT: COMPLETION: Pattern : template<<#parameters#>>
136136
// CHECK-CC3-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
137-
// CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
137+
// CHECK-CC3-NEXT: COMPLETION: Pattern : typename <#name#>
138138
// CHECK-CC3-NEXT: COMPLETION: Pattern : typeof <#expression#>
139139
// CHECK-CC3-NEXT: COMPLETION: Pattern : typeof(<#type#>)
140140
// CHECK-CC3-NEXT: COMPLETION: union
@@ -176,7 +176,7 @@ void foo() {
176176
// CHECK-CC4-NEXT: COMPLETION: Pattern : [#bool#]true
177177
// CHECK-CC4-NEXT: COMPLETION: TYPEDEF : TYPEDEF
178178
// CHECK-CC4-NEXT: COMPLETION: Pattern : [#std::type_info#]typeid(<#expression-or-type#>)
179-
// CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
179+
// CHECK-CC4-NEXT: COMPLETION: Pattern : typename <#name#>
180180
// CHECK-CC4-NEXT: COMPLETION: Pattern : typeof <#expression#>
181181
// CHECK-CC4-NEXT: COMPLETION: Pattern : typeof(<#type#>)
182182
// CHECK-CC4-NEXT: COMPLETION: union
@@ -227,7 +227,7 @@ void foo() {
227227
// CHECK-NO-RTTI: COMPLETION: TYPEDEF : TYPEDEF
228228
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typedef <#type#> <#name#>;
229229
// CHECK-NO-RTTI-NOT: typeid
230-
// CHECK-NO-RTTI: COMPLETION: Pattern : typename <#qualifier#>::<#name#>
230+
// CHECK-NO-RTTI: COMPLETION: Pattern : typename <#name#>
231231
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof <#expression#>
232232
// CHECK-NO-RTTI-NEXT: COMPLETION: Pattern : typeof(<#type#>)
233233
// CHECK-NO-RTTI-NEXT: COMPLETION: union

0 commit comments

Comments
 (0)