Browse Source

FIx word breaker for keyword identifiers

Matt Masson 7 years ago
parent
commit
7c6fe3b1bf
2 changed files with 36 additions and 2 deletions
  1. 34 0
      src/powerquery/powerquery.test.ts
  2. 2 2
      src/powerquery/powerquery.ts

+ 34 - 0
src/powerquery/powerquery.test.ts

@@ -116,6 +116,27 @@ testTokenization('powerquery', [
 	}],
 
 	// Number formats
+	[{
+		line: '0Xabc',
+		tokens: [
+			{ startIndex: 0, type: 'number.hex.pq' }
+		]
+	}],
+
+	[{
+		line: '0xA',
+		tokens: [
+			{ startIndex: 0, type: 'number.hex.pq' }
+		]
+	}],
+
+	[{
+		line: '1e1',
+		tokens: [
+			{ startIndex: 0, type: 'number.pq' }
+		]
+	}],
+
 	[{
 		line: '5 / 1.2e+2 + 0x1234abc',
 		tokens: [
@@ -280,4 +301,17 @@ testTokenization('powerquery', [
 			{ startIndex: 55, type: "delimiter.pq" }
 		]
 	}],
+
+	[{
+		line: 'isFunctionthen = 1;// comment',
+		tokens: [
+			{ startIndex: 0, type: 'identifier.pq' },
+			{ startIndex: 14, type: 'white.pq' },
+			{ startIndex: 15, type: 'operators.pq' },
+			{ startIndex: 16, type: 'white.pq' },
+			{ startIndex: 17, type: 'number.pq' },
+			{ startIndex: 18, type: 'delimiter.pq' },
+			{ startIndex: 19, type: 'comment.pq' },
+		]
+	}],
 ]);

+ 2 - 2
src/powerquery/powerquery.ts

@@ -97,7 +97,7 @@ export const language = <ILanguage>{
 			[/\d+([eE][\-+]?\d+)?/, "number"],
 
 			// keywords
-			[/(#?[a-z]+)/,
+			[/(#?[a-z]+)\b/,
 				{
 					cases: {
 						"@typeKeywords": "type",
@@ -111,7 +111,7 @@ export const language = <ILanguage>{
 			],
 
 			// other identifiers
-			[/([a-zA-Z_][\w\.]*)/, "identifier"],
+			[/\b([a-zA-Z_][\w\.]*)\b/, "identifier"],
 
 			{ include: "@whitespace" },
 			{ include: "@comments" },