diff --git a/src/languages/csharp.js b/src/languages/csharp.js
index a68c265d17..8c20e37db9 100644
--- a/src/languages/csharp.js
+++ b/src/languages/csharp.js
@@ -91,7 +91,10 @@ export default function(hljs) {
var GENERIC_MODIFIER = {
begin: "<",
end: ">",
- keywords: "in out"
+ contains: [
+ { beginKeywords: "in out"},
+ TITLE_MODE
+ ]
};
var TYPE_IDENT_RE = hljs.IDENT_RE + '(<' + hljs.IDENT_RE + '(\\s*,\\s*' + hljs.IDENT_RE + ')*>)?(\\[\\])?';
var AT_IDENTIFIER = {
@@ -177,13 +180,16 @@ export default function(hljs) {
},
{
className: 'function',
- begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*\\(', returnBegin: true,
+ begin: '(' + TYPE_IDENT_RE + '\\s+)+' + hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true,
end: /\s*[{;=]/, excludeEnd: true,
keywords: KEYWORDS,
contains: [
{
- begin: hljs.IDENT_RE + '\\s*\\(', returnBegin: true,
- contains: [hljs.TITLE_MODE],
+ begin: hljs.IDENT_RE + '\\s*(\\<.+\\>)?\\s*\\(', returnBegin: true,
+ contains: [
+ hljs.TITLE_MODE,
+ GENERIC_MODIFIER
+ ],
relevance: 0
},
{
diff --git a/test/markup/csharp/generic_modifiers.expect.txt b/test/markup/csharp/generic_modifiers.expect.txt
index bf6d8c3fba..6e0a0ef4dc 100644
--- a/test/markup/csharp/generic_modifiers.expect.txt
+++ b/test/markup/csharp/generic_modifiers.expect.txt
@@ -1,7 +1,12 @@
-interface IObserver<in T>;
+interface IObserver<in T>;
{}
-interface IObservable<out T>;
+interface IObservable<out T>;
{}
-public delegate void DContravariant<in A>(A argument);
+public delegate void DContravariant<in A>(A argument);
+
+public delegate A DCovariant<out A>();
+
+void MethodWithGenericParameter<T>()
+
\ No newline at end of file
diff --git a/test/markup/csharp/generic_modifiers.txt b/test/markup/csharp/generic_modifiers.txt
index 0af70e5c53..71273e85b2 100644
--- a/test/markup/csharp/generic_modifiers.txt
+++ b/test/markup/csharp/generic_modifiers.txt
@@ -5,3 +5,7 @@ interface IObservable;
{}
public delegate void DContravariant(A argument);
+
+public delegate A DCovariant();
+
+void MethodWithGenericParameter()
diff --git a/test/markup/csharp/titles.expect.txt b/test/markup/csharp/titles.expect.txt
index be471a6db1..46fa652d17 100644
--- a/test/markup/csharp/titles.expect.txt
+++ b/test/markup/csharp/titles.expect.txt
@@ -16,6 +16,6 @@
}
}
- public class TesterA<R, S> where R : class where S : IComparable
+ public class TesterA<R, S> where R : class where S : IComparable
{}
}