diff options
author | Nathan James <n.james93@hotmail.co.uk> | 2021-01-22 23:40:35 +0000 |
---|---|---|
committer | Nathan James <n.james93@hotmail.co.uk> | 2021-01-22 23:40:35 +0000 |
commit | d18c3c7b18e9e78145d701c4687682848071ab98 (patch) | |
tree | ac5b214bae494c7121f615b80cbe860c3c53238d /clang/lib/Sema/SemaCodeComplete.cpp | |
parent | 25fefa5a098e958888496735f793fd01f3e82874 (diff) | |
download | llvm-d18c3c7b18e9e78145d701c4687682848071ab98.zip llvm-d18c3c7b18e9e78145d701c4687682848071ab98.tar.gz llvm-d18c3c7b18e9e78145d701c4687682848071ab98.tar.bz2 |
[CodeComplete] Add ranged for loops code pattern.
Add code pattersn for c++ `range for` loops and objective c `for...in` loops.
Reviewed By: kadircet
Differential Revision: https://reviews.llvm.org/D95131
Diffstat (limited to 'clang/lib/Sema/SemaCodeComplete.cpp')
-rw-r--r-- | clang/lib/Sema/SemaCodeComplete.cpp | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaCodeComplete.cpp b/clang/lib/Sema/SemaCodeComplete.cpp index 243f68d..d77c9e4 100644 --- a/clang/lib/Sema/SemaCodeComplete.cpp +++ b/clang/lib/Sema/SemaCodeComplete.cpp @@ -2294,6 +2294,29 @@ static void AddOrdinaryNameResults(Sema::ParserCompletionContext CCC, Scope *S, Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); Builder.AddChunk(CodeCompletionString::CK_RightBrace); Results.AddResult(Result(Builder.TakeString())); + + if (SemaRef.getLangOpts().CPlusPlus11 || SemaRef.getLangOpts().ObjC) { + // for ( range_declaration (:|in) range_expression ) { statements } + Builder.AddTypedTextChunk("for"); + Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace); + Builder.AddChunk(CodeCompletionString::CK_LeftParen); + Builder.AddPlaceholderChunk("range-declaration"); + Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace); + if (SemaRef.getLangOpts().ObjC) + Builder.AddTextChunk("in"); + else + Builder.AddChunk(CodeCompletionString::CK_Colon); + Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace); + Builder.AddPlaceholderChunk("range-expression"); + Builder.AddChunk(CodeCompletionString::CK_RightParen); + Builder.AddChunk(CodeCompletionString::CK_HorizontalSpace); + Builder.AddChunk(CodeCompletionString::CK_LeftBrace); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); + Builder.AddPlaceholderChunk("statements"); + Builder.AddChunk(CodeCompletionString::CK_VerticalSpace); + Builder.AddChunk(CodeCompletionString::CK_RightBrace); + Results.AddResult(Result(Builder.TakeString())); + } } if (S->getContinueParent()) { |