mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-06 02:33:53 -06:00
Faster fixedWidthTokenLength function.
This commit is contained in:
parent
ddfdfc3dd5
commit
6fd900b4c2
@ -2154,16 +2154,28 @@ function max(array, func) {
|
||||
}
|
||||
return max;
|
||||
}
|
||||
function generateUtilities() {
|
||||
var result = "";
|
||||
result += " var fixedWidthArray = [";
|
||||
for (var i = 0; i <= TypeScript.SyntaxKind.LastFixedWidth; i++) {
|
||||
if (i) {
|
||||
result += ", ";
|
||||
}
|
||||
if (i < TypeScript.SyntaxKind.FirstFixedWidth) {
|
||||
result += "0";
|
||||
}
|
||||
else {
|
||||
result += TypeScript.SyntaxFacts.getText(i).length;
|
||||
}
|
||||
}
|
||||
result += "];\r\n";
|
||||
result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n";
|
||||
result += " return fixedWidthArray[kind];\r\n";
|
||||
result += " }\r\n";
|
||||
return result;
|
||||
}
|
||||
function generateScannerUtilities() {
|
||||
var result = "///<reference path='references.ts' />\r\n" + "\r\n" + "module TypeScript {\r\n" + " export module ScannerUtilities {\r\n";
|
||||
result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n";
|
||||
result += " switch (kind) {\r\n";
|
||||
for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) {
|
||||
result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n";
|
||||
}
|
||||
result += " default: throw new Error();\r\n";
|
||||
result += " }\r\n";
|
||||
result += " }\r\n\r\n";
|
||||
var i;
|
||||
var keywords = [];
|
||||
for (i = TypeScript.SyntaxKind.FirstKeyword; i <= TypeScript.SyntaxKind.LastKeyword; i++) {
|
||||
@ -2275,9 +2287,11 @@ var walker = generateWalker();
|
||||
var scannerUtilities = generateScannerUtilities();
|
||||
var visitor = generateVisitor();
|
||||
var servicesUtilities = generateServicesUtilities();
|
||||
var utilities = generateUtilities();
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker.generated.ts", walker, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxUtilities.generated.ts", servicesUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false);
|
||||
|
||||
@ -1708,114 +1708,8 @@ module TypeScript.Scanner {
|
||||
};
|
||||
}
|
||||
|
||||
var fixedWidthArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 8, 8, 7, 6, 2, 4, 5, 7, 3, 8, 2, 2, 10, 3, 4, 6, 6, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 5, 4, 6, 7, 6, 5, 10, 9, 3, 7, 7, 9, 6, 6, 5, 3, 7, 11, 7, 3, 6, 7, 6, 3, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 2, 2, 2, 1, 2];
|
||||
function fixedWidthTokenLength(kind: SyntaxKind) {
|
||||
switch (kind) {
|
||||
case SyntaxKind.BreakKeyword: return 5;
|
||||
case SyntaxKind.CaseKeyword: return 4;
|
||||
case SyntaxKind.CatchKeyword: return 5;
|
||||
case SyntaxKind.ContinueKeyword: return 8;
|
||||
case SyntaxKind.DebuggerKeyword: return 8;
|
||||
case SyntaxKind.DefaultKeyword: return 7;
|
||||
case SyntaxKind.DeleteKeyword: return 6;
|
||||
case SyntaxKind.DoKeyword: return 2;
|
||||
case SyntaxKind.ElseKeyword: return 4;
|
||||
case SyntaxKind.FalseKeyword: return 5;
|
||||
case SyntaxKind.FinallyKeyword: return 7;
|
||||
case SyntaxKind.ForKeyword: return 3;
|
||||
case SyntaxKind.FunctionKeyword: return 8;
|
||||
case SyntaxKind.IfKeyword: return 2;
|
||||
case SyntaxKind.InKeyword: return 2;
|
||||
case SyntaxKind.InstanceOfKeyword: return 10;
|
||||
case SyntaxKind.NewKeyword: return 3;
|
||||
case SyntaxKind.NullKeyword: return 4;
|
||||
case SyntaxKind.ReturnKeyword: return 6;
|
||||
case SyntaxKind.SwitchKeyword: return 6;
|
||||
case SyntaxKind.ThisKeyword: return 4;
|
||||
case SyntaxKind.ThrowKeyword: return 5;
|
||||
case SyntaxKind.TrueKeyword: return 4;
|
||||
case SyntaxKind.TryKeyword: return 3;
|
||||
case SyntaxKind.TypeOfKeyword: return 6;
|
||||
case SyntaxKind.VarKeyword: return 3;
|
||||
case SyntaxKind.VoidKeyword: return 4;
|
||||
case SyntaxKind.WhileKeyword: return 5;
|
||||
case SyntaxKind.WithKeyword: return 4;
|
||||
case SyntaxKind.ClassKeyword: return 5;
|
||||
case SyntaxKind.ConstKeyword: return 5;
|
||||
case SyntaxKind.EnumKeyword: return 4;
|
||||
case SyntaxKind.ExportKeyword: return 6;
|
||||
case SyntaxKind.ExtendsKeyword: return 7;
|
||||
case SyntaxKind.ImportKeyword: return 6;
|
||||
case SyntaxKind.SuperKeyword: return 5;
|
||||
case SyntaxKind.ImplementsKeyword: return 10;
|
||||
case SyntaxKind.InterfaceKeyword: return 9;
|
||||
case SyntaxKind.LetKeyword: return 3;
|
||||
case SyntaxKind.PackageKeyword: return 7;
|
||||
case SyntaxKind.PrivateKeyword: return 7;
|
||||
case SyntaxKind.ProtectedKeyword: return 9;
|
||||
case SyntaxKind.PublicKeyword: return 6;
|
||||
case SyntaxKind.StaticKeyword: return 6;
|
||||
case SyntaxKind.YieldKeyword: return 5;
|
||||
case SyntaxKind.AnyKeyword: return 3;
|
||||
case SyntaxKind.BooleanKeyword: return 7;
|
||||
case SyntaxKind.ConstructorKeyword: return 11;
|
||||
case SyntaxKind.DeclareKeyword: return 7;
|
||||
case SyntaxKind.GetKeyword: return 3;
|
||||
case SyntaxKind.ModuleKeyword: return 6;
|
||||
case SyntaxKind.RequireKeyword: return 7;
|
||||
case SyntaxKind.NumberKeyword: return 6;
|
||||
case SyntaxKind.SetKeyword: return 3;
|
||||
case SyntaxKind.StringKeyword: return 6;
|
||||
case SyntaxKind.OpenBraceToken: return 1;
|
||||
case SyntaxKind.CloseBraceToken: return 1;
|
||||
case SyntaxKind.OpenParenToken: return 1;
|
||||
case SyntaxKind.CloseParenToken: return 1;
|
||||
case SyntaxKind.OpenBracketToken: return 1;
|
||||
case SyntaxKind.CloseBracketToken: return 1;
|
||||
case SyntaxKind.DotToken: return 1;
|
||||
case SyntaxKind.DotDotDotToken: return 3;
|
||||
case SyntaxKind.SemicolonToken: return 1;
|
||||
case SyntaxKind.CommaToken: return 1;
|
||||
case SyntaxKind.LessThanToken: return 1;
|
||||
case SyntaxKind.GreaterThanToken: return 1;
|
||||
case SyntaxKind.LessThanEqualsToken: return 2;
|
||||
case SyntaxKind.GreaterThanEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsGreaterThanToken: return 2;
|
||||
case SyntaxKind.ExclamationEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsEqualsEqualsToken: return 3;
|
||||
case SyntaxKind.ExclamationEqualsEqualsToken: return 3;
|
||||
case SyntaxKind.PlusToken: return 1;
|
||||
case SyntaxKind.MinusToken: return 1;
|
||||
case SyntaxKind.AsteriskToken: return 1;
|
||||
case SyntaxKind.PercentToken: return 1;
|
||||
case SyntaxKind.PlusPlusToken: return 2;
|
||||
case SyntaxKind.MinusMinusToken: return 2;
|
||||
case SyntaxKind.LessThanLessThanToken: return 2;
|
||||
case SyntaxKind.GreaterThanGreaterThanToken: return 2;
|
||||
case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return 3;
|
||||
case SyntaxKind.AmpersandToken: return 1;
|
||||
case SyntaxKind.BarToken: return 1;
|
||||
case SyntaxKind.CaretToken: return 1;
|
||||
case SyntaxKind.ExclamationToken: return 1;
|
||||
case SyntaxKind.TildeToken: return 1;
|
||||
case SyntaxKind.AmpersandAmpersandToken: return 2;
|
||||
case SyntaxKind.BarBarToken: return 2;
|
||||
case SyntaxKind.QuestionToken: return 1;
|
||||
case SyntaxKind.ColonToken: return 1;
|
||||
case SyntaxKind.EqualsToken: return 1;
|
||||
case SyntaxKind.PlusEqualsToken: return 2;
|
||||
case SyntaxKind.MinusEqualsToken: return 2;
|
||||
case SyntaxKind.AsteriskEqualsToken: return 2;
|
||||
case SyntaxKind.PercentEqualsToken: return 2;
|
||||
case SyntaxKind.LessThanLessThanEqualsToken: return 3;
|
||||
case SyntaxKind.GreaterThanGreaterThanEqualsToken: return 3;
|
||||
case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: return 4;
|
||||
case SyntaxKind.AmpersandEqualsToken: return 2;
|
||||
case SyntaxKind.BarEqualsToken: return 2;
|
||||
case SyntaxKind.CaretEqualsToken: return 2;
|
||||
case SyntaxKind.SlashToken: return 1;
|
||||
case SyntaxKind.SlashEqualsToken: return 2;
|
||||
default: throw new Error();
|
||||
}
|
||||
return fixedWidthArray[kind];
|
||||
}
|
||||
}
|
||||
@ -2,117 +2,6 @@
|
||||
|
||||
module TypeScript {
|
||||
export module ScannerUtilities {
|
||||
export function fixedWidthTokenLength(kind: SyntaxKind) {
|
||||
switch (kind) {
|
||||
case SyntaxKind.BreakKeyword: return 5;
|
||||
case SyntaxKind.CaseKeyword: return 4;
|
||||
case SyntaxKind.CatchKeyword: return 5;
|
||||
case SyntaxKind.ContinueKeyword: return 8;
|
||||
case SyntaxKind.DebuggerKeyword: return 8;
|
||||
case SyntaxKind.DefaultKeyword: return 7;
|
||||
case SyntaxKind.DeleteKeyword: return 6;
|
||||
case SyntaxKind.DoKeyword: return 2;
|
||||
case SyntaxKind.ElseKeyword: return 4;
|
||||
case SyntaxKind.FalseKeyword: return 5;
|
||||
case SyntaxKind.FinallyKeyword: return 7;
|
||||
case SyntaxKind.ForKeyword: return 3;
|
||||
case SyntaxKind.FunctionKeyword: return 8;
|
||||
case SyntaxKind.IfKeyword: return 2;
|
||||
case SyntaxKind.InKeyword: return 2;
|
||||
case SyntaxKind.InstanceOfKeyword: return 10;
|
||||
case SyntaxKind.NewKeyword: return 3;
|
||||
case SyntaxKind.NullKeyword: return 4;
|
||||
case SyntaxKind.ReturnKeyword: return 6;
|
||||
case SyntaxKind.SwitchKeyword: return 6;
|
||||
case SyntaxKind.ThisKeyword: return 4;
|
||||
case SyntaxKind.ThrowKeyword: return 5;
|
||||
case SyntaxKind.TrueKeyword: return 4;
|
||||
case SyntaxKind.TryKeyword: return 3;
|
||||
case SyntaxKind.TypeOfKeyword: return 6;
|
||||
case SyntaxKind.VarKeyword: return 3;
|
||||
case SyntaxKind.VoidKeyword: return 4;
|
||||
case SyntaxKind.WhileKeyword: return 5;
|
||||
case SyntaxKind.WithKeyword: return 4;
|
||||
case SyntaxKind.ClassKeyword: return 5;
|
||||
case SyntaxKind.ConstKeyword: return 5;
|
||||
case SyntaxKind.EnumKeyword: return 4;
|
||||
case SyntaxKind.ExportKeyword: return 6;
|
||||
case SyntaxKind.ExtendsKeyword: return 7;
|
||||
case SyntaxKind.ImportKeyword: return 6;
|
||||
case SyntaxKind.SuperKeyword: return 5;
|
||||
case SyntaxKind.ImplementsKeyword: return 10;
|
||||
case SyntaxKind.InterfaceKeyword: return 9;
|
||||
case SyntaxKind.LetKeyword: return 3;
|
||||
case SyntaxKind.PackageKeyword: return 7;
|
||||
case SyntaxKind.PrivateKeyword: return 7;
|
||||
case SyntaxKind.ProtectedKeyword: return 9;
|
||||
case SyntaxKind.PublicKeyword: return 6;
|
||||
case SyntaxKind.StaticKeyword: return 6;
|
||||
case SyntaxKind.YieldKeyword: return 5;
|
||||
case SyntaxKind.AnyKeyword: return 3;
|
||||
case SyntaxKind.BooleanKeyword: return 7;
|
||||
case SyntaxKind.ConstructorKeyword: return 11;
|
||||
case SyntaxKind.DeclareKeyword: return 7;
|
||||
case SyntaxKind.GetKeyword: return 3;
|
||||
case SyntaxKind.ModuleKeyword: return 6;
|
||||
case SyntaxKind.RequireKeyword: return 7;
|
||||
case SyntaxKind.NumberKeyword: return 6;
|
||||
case SyntaxKind.SetKeyword: return 3;
|
||||
case SyntaxKind.StringKeyword: return 6;
|
||||
case SyntaxKind.OpenBraceToken: return 1;
|
||||
case SyntaxKind.CloseBraceToken: return 1;
|
||||
case SyntaxKind.OpenParenToken: return 1;
|
||||
case SyntaxKind.CloseParenToken: return 1;
|
||||
case SyntaxKind.OpenBracketToken: return 1;
|
||||
case SyntaxKind.CloseBracketToken: return 1;
|
||||
case SyntaxKind.DotToken: return 1;
|
||||
case SyntaxKind.DotDotDotToken: return 3;
|
||||
case SyntaxKind.SemicolonToken: return 1;
|
||||
case SyntaxKind.CommaToken: return 1;
|
||||
case SyntaxKind.LessThanToken: return 1;
|
||||
case SyntaxKind.GreaterThanToken: return 1;
|
||||
case SyntaxKind.LessThanEqualsToken: return 2;
|
||||
case SyntaxKind.GreaterThanEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsGreaterThanToken: return 2;
|
||||
case SyntaxKind.ExclamationEqualsToken: return 2;
|
||||
case SyntaxKind.EqualsEqualsEqualsToken: return 3;
|
||||
case SyntaxKind.ExclamationEqualsEqualsToken: return 3;
|
||||
case SyntaxKind.PlusToken: return 1;
|
||||
case SyntaxKind.MinusToken: return 1;
|
||||
case SyntaxKind.AsteriskToken: return 1;
|
||||
case SyntaxKind.PercentToken: return 1;
|
||||
case SyntaxKind.PlusPlusToken: return 2;
|
||||
case SyntaxKind.MinusMinusToken: return 2;
|
||||
case SyntaxKind.LessThanLessThanToken: return 2;
|
||||
case SyntaxKind.GreaterThanGreaterThanToken: return 2;
|
||||
case SyntaxKind.GreaterThanGreaterThanGreaterThanToken: return 3;
|
||||
case SyntaxKind.AmpersandToken: return 1;
|
||||
case SyntaxKind.BarToken: return 1;
|
||||
case SyntaxKind.CaretToken: return 1;
|
||||
case SyntaxKind.ExclamationToken: return 1;
|
||||
case SyntaxKind.TildeToken: return 1;
|
||||
case SyntaxKind.AmpersandAmpersandToken: return 2;
|
||||
case SyntaxKind.BarBarToken: return 2;
|
||||
case SyntaxKind.QuestionToken: return 1;
|
||||
case SyntaxKind.ColonToken: return 1;
|
||||
case SyntaxKind.EqualsToken: return 1;
|
||||
case SyntaxKind.PlusEqualsToken: return 2;
|
||||
case SyntaxKind.MinusEqualsToken: return 2;
|
||||
case SyntaxKind.AsteriskEqualsToken: return 2;
|
||||
case SyntaxKind.PercentEqualsToken: return 2;
|
||||
case SyntaxKind.LessThanLessThanEqualsToken: return 3;
|
||||
case SyntaxKind.GreaterThanGreaterThanEqualsToken: return 3;
|
||||
case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken: return 4;
|
||||
case SyntaxKind.AmpersandEqualsToken: return 2;
|
||||
case SyntaxKind.BarEqualsToken: return 2;
|
||||
case SyntaxKind.CaretEqualsToken: return 2;
|
||||
case SyntaxKind.SlashToken: return 1;
|
||||
case SyntaxKind.SlashEqualsToken: return 2;
|
||||
default: throw new Error();
|
||||
}
|
||||
}
|
||||
|
||||
export function identifierKind(str: string, start: number, length: number): SyntaxKind {
|
||||
switch (length) {
|
||||
case 2: // do, if, in
|
||||
|
||||
@ -1401,22 +1401,44 @@ function max<T>(array: T[], func: (v: T) => number): number {
|
||||
return max;
|
||||
}
|
||||
|
||||
function generateUtilities(): string {
|
||||
var result = "";
|
||||
result += " var fixedWidthArray = [";
|
||||
for (var i = 0; i <= TypeScript.SyntaxKind.LastFixedWidth; i++) {
|
||||
if (i) {
|
||||
result += ", ";
|
||||
}
|
||||
|
||||
if (i < TypeScript.SyntaxKind.FirstFixedWidth) {
|
||||
result += "0";
|
||||
}
|
||||
else {
|
||||
result += TypeScript.SyntaxFacts.getText(i).length;
|
||||
}
|
||||
}
|
||||
result += "];\r\n";
|
||||
|
||||
result += " function fixedWidthTokenLength(kind: SyntaxKind) {\r\n";
|
||||
result += " return fixedWidthArray[kind];\r\n";
|
||||
|
||||
//result += " switch (kind) {\r\n";
|
||||
|
||||
//for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) {
|
||||
// result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n";
|
||||
//}
|
||||
//result += " default: throw new Error();\r\n";
|
||||
//result += " }\r\n";
|
||||
result += " }\r\n";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function generateScannerUtilities(): string {
|
||||
var result = "///<reference path='references.ts' />\r\n" +
|
||||
"\r\n" +
|
||||
"module TypeScript {\r\n" +
|
||||
" export module ScannerUtilities {\r\n";
|
||||
|
||||
result += " export function fixedWidthTokenLength(kind: SyntaxKind) {\r\n";
|
||||
result += " switch (kind) {\r\n";
|
||||
|
||||
for (var k = TypeScript.SyntaxKind.FirstFixedWidth; k <= TypeScript.SyntaxKind.LastFixedWidth; k++) {
|
||||
result += " case SyntaxKind." + syntaxKindName(k) + ": return " + TypeScript.SyntaxFacts.getText(k).length + ";\r\n";
|
||||
}
|
||||
result += " default: throw new Error();\r\n";
|
||||
result += " }\r\n";
|
||||
result += " }\r\n\r\n";
|
||||
|
||||
var i: number;
|
||||
var keywords: { text: string; kind: TypeScript.SyntaxKind; }[] = [];
|
||||
|
||||
@ -1566,6 +1588,7 @@ var walker = generateWalker();
|
||||
var scannerUtilities = generateScannerUtilities();
|
||||
var visitor = generateVisitor();
|
||||
var servicesUtilities = generateServicesUtilities();
|
||||
var utilities = generateUtilities();
|
||||
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxNodes.concrete.generated.ts", syntaxNodesConcrete, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxInterfaces.generated.ts", syntaxInterfaces, false);
|
||||
@ -1573,3 +1596,4 @@ sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxWalker
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\scannerUtilities.generated.ts", scannerUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxVisitor.generated.ts", visitor, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\syntaxUtilities.generated.ts", servicesUtilities, false);
|
||||
sys.writeFile(sys.getCurrentDirectory() + "\\src\\services\\syntax\\utilities.generated.ts", utilities, false);
|
||||
|
||||
4
src/services/syntax/utilities.generated.ts
Normal file
4
src/services/syntax/utilities.generated.ts
Normal file
@ -0,0 +1,4 @@
|
||||
var fixedWidthArray = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 4, 5, 8, 8, 7, 6, 2, 4, 5, 7, 3, 8, 2, 2, 10, 3, 4, 6, 6, 4, 5, 4, 3, 6, 3, 4, 5, 4, 5, 5, 4, 6, 7, 6, 5, 10, 9, 3, 7, 7, 9, 6, 6, 5, 3, 7, 11, 7, 3, 6, 7, 6, 3, 6, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 1, 1, 1, 1, 2, 2, 2, 2, 3, 1, 1, 1, 1, 1, 2, 2, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 2, 2, 2, 1, 2];
|
||||
export function fixedWidthTokenLength(kind: SyntaxKind) {
|
||||
return fixedWidthArray[kind];
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user