From df04a93814e87f736dbb68ccafcd76fecda1ea94 Mon Sep 17 00:00:00 2001 From: Argyrios Kyrtzidis Date: Fri, 17 Apr 2015 01:01:25 +0000 Subject: [PATCH] [IDE] Report the editor placeholders in the syntax model. rdar://20572261 Swift SVN r27392 --- include/swift/IDE/SyntaxModel.h | 4 +++- lib/IDE/SyntaxModel.cpp | 7 ++++++- test/IDE/coloring.swift | 3 +++ tools/swift-ide-test/swift-ide-test.cpp | 2 ++ 4 files changed, 14 insertions(+), 2 deletions(-) diff --git a/include/swift/IDE/SyntaxModel.h b/include/swift/IDE/SyntaxModel.h index db1877569a2..bf86ddd22c8 100644 --- a/include/swift/IDE/SyntaxModel.h +++ b/include/swift/IDE/SyntaxModel.h @@ -48,7 +48,9 @@ enum class SyntaxNodeKind : uint8_t { /// Any occurence of '@' anywhere. AttributeId, /// A "resolved/active" attribute. Mis-applied attributes will be AttributeId. - AttributeBuiltin + AttributeBuiltin, + /// An editor placeholder string <#like this#>. + EditorPlaceholder, }; struct SyntaxNode { diff --git a/lib/IDE/SyntaxModel.cpp b/lib/IDE/SyntaxModel.cpp index 78d52f90d26..cfc9a20aa1b 100644 --- a/lib/IDE/SyntaxModel.cpp +++ b/lib/IDE/SyntaxModel.cpp @@ -85,7 +85,12 @@ SyntaxModelContext::SyntaxModelContext(SourceFile &SrcFile) #undef KEYWORD case tok::pound_available: Kind = SyntaxNodeKind::BuildConfigKeyword; break; - case tok::identifier: Kind = SyntaxNodeKind::Identifier; break; + case tok::identifier: + if (Tok.getText().startswith("<#")) + Kind = SyntaxNodeKind::EditorPlaceholder; + else + Kind = SyntaxNodeKind::Identifier; + break; case tok::dollarident: Kind = SyntaxNodeKind::DollarIdent; break; case tok::integer_literal: Kind = SyntaxNodeKind::Integer; break; case tok::floating_literal: Kind = SyntaxNodeKind::Floating; break; diff --git a/test/IDE/coloring.swift b/test/IDE/coloring.swift index b22c5179a21..f09d8696572 100644 --- a/test/IDE/coloring.swift +++ b/test/IDE/coloring.swift @@ -313,3 +313,6 @@ func test5() -> Int { // CHECK: // http://whatever.com/what-ever // http://whatever.com/what-ever + +// CHECK: func <#test1#> () {} +func <#test1#> () {} diff --git a/tools/swift-ide-test/swift-ide-test.cpp b/tools/swift-ide-test/swift-ide-test.cpp index aad8d5b02f3..b2d0457f890 100644 --- a/tools/swift-ide-test/swift-ide-test.cpp +++ b/tools/swift-ide-test/swift-ide-test.cpp @@ -645,6 +645,7 @@ public: case SyntaxNodeKind::BuildConfigId: Id = "#id"; break; case SyntaxNodeKind::AttributeId: Id = "attr-id"; break; case SyntaxNodeKind::AttributeBuiltin: Id = "attr-builtin"; break; + case SyntaxNodeKind::EditorPlaceholder: Id = "placeholder"; break; } OS << (Begin ? "<" : "'; @@ -671,6 +672,7 @@ public: case SyntaxNodeKind::BuildConfigId: Col = llvm::raw_ostream::YELLOW; break; case SyntaxNodeKind::AttributeId: Col = llvm::raw_ostream::CYAN; break; case SyntaxNodeKind::AttributeBuiltin: Col = llvm::raw_ostream::MAGENTA; break; + case SyntaxNodeKind::EditorPlaceholder: Col = llvm::raw_ostream::YELLOW; break; } if (Begin) {