From 988cec595d5220a1ca576962d5c0eb9490f4560a Mon Sep 17 00:00:00 2001 From: Adam Freidin Date: Mon, 11 Aug 2014 10:38:41 -0700 Subject: [PATCH 01/10] fix: /// The second quote of the static attribute was incorrectly matched against the first quote of the path attribute. --- src/services/compiler/precompile.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/services/compiler/precompile.ts b/src/services/compiler/precompile.ts index b806645c7af..3ff23d85bea 100644 --- a/src/services/compiler/precompile.ts +++ b/src/services/compiler/precompile.ts @@ -49,7 +49,7 @@ module TypeScript { return isNoDefaultLibRegex.exec(comment); } - export var tripleSlashReferenceRegExp = /^(\/\/\/\s*/; + export var tripleSlashReferenceRegExp = /^(\/\/\/\s*/; function getFileReferenceFromReferencePath(fileName: string, text: ISimpleText, position: number, comment: string, diagnostics: Diagnostic[]): IFileReference { // First, just see if they've written: /// Date: Mon, 11 Aug 2014 16:34:31 -0700 Subject: [PATCH 02/10] added tests for --- tests/cases/project/referencePathStatic.json | 7 +++++++ tests/cases/projects/reference-path-static/lib.ts | 3 +++ tests/cases/projects/reference-path-static/test.ts | 3 +++ 3 files changed, 13 insertions(+) create mode 100644 tests/cases/project/referencePathStatic.json create mode 100644 tests/cases/projects/reference-path-static/lib.ts create mode 100644 tests/cases/projects/reference-path-static/test.ts diff --git a/tests/cases/project/referencePathStatic.json b/tests/cases/project/referencePathStatic.json new file mode 100644 index 00000000000..b0a7786b835 --- /dev/null +++ b/tests/cases/project/referencePathStatic.json @@ -0,0 +1,7 @@ +{ + "scenario": "Reference-path-static", + "projectRoot": "tests/cases/projects/reference-path-static", + "inputFiles": [ + "test.ts" + ] +} diff --git a/tests/cases/projects/reference-path-static/lib.ts b/tests/cases/projects/reference-path-static/lib.ts new file mode 100644 index 00000000000..8d0f3d9c69d --- /dev/null +++ b/tests/cases/projects/reference-path-static/lib.ts @@ -0,0 +1,3 @@ +module Lib { + export class LibType {} +} diff --git a/tests/cases/projects/reference-path-static/test.ts b/tests/cases/projects/reference-path-static/test.ts new file mode 100644 index 00000000000..ee338c684f0 --- /dev/null +++ b/tests/cases/projects/reference-path-static/test.ts @@ -0,0 +1,3 @@ +/// + +var libType: Lib.LibType; \ No newline at end of file From 0b41303df2172f12950d84f7d1210b02c8198f08 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 12 Aug 2014 13:33:48 -0700 Subject: [PATCH 03/10] Ensure scriptsnapshot is set when creating a source file --- src/services/services.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/services/services.ts b/src/services/services.ts index 515f18e6601..06bfbd80e05 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -416,10 +416,10 @@ module ts { ? TypeScript.Parser.parse(this.filename, text, this.languageVersion, TypeScript.isDTSFile(this.filename)) : TypeScript.IncrementalParser.parse(oldSyntaxTree, textChangeRange, text); - return SourceFileObject.createSourceFileObject(this.languageVersion, this.filename, scriptSnapshot, version, isOpen, newSyntaxTree); + return SourceFileObject.createSourceFileObject(this.filename, scriptSnapshot, this.languageVersion, version, isOpen, newSyntaxTree); } - public static createSourceFileObject(languageVersion: ScriptTarget, filename: string, scriptSnapshot: TypeScript.IScriptSnapshot, version: number, isOpen: boolean, syntaxTree: TypeScript.SyntaxTree) { + public static createSourceFileObject(filename: string, scriptSnapshot: TypeScript.IScriptSnapshot, languageVersion: ScriptTarget, version: number, isOpen: boolean, syntaxTree?: TypeScript.SyntaxTree) { var newSourceFile = createSourceFile(filename, scriptSnapshot.getText(0, scriptSnapshot.getLength()), languageVersion, version, isOpen); newSourceFile.scriptSnapshot = scriptSnapshot; newSourceFile.syntaxTree = syntaxTree; @@ -1134,7 +1134,7 @@ module ts { } function createSourceFileFromScriptSnapshot(filename: string, scriptSnapshot: TypeScript.IScriptSnapshot, settings: CompilerOptions, version: number, isOpen: boolean) { - return createSourceFile(filename, scriptSnapshot.getText(0, scriptSnapshot.getLength()), settings.target, version, isOpen); + return SourceFileObject.createSourceFileObject(filename, scriptSnapshot, settings.target, version, isOpen); } export function createDocumentRegistry(): DocumentRegistry { From 911cb2b1fb4e3eb14b8b23cc8b7fab4e674af45e Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 12 Aug 2014 13:34:07 -0700 Subject: [PATCH 04/10] Make sure fourslash tests are running --- src/harness/fourslash.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts index 75ed8f1f13d..da649f77dd9 100644 --- a/src/harness/fourslash.ts +++ b/src/harness/fourslash.ts @@ -1903,7 +1903,7 @@ module FourSlash { files[Harness.Compiler.defaultLibFileName] = Harness.Compiler.defaultLibSourceFile; var host = Harness.Compiler.createCompilerHost(files, (fn, contents) => result = contents); - var program = ts.createProgram([fileName, fourslashFilename], {}, host); + var program = ts.createProgram([fourslashFilename, fileName], { out: "fourslashTestOutput.js" }, host); var checker = ts.createTypeChecker(program); checker.checkProgram(); From 785b80ff2713a593bf2d557d4a32584726d7f041 Mon Sep 17 00:00:00 2001 From: Adam Freidin Date: Tue, 12 Aug 2014 13:57:47 -0700 Subject: [PATCH 05/10] baseline update jake runtests jake baseline-accept --- .../amd/referencePathStatic.json | 16 ++++++++++++++++ .../node/referencePathStatic.json | 16 ++++++++++++++++ 2 files changed, 32 insertions(+) create mode 100644 tests/baselines/reference/project/referencePathStatic/amd/referencePathStatic.json create mode 100644 tests/baselines/reference/project/referencePathStatic/node/referencePathStatic.json diff --git a/tests/baselines/reference/project/referencePathStatic/amd/referencePathStatic.json b/tests/baselines/reference/project/referencePathStatic/amd/referencePathStatic.json new file mode 100644 index 00000000000..3bdf1f68e6d --- /dev/null +++ b/tests/baselines/reference/project/referencePathStatic/amd/referencePathStatic.json @@ -0,0 +1,16 @@ +{ + "scenario": "Reference-path-static", + "projectRoot": "tests/cases/projects/reference-path-static", + "inputFiles": [ + "test.ts" + ], + "resolvedInputFiles": [ + "test.ts", + "lib.ts", + "lib.d.ts" + ], + "emittedFiles": [ + "lib.js", + "test.js" + ] +} \ No newline at end of file diff --git a/tests/baselines/reference/project/referencePathStatic/node/referencePathStatic.json b/tests/baselines/reference/project/referencePathStatic/node/referencePathStatic.json new file mode 100644 index 00000000000..3bdf1f68e6d --- /dev/null +++ b/tests/baselines/reference/project/referencePathStatic/node/referencePathStatic.json @@ -0,0 +1,16 @@ +{ + "scenario": "Reference-path-static", + "projectRoot": "tests/cases/projects/reference-path-static", + "inputFiles": [ + "test.ts" + ], + "resolvedInputFiles": [ + "test.ts", + "lib.ts", + "lib.d.ts" + ], + "emittedFiles": [ + "lib.js", + "test.js" + ] +} \ No newline at end of file From ccaf904cfa872865b4150663f2eeb7b972719797 Mon Sep 17 00:00:00 2001 From: Vladimir Matveev Date: Tue, 12 Aug 2014 15:47:57 -0700 Subject: [PATCH 06/10] support outlining for arbitrary blocks --- src/services/outliningElementsCollector.ts | 34 ++++++++++------------ src/services/shims.ts | 2 +- tests/cases/fourslash/getOutliningSpans.ts | 4 +-- 3 files changed, 19 insertions(+), 21 deletions(-) diff --git a/src/services/outliningElementsCollector.ts b/src/services/outliningElementsCollector.ts index 8d453679aad..92440bfe760 100644 --- a/src/services/outliningElementsCollector.ts +++ b/src/services/outliningElementsCollector.ts @@ -36,11 +36,11 @@ module ts { export function collectElements(sourceFile: SourceFile): OutliningSpan[] { var elements: OutliningSpan[] = []; - function addOutlineRange(node: Node, startElement: Node, endElement: Node) { - if (node && startElement && endElement) { + function addOutlineRange(hintSpanNode: Node, startElement: Node, endElement: Node) { + if (hintSpanNode && startElement && endElement) { var span: OutliningSpan = { textSpan: TypeScript.TextSpan.fromBounds(startElement.pos, endElement.end), - hintSpan: TypeScript.TextSpan.fromBounds(node.getStart(), node.end), + hintSpan: TypeScript.TextSpan.fromBounds(hintSpanNode.getStart(), hintSpanNode.end), bannerText: "...", autoCollapse: false }; @@ -49,33 +49,31 @@ module ts { } var depth = 0; - var maxDepth = 10; + var maxDepth = 20; function walk(n: Node): void { - if (depth >= maxDepth) { + if (depth > maxDepth) { return; } switch (n.kind) { + case SyntaxKind.Block: + case SyntaxKind.FunctionBlock: + case SyntaxKind.ModuleBlock: + case SyntaxKind.TryBlock: + case SyntaxKind.TryBlock: + case SyntaxKind.CatchBlock: + case SyntaxKind.FinallyBlock: + var openBrace = forEach(n.getChildren(), c => c.kind === SyntaxKind.OpenBraceToken && c); + var closeBrace = forEach(n.getChildren(), c => c.kind === SyntaxKind.CloseBraceToken && c); + addOutlineRange(n.parent, openBrace, closeBrace); + break; case SyntaxKind.ClassDeclaration: case SyntaxKind.InterfaceDeclaration: - case SyntaxKind.ModuleDeclaration: case SyntaxKind.EnumDeclaration: case SyntaxKind.ObjectLiteral: var openBrace = forEach(n.getChildren(), c => c.kind === SyntaxKind.OpenBraceToken && c); var closeBrace = forEach(n.getChildren(), c => c.kind === SyntaxKind.CloseBraceToken && c); addOutlineRange(n, openBrace, closeBrace); break; - case SyntaxKind.Constructor: - case SyntaxKind.FunctionDeclaration: - case SyntaxKind.Method: - case SyntaxKind.GetAccessor: - case SyntaxKind.SetAccessor: - var body = (n).body; - if (body) { - var openBrace = forEach(body.getChildren(), c => c.kind === SyntaxKind.OpenBraceToken && c); - var closeBrace = forEach(body.getChildren(), c => c.kind === SyntaxKind.CloseBraceToken && c); - addOutlineRange(n, openBrace, closeBrace); - } - break; } depth++; forEachChild(n, walk); diff --git a/src/services/shims.ts b/src/services/shims.ts index 26c43295b66..523a0af5c91 100644 --- a/src/services/shims.ts +++ b/src/services/shims.ts @@ -728,7 +728,7 @@ module ts { var items = this.languageService.getOutliningRegions(fileName); // return just the part of data that language service v2 can understand // language service v2 will use the entire OutliningSpan - var spans = forEach(items, i => i.textSpan); + var spans = map(items, i => i.textSpan); return spans; }); } diff --git a/tests/cases/fourslash/getOutliningSpans.ts b/tests/cases/fourslash/getOutliningSpans.ts index 57eba365e33..d672ba20ac4 100644 --- a/tests/cases/fourslash/getOutliningSpans.ts +++ b/tests/cases/fourslash/getOutliningSpans.ts @@ -63,10 +63,10 @@ ////}|] /* even more */ //// ////// object literals -////var x = [|{ +////var x =[|{ //// a:1, //// b:2, -//// get foo() [|{ +//// get foo()[| { //// return 1; //// }|] ////}|] From d353fcdfb303c1ec93001c124d72b1901167a3de Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 12 Aug 2014 17:33:37 -0700 Subject: [PATCH 07/10] remove fullTypeCheck flag as it may lead to missing errors if we make any requests with fullTypeCheck=false and we cache any result --- src/compiler/checker.ts | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 13781b271c9..a9533171238 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -58,7 +58,6 @@ module ts { var stringLiteralTypes: Map = {}; - var fullTypeCheck = false; var emitExtends = false; var mergedSymbols: Symbol[] = []; @@ -4356,7 +4355,7 @@ module ts { } } } - if (fullTypeCheck && !(links.flags & NodeCheckFlags.TypeChecked)) { + if (!(links.flags & NodeCheckFlags.TypeChecked)) { checkSignatureDeclaration(node); if (node.type) { checkIfNonVoidFunctionHasReturnExpressionsOrSingleThrowStatment(node, getTypeFromTypeNode(node.type)); @@ -6254,7 +6253,6 @@ module ts { function checkSourceFile(node: SourceFile) { var links = getNodeLinks(node); if (!(links.flags & NodeCheckFlags.TypeChecked)) { - fullTypeCheck = true; emitExtends = false; potentialThisCollisions.length = 0; forEach(node.statements, checkSourceElement); @@ -6271,7 +6269,6 @@ module ts { } if (emitExtends) links.flags |= NodeCheckFlags.EmitExtends; links.flags |= NodeCheckFlags.TypeChecked; - fullTypeCheck = false; } } From c16d0df7b2ac87007f789346c32f7e47e4ad1bfe Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 12 Aug 2014 17:43:02 -0700 Subject: [PATCH 08/10] Disable test as it needs resolution which the test harness does not support yet --- .../{fourslash => fourslash_old}/selfReferencedExternalModule2.ts | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename tests/cases/{fourslash => fourslash_old}/selfReferencedExternalModule2.ts (100%) diff --git a/tests/cases/fourslash/selfReferencedExternalModule2.ts b/tests/cases/fourslash_old/selfReferencedExternalModule2.ts similarity index 100% rename from tests/cases/fourslash/selfReferencedExternalModule2.ts rename to tests/cases/fourslash_old/selfReferencedExternalModule2.ts From a8df9c158606ab322a4af7a06553efb50cb14a35 Mon Sep 17 00:00:00 2001 From: Mohamed Hegazy Date: Tue, 12 Aug 2014 17:43:15 -0700 Subject: [PATCH 09/10] update test --- .../fourslash/outliningForNonCompleteInterfaceDeclaration.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/cases/fourslash/outliningForNonCompleteInterfaceDeclaration.ts b/tests/cases/fourslash/outliningForNonCompleteInterfaceDeclaration.ts index 67868c6fb5b..09fd3e8d59d 100644 --- a/tests/cases/fourslash/outliningForNonCompleteInterfaceDeclaration.ts +++ b/tests/cases/fourslash/outliningForNonCompleteInterfaceDeclaration.ts @@ -3,4 +3,4 @@ ////interface I[||] // should not crash -verify.outliningSpansInCurrentFile(test.ranges()); \ No newline at end of file +verify.outliningSpansInCurrentFile([]); \ No newline at end of file From f38588c024ab422e2fa4214669b3401082f725d9 Mon Sep 17 00:00:00 2001 From: Dick van den Brink Date: Wed, 13 Aug 2014 20:39:56 +0200 Subject: [PATCH 10/10] Add coverage folder to gitignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index ef631d99d78..af48864ed87 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,4 @@ tests/*.d.ts *.config scripts/debug.bat scripts/run.bat +coverage/ \ No newline at end of file