From 014343e8d57f35ac6b01c619d9a3d8989de39dfe Mon Sep 17 00:00:00 2001 From: TupikovVladimir Date: Fri, 12 Jun 2020 01:46:27 +0300 Subject: [PATCH] enh(csharp) highlight generics in more cases (#2599) --- src/languages/csharp.js | 14 ++++++++++---- test/markup/csharp/generic_modifiers.expect.txt | 11 ++++++++--- test/markup/csharp/generic_modifiers.txt | 4 ++++ test/markup/csharp/titles.expect.txt | 2 +- 4 files changed, 23 insertions(+), 8 deletions(-) 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 {} }