mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-15 21:36:50 -05:00
Merge branch 'master' into newCompilerLS
Conflicts: src/services/services.ts
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -35,3 +35,4 @@ tests/*.d.ts
|
||||
*.config
|
||||
scripts/debug.bat
|
||||
scripts/run.bat
|
||||
coverage/
|
||||
@@ -58,7 +58,6 @@ module ts {
|
||||
|
||||
var stringLiteralTypes: Map<StringLiteralType> = {};
|
||||
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -49,7 +49,7 @@ module TypeScript {
|
||||
return isNoDefaultLibRegex.exec(comment);
|
||||
}
|
||||
|
||||
export var tripleSlashReferenceRegExp = /^(\/\/\/\s*<reference\s+path=)('|")(.+?)\2\s*(static=('|")(.+?)\2\s*)*\/>/;
|
||||
export var tripleSlashReferenceRegExp = /^(\/\/\/\s*<reference\s+path=)('|")(.+?)\2\s*(static=('|")(.+?)\5\s*)*\/>/;
|
||||
|
||||
function getFileReferenceFromReferencePath(fileName: string, text: ISimpleText, position: number, comment: string, diagnostics: Diagnostic[]): IFileReference {
|
||||
// First, just see if they've written: /// <reference\s+
|
||||
|
||||
@@ -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 = (<FunctionDeclaration>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);
|
||||
|
||||
@@ -420,10 +420,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: string, isOpen: boolean, syntaxTree: TypeScript.SyntaxTree) {
|
||||
public static createSourceFileObject(filename: string, scriptSnapshot: TypeScript.IScriptSnapshot, languageVersion: ScriptTarget, version: string, isOpen: boolean, syntaxTree?: TypeScript.SyntaxTree) {
|
||||
var newSourceFile = <SourceFileObject><any>createSourceFile(filename, scriptSnapshot.getText(0, scriptSnapshot.getLength()), languageVersion, version, isOpen);
|
||||
newSourceFile.scriptSnapshot = scriptSnapshot;
|
||||
newSourceFile.syntaxTree = syntaxTree;
|
||||
@@ -1068,7 +1068,7 @@ module ts {
|
||||
var nextSyntaxTree = TypeScript.IncrementalParser.parse(
|
||||
previousSyntaxTree, editRange, TypeScript.SimpleText.fromScriptSnapshot(scriptSnapshot));
|
||||
|
||||
this.ensureInvariants(filename, editRange, nextSyntaxTree, this.getCurrentScriptSnapshot(filename), scriptSnapshot);
|
||||
this.ensureInvariants(filename, editRange, nextSyntaxTree, previousScriptSnapshot, scriptSnapshot);
|
||||
|
||||
return nextSyntaxTree;
|
||||
}
|
||||
@@ -1137,7 +1137,7 @@ module ts {
|
||||
}
|
||||
|
||||
function createSourceFileFromScriptSnapshot(filename: string, scriptSnapshot: TypeScript.IScriptSnapshot, settings: CompilerOptions, version: string, 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 {
|
||||
|
||||
@@ -729,7 +729,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;
|
||||
});
|
||||
}
|
||||
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -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"
|
||||
]
|
||||
}
|
||||
@@ -63,10 +63,10 @@
|
||||
////}|] /* even more */
|
||||
////
|
||||
////// object literals
|
||||
////var x = [|{
|
||||
////var x =[|{
|
||||
//// a:1,
|
||||
//// b:2,
|
||||
//// get foo() [|{
|
||||
//// get foo()[| {
|
||||
//// return 1;
|
||||
//// }|]
|
||||
////}|]
|
||||
|
||||
@@ -3,4 +3,4 @@
|
||||
////interface I[||]
|
||||
|
||||
// should not crash
|
||||
verify.outliningSpansInCurrentFile(test.ranges());
|
||||
verify.outliningSpansInCurrentFile([]);
|
||||
7
tests/cases/project/referencePathStatic.json
Normal file
7
tests/cases/project/referencePathStatic.json
Normal file
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"scenario": "Reference-path-static",
|
||||
"projectRoot": "tests/cases/projects/reference-path-static",
|
||||
"inputFiles": [
|
||||
"test.ts"
|
||||
]
|
||||
}
|
||||
3
tests/cases/projects/reference-path-static/lib.ts
Normal file
3
tests/cases/projects/reference-path-static/lib.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
module Lib {
|
||||
export class LibType {}
|
||||
}
|
||||
3
tests/cases/projects/reference-path-static/test.ts
Normal file
3
tests/cases/projects/reference-path-static/test.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
/// <reference path="lib.ts" static='true' />
|
||||
|
||||
var libType: Lib.LibType;
|
||||
Reference in New Issue
Block a user