diff --git a/src/services/syntax/SyntaxGenerator.js b/src/services/syntax/SyntaxGenerator.js
index c567290fd08..81a5b340878 100644
--- a/src/services/syntax/SyntaxGenerator.js
+++ b/src/services/syntax/SyntaxGenerator.js
@@ -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 = "///\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);
diff --git a/src/services/syntax/scanner.ts b/src/services/syntax/scanner.ts
index f7064c36ca1..51d8fc221ed 100644
--- a/src/services/syntax/scanner.ts
+++ b/src/services/syntax/scanner.ts
@@ -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];
}
}
\ No newline at end of file
diff --git a/src/services/syntax/scannerUtilities.generated.ts b/src/services/syntax/scannerUtilities.generated.ts
index 9e1a018006b..97f0093a672 100644
--- a/src/services/syntax/scannerUtilities.generated.ts
+++ b/src/services/syntax/scannerUtilities.generated.ts
@@ -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
diff --git a/src/services/syntax/syntaxGenerator.ts b/src/services/syntax/syntaxGenerator.ts
index 79b815cdfeb..e14b2e05daa 100644
--- a/src/services/syntax/syntaxGenerator.ts
+++ b/src/services/syntax/syntaxGenerator.ts
@@ -1401,22 +1401,44 @@ function max(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 = "///\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);
diff --git a/src/services/syntax/utilities.generated.ts b/src/services/syntax/utilities.generated.ts
new file mode 100644
index 00000000000..6a71842c624
--- /dev/null
+++ b/src/services/syntax/utilities.generated.ts
@@ -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];
+ }