Skip to content

Commit 0dd843b

Browse files
authored
fix(swift) - correct class func/var declaration highighting (#4154)
1 parent 2bd6ff6 commit 0dd843b

File tree

4 files changed

+61
-0
lines changed

4 files changed

+61
-0
lines changed

CHANGES.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ Core Grammars:
2424
- fix(cpp) added flat_set and flat_map as a part of cpp 23 version [Lavan]
2525
- fix(yaml) - Fixed special chars in yaml [Dxuian]
2626
- fix(basic) - Fixed closing quotation marks not required for a PRINT statement [Somya]
27+
- fix(swift) - Fixed syntax highlighting for class func/var declarations [guuido]
2728

2829
New Grammars:
2930

@@ -58,6 +59,7 @@ CONTRIBUTORS
5859
[Álvaro Mondéjar]: https://github.com/mondeja
5960
[Lavan]: https://github.com/jvlavan
6061
[Somya]: https://github.com/somya-05
62+
[guuido]: https://github.com/guuido
6163

6264

6365
## Version 11.10.0

src/languages/swift.js

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -460,6 +460,33 @@ export default function(hljs) {
460460
end: /}/
461461
};
462462

463+
const CLASS_FUNC_DECLARATION = {
464+
match: [
465+
/class\b/,
466+
/\s+/,
467+
/func\b/,
468+
/\s+/,
469+
/\b[A-Za-z_][A-Za-z0-9_]*\b/
470+
],
471+
scope: {
472+
1: "keyword",
473+
3: "keyword",
474+
5: "title.function"
475+
}
476+
};
477+
478+
const CLASS_VAR_DECLARATION = {
479+
match: [
480+
/class\b/,
481+
/\s+/,
482+
/var\b/,
483+
],
484+
scope: {
485+
1: "keyword",
486+
3: "keyword"
487+
}
488+
};
489+
463490
const TYPE_DECLARATION = {
464491
begin: [
465492
/(struct|protocol|class|extension|enum|actor)/,
@@ -524,6 +551,8 @@ export default function(hljs) {
524551
...COMMENTS,
525552
FUNCTION_OR_MACRO,
526553
INIT_SUBSCRIPT,
554+
CLASS_FUNC_DECLARATION,
555+
CLASS_VAR_DECLARATION,
527556
TYPE_DECLARATION,
528557
OPERATOR_DECLARATION,
529558
PRECEDENCEGROUP,
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<span class="hljs-keyword">class</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">f1</span>() -&gt; <span class="hljs-type">Void</span> { }
2+
3+
<span class="hljs-keyword">class</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">f2</span><span class="hljs-operator">&lt;</span><span class="hljs-type">T</span>: <span class="hljs-type">Comparable</span><span class="hljs-operator">&gt;</span>() -&gt; <span class="hljs-type">T</span> { }
4+
5+
<span class="hljs-keyword">class</span> <span class="hljs-keyword">func</span> <span class="hljs-title function_">f3</span><span class="hljs-operator">&lt;</span><span class="hljs-type">T</span><span class="hljs-operator">&gt;</span>(
6+
<span class="hljs-keyword">_</span> p1: <span class="hljs-type">Int</span>,
7+
p2: <span class="hljs-type">String</span>
8+
) <span class="hljs-keyword">async</span> <span class="hljs-keyword">throws</span> -&gt; [<span class="hljs-type">T</span>] { }
9+
10+
<span class="hljs-keyword">class</span> <span class="hljs-keyword">var</span> v1: <span class="hljs-type">Int</span> { <span class="hljs-keyword">get</span> <span class="hljs-keyword">set</span> }
11+
12+
<span class="hljs-keyword">class</span> <span class="hljs-keyword">var</span> v2: <span class="hljs-type">String</span> {
13+
<span class="hljs-keyword">get</span> { <span class="hljs-keyword">return</span> <span class="hljs-string">&quot;test&quot;</span> }
14+
<span class="hljs-keyword">set</span> { }
15+
}

test/markup/swift/class-func-var.txt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
class func f1() -> Void { }
2+
3+
class func f2<T: Comparable>() -> T { }
4+
5+
class func f3<T>(
6+
_ p1: Int,
7+
p2: String
8+
) async throws -> [T] { }
9+
10+
class var v1: Int { get set }
11+
12+
class var v2: String {
13+
get { return "test" }
14+
set { }
15+
}

0 commit comments

Comments
 (0)