From de351510913cc0d55ffaca0221c227d98323c24e Mon Sep 17 00:00:00 2001 From: Sandy Armstrong Date: Fri, 28 Apr 2017 14:34:17 -0700 Subject: [PATCH] csharp: add support for binary literals and _ as separator Note that proper `_` usage is not enforced; this matches vscode behavior. --- src/csharp.ts | 7 +++--- test/csharp.test.ts | 55 +++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 59 insertions(+), 3 deletions(-) diff --git a/src/csharp.ts b/src/csharp.ts index 07e53199..6652ee72 100644 --- a/src/csharp.ts +++ b/src/csharp.ts @@ -102,9 +102,10 @@ export var language = { [/\$"/, { token: 'string.quote', next: '@interpolatedstring' } ], // numbers - [/\d*\.\d+([eE][\-+]?\d+)?[fFdD]?/, 'number.float'], - [/0[xX][0-9a-fA-F]+/, 'number.hex'], - [/\d+/, 'number'], + [/[0-9_]*\.[0-9_]+([eE][\-+]?\d+)?[fFdD]?/, 'number.float'], + [/0[xX][0-9a-fA-F_]+/, 'number.hex'], + [/0[bB][01_]+/, 'number.hex'], // binary: use same theme style as hex + [/[0-9_]+/, 'number'], // delimiter: after number because of .\d floats [/[;,.]/, 'delimiter'], diff --git a/test/csharp.test.ts b/test/csharp.test.ts index 8d121e5f..c8e738bf 100644 --- a/test/csharp.test.ts +++ b/test/csharp.test.ts @@ -525,6 +525,12 @@ testTokenization('csharp', [ { startIndex: 0, type: 'number.cs' } ]}], + [{ + line: '123_456', + tokens: [ + { startIndex: 0, type: 'number.cs' } + ]}], + [{ line: '0x', tokens: [ @@ -532,18 +538,49 @@ testTokenization('csharp', [ { startIndex: 1, type: 'identifier.cs' } ]}], + [{ + line: '0b', + tokens: [ + { startIndex: 0, type: 'number.cs' }, + { startIndex: 1, type: 'identifier.cs' } + ]}], + [{ line: '0x123', tokens: [ { startIndex: 0, type: 'number.hex.cs' } ]}], + [{ + line: '0x123_456', + tokens: [ + { startIndex: 0, type: 'number.hex.cs' } + ]}], + + [{ + line: '0b101', + tokens: [ + { startIndex: 0, type: 'number.hex.cs' } + ]}], + + [{ + line: '0b1010_0001', + tokens: [ + { startIndex: 0, type: 'number.hex.cs' } + ]}], + [{ line: '23.5', tokens: [ { startIndex: 0, type: 'number.float.cs' } ]}], + [{ + line: '1_23.5', + tokens: [ + { startIndex: 0, type: 'number.float.cs' } + ]}], + [{ line: '23.5e3', tokens: [ @@ -568,6 +605,12 @@ testTokenization('csharp', [ { startIndex: 0, type: 'number.float.cs' } ]}], + [{ + line: '2_3.5f', + tokens: [ + { startIndex: 0, type: 'number.float.cs' } + ]}], + [{ line: '1.72E3F', tokens: [ @@ -598,6 +641,12 @@ testTokenization('csharp', [ { startIndex: 0, type: 'number.float.cs' } ]}], + [{ + line: '456_123.5D', + tokens: [ + { startIndex: 0, type: 'number.float.cs' } + ]}], + [{ line: '23.5d', tokens: [ @@ -616,6 +665,12 @@ testTokenization('csharp', [ { startIndex: 0, type: 'number.float.cs' } ]}], + [{ + line: '1.720_123E3d', + tokens: [ + { startIndex: 0, type: 'number.float.cs' } + ]}], + [{ line: '1.72e3D', tokens: [