Skip to content

Commit 014343e

Browse files
enh(csharp) highlight generics in more cases (#2599)
1 parent b4046ce commit 014343e

File tree

4 files changed

+23
-8
lines changed

4 files changed

+23
-8
lines changed

src/languages/csharp.js

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,10 @@ export default function(hljs) {
9191
var GENERIC_MODIFIER = {
9292
begin: "<",
9393
end: ">",
94-
keywords: "in out"
94+
contains: [
95+
{ beginKeywords: "in out"},
96+
TITLE_MODE
97+
]
9598
};
9699
var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';
97100
var AT_IDENTIFIER = {
@@ -177,13 +180,16 @@ export default function(hljs) {
177180
},
178181
{
179182
className: 'function',
180-
begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*\\(', returnBegin: true,
183+
begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true,
181184
end: /\s*[{;=]/, excludeEnd: true,
182185
keywords: KEYWORDS,
183186
contains: [
184187
{
185-
begin: hljs.IDENT_RE + '\\s*\\(', returnBegin: true,
186-
contains: [hljs.TITLE_MODE],
188+
begin: hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true,
189+
contains: [
190+
hljs.TITLE_MODE,
191+
GENERIC_MODIFIER
192+
],
187193
relevance: 0
188194
},
189195
{
Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,12 @@
1-
<span class="hljs-keyword">interface</span> <span class="hljs-title">IObserver</span>&lt;<span class="hljs-keyword">in</span> T&gt;;
1+
<span class="hljs-keyword">interface</span> <span class="hljs-title">IObserver</span>&lt;<span class="hljs-keyword">in</span> <span class="hljs-title">T</span>&gt;;
22
{}
33

4-
<span class="hljs-keyword">interface</span> <span class="hljs-title">IObservable</span>&lt;<span class="hljs-keyword">out</span> T&gt;;
4+
<span class="hljs-keyword">interface</span> <span class="hljs-title">IObservable</span>&lt;<span class="hljs-keyword">out</span> <span class="hljs-title">T</span>&gt;;
55
{}
66

7-
<span class="hljs-keyword">public</span> <span class="hljs-keyword">delegate</span> <span class="hljs-keyword">void</span> DContravariant&lt;<span class="hljs-keyword">in</span> A&gt;(A argument);
7+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">delegate</span> <span class="hljs-keyword">void</span> <span class="hljs-title">DContravariant</span>&lt;<span class="hljs-keyword">in</span> <span class="hljs-title">A</span>&gt;(<span class="hljs-params">A argument</span>)</span>;
8+
9+
<span class="hljs-function"><span class="hljs-keyword">public</span> <span class="hljs-keyword">delegate</span> A <span class="hljs-title">DCovariant</span>&lt;<span class="hljs-keyword">out</span> <span class="hljs-title">A</span>&gt;(<span class="hljs-params"></span>)</span>;
10+
11+
<span class="hljs-function"><span class="hljs-keyword">void</span> <span class="hljs-title">MethodWithGenericParameter</span>&lt;<span class="hljs-title">T</span>&gt;(<span class="hljs-params"></span>)
12+
</span>

test/markup/csharp/generic_modifiers.txt

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,7 @@ interface IObservable<out T>;
55
{}
66

77
public delegate void DContravariant<in A>(A argument);
8+
9+
public delegate A DCovariant<out A>();
10+
11+
void MethodWithGenericParameter<T>()

test/markup/csharp/titles.expect.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@
1616
}
1717
}
1818

19-
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">TesterA</span>&lt;R, S&gt; <span class="hljs-keyword">where</span> <span class="hljs-title">R</span> : <span class="hljs-keyword">class</span> <span class="hljs-keyword">where</span> <span class="hljs-title">S</span> : <span class="hljs-title">IComparable</span>
19+
<span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> <span class="hljs-title">TesterA</span>&lt;<span class="hljs-title">R</span>, <span class="hljs-title">S</span>&gt; <span class="hljs-keyword">where</span> <span class="hljs-title">R</span> : <span class="hljs-keyword">class</span> <span class="hljs-keyword">where</span> <span class="hljs-title">S</span> : <span class="hljs-title">IComparable</span>
2020
{}
2121
}

0 commit comments

Comments
 (0)