Skip to content

Commit

Permalink
Merge pull request microsoft#35 from DustinCampbell/fix-initializer-w…
Browse files Browse the repository at this point in the history
…ith-lambda

Ensure that anonymous method expressions (or lambdas) end at a closing brace
  • Loading branch information
DustinCampbell committed Feb 5, 2017
2 parents 11f7337 + edf7cdf commit ec76822
Show file tree
Hide file tree
Showing 4 changed files with 62 additions and 9 deletions.
6 changes: 3 additions & 3 deletions grammars/csharp.tmLanguage
Original file line number Diff line number Diff line change
Expand Up @@ -5536,7 +5536,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=\)|;)</string>
<string>(?=\)|;|})</string>
<key>patterns</key>
<array>
<dict>
Expand Down Expand Up @@ -5579,7 +5579,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=\)|;)</string>
<string>(?=\)|;|})</string>
<key>patterns</key>
<array>
<dict>
Expand Down Expand Up @@ -5611,7 +5611,7 @@
</dict>
</dict>
<key>end</key>
<string>(?=\)|;)</string>
<string>(?=\)|;|})</string>
<key>patterns</key>
<array>
<dict>
Expand Down
6 changes: 3 additions & 3 deletions grammars/csharp.tmLanguage.cson
Original file line number Diff line number Diff line change
Expand Up @@ -3312,7 +3312,7 @@ repository:
name: "entity.name.variable.parameter.cs"
"3":
name: "keyword.operator.arrow.cs"
end: "(?=\\)|;)"
end: "(?=\\)|;|})"
patterns: [
{
include: "#block"
Expand Down Expand Up @@ -3340,7 +3340,7 @@ repository:
]
"3":
name: "keyword.operator.arrow.cs"
end: "(?=\\)|;)"
end: "(?=\\)|;|})"
patterns: [
{
include: "#block"
Expand All @@ -3361,7 +3361,7 @@ repository:
name: "storage.modifier.cs"
"2":
name: "keyword.other.delegate.cs"
end: "(?=\\)|;)"
end: "(?=\\)|;|})"
patterns: [
{
include: "#parenthesized-parameter-list"
Expand Down
6 changes: 3 additions & 3 deletions src/csharp.tmLanguage.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2149,7 +2149,7 @@ repository:
'1': { name: storage.modifier.cs }
'2': { name: entity.name.variable.parameter.cs }
'3': { name: keyword.operator.arrow.cs }
end: (?=\)|;)
end: (?=\)|;|})
patterns:
- include: '#block'
- include: '#expression'
Expand All @@ -2164,7 +2164,7 @@ repository:
patterns:
- include: '#lambda-parameter-list'
'3': { name: keyword.operator.arrow.cs }
end: (?=\)|;)
end: (?=\)|;|})
patterns:
- include: '#block'
- include: '#expression'
Expand All @@ -2175,7 +2175,7 @@ repository:
beginCaptures:
'1': { name: storage.modifier.cs }
'2': { name: keyword.other.delegate.cs }
end: (?=\)|;)
end: (?=\)|;|})
patterns:
- include: '#parenthesized-parameter-list'
- include: '#block'
Expand Down
53 changes: 53 additions & 0 deletions test/field.tests.ts
Original file line number Diff line number Diff line change
Expand Up @@ -331,5 +331,58 @@ private readonly string initSportMessageFormatString = "line1"
Token.Punctuation.Semicolon
]);
});

it("initializer containing lambda (issue #31)", () => {
const input = `
class C
{
List<Action> f = new List<Action>
{
() => DoStuff()
};
public C(int x, int y) { }
}`;

let tokens = tokenize(input);

tokens.should.deep.equal([
Token.Keywords.Class,
Token.Identifiers.ClassName("C"),
Token.Punctuation.OpenBrace,
Token.Type("List"),
Token.Punctuation.TypeParameters.Begin,
Token.Type("Action"),
Token.Punctuation.TypeParameters.End,
Token.Identifiers.FieldName("f"),
Token.Operators.Assignment,
Token.Keywords.New,
Token.Type("List"),
Token.Punctuation.TypeParameters.Begin,
Token.Type("Action"),
Token.Punctuation.TypeParameters.End,
Token.Punctuation.OpenBrace,
Token.Punctuation.OpenParen,
Token.Punctuation.CloseParen,
Token.Operators.Arrow,
Token.Identifiers.MethodName("DoStuff"),
Token.Punctuation.OpenParen,
Token.Punctuation.CloseParen,
Token.Punctuation.CloseBrace,
Token.Punctuation.Semicolon,
Token.Keywords.Modifiers.Public,
Token.Identifiers.MethodName("C"),
Token.Punctuation.OpenParen,
Token.PrimitiveType.Int,
Token.Identifiers.ParameterName("x"),
Token.Punctuation.Comma,
Token.PrimitiveType.Int,
Token.Identifiers.ParameterName("y"),
Token.Punctuation.CloseParen,
Token.Punctuation.OpenBrace,
Token.Punctuation.CloseBrace,
Token.Punctuation.CloseBrace
]);
});
});
});

0 comments on commit ec76822

Please sign in to comment.