Skip to content

Commit 1933252

Browse files
authored
Merge pull request #296 from wise0704/generic
Fix generic method invocation performance
2 parents 345d41d + 6666eb1 commit 1933252

File tree

4 files changed

+34
-12
lines changed

4 files changed

+34
-12
lines changed

grammars/csharp.tmLanguage

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6771,10 +6771,10 @@
67716771
(
67726772
<
67736773
(?<type_args>
6774-
[^<>()]+|
6775-
<\g<type_args>+>|
6776-
\(\g<type_args>+\)
6777-
)+
6774+
[^<>()]++|
6775+
<\g<type_args>*+>|
6776+
\(\g<type_args>*+\)
6777+
)*+
67786778
>\s*
67796779
)? # type arguments
67806780
(?=\() # open paren of argument list</string>

grammars/csharp.tmLanguage.cson

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4056,10 +4056,10 @@ repository:
40564056
(
40574057
<
40584058
(?<type_args>
4059-
[^<>()]+|
4060-
<\\g<type_args>+>|
4061-
\\(\\g<type_args>+\\)
4062-
)+
4059+
[^<>()]++|
4060+
<\\g<type_args>*+>|
4061+
\\(\\g<type_args>*+\\)
4062+
)*+
40634063
>\\s*
40644064
)? # type arguments
40654065
(?=\\() # open paren of argument list

src/csharp.tmLanguage.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2582,10 +2582,10 @@ repository:
25822582
(
25832583
<
25842584
(?<type_args>
2585-
[^<>()]+|
2586-
<\g<type_args>+>|
2587-
\(\g<type_args>+\)
2588-
)+
2585+
[^<>()]++|
2586+
<\g<type_args>*+>|
2587+
\(\g<type_args>*+\)
2588+
)*+
25892589
>\s*
25902590
)? # type arguments
25912591
(?=\() # open paren of argument list

test/expressions.tests.ts

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3013,6 +3013,28 @@ f(A<(B,C)>(D+E));`);
30133013
]);
30143014
});
30153015

3016+
it("generic with long type arg candidate (issue #295)", async () => {
3017+
const input = Input.InMethod(`
3018+
if (currentTab < lastTab && setTabWithoutUpdate(currentTab)) { }`);
3019+
const tokens = await tokenize(input);
3020+
3021+
tokens.should.deep.equal([
3022+
Token.Keyword.Conditional.If,
3023+
Token.Punctuation.OpenParen,
3024+
Token.Variable.ReadWrite("currentTab"),
3025+
Token.Operator.Relational.LessThan,
3026+
Token.Variable.ReadWrite("lastTab"),
3027+
Token.Operator.Logical.And,
3028+
Token.Identifier.MethodName("setTabWithoutUpdate"),
3029+
Token.Punctuation.OpenParen,
3030+
Token.Variable.ReadWrite("currentTab"),
3031+
Token.Punctuation.CloseParen,
3032+
Token.Punctuation.CloseParen,
3033+
Token.Punctuation.OpenBrace,
3034+
Token.Punctuation.CloseBrace,
3035+
]);
3036+
});
3037+
30163038
it("member of generic with no arguments", async () => {
30173039
const input = Input.InMethod(`C<int>.M();`);
30183040
const tokens = await tokenize(input);

0 commit comments

Comments
 (0)