diff --git a/src/compiler/diagnosticInformationMap.generated.ts b/src/compiler/diagnosticInformationMap.generated.ts
index b141ce607f2..64a2515e774 100644
--- a/src/compiler/diagnosticInformationMap.generated.ts
+++ b/src/compiler/diagnosticInformationMap.generated.ts
@@ -506,6 +506,22 @@ module ts {
Function_implicitly_has_return_type_any_because_it_does_not_have_a_return_type_annotation_and_is_referenced_directly_or_indirectly_in_one_of_its_return_expressions: { code: 7024, category: DiagnosticCategory.Error, key: "Function implicitly has return type 'any' because it does not have a return type annotation and is referenced directly or indirectly in one of its return expressions." },
You_cannot_rename_this_element: { code: 8000, category: DiagnosticCategory.Error, key: "You cannot rename this element." },
You_cannot_rename_elements_that_are_defined_in_the_standard_TypeScript_library: { code: 8001, category: DiagnosticCategory.Error, key: "You cannot rename elements that are defined in the standard TypeScript library." },
+ import_can_only_be_used_in_a_ts_file: { code: 8002, category: DiagnosticCategory.Error, key: "'import ... =' can only be used in a .ts file." },
+ export_can_only_be_used_in_a_ts_file: { code: 8003, category: DiagnosticCategory.Error, key: "'export=' can only be used in a .ts file." },
+ type_parameter_declarations_can_only_be_used_in_a_ts_file: { code: 8004, category: DiagnosticCategory.Error, key: "'type parameter declarations' can only be used in a .ts file." },
+ implements_clauses_can_only_be_used_in_a_ts_file: { code: 8005, category: DiagnosticCategory.Error, key: "'implements clauses' can only be used in a .ts file." },
+ interface_declarations_can_only_be_used_in_a_ts_file: { code: 8006, category: DiagnosticCategory.Error, key: "'interface declarations' can only be used in a .ts file." },
+ module_declarations_can_only_be_used_in_a_ts_file: { code: 8007, category: DiagnosticCategory.Error, key: "'module declarations' can only be used in a .ts file." },
+ type_aliases_can_only_be_used_in_a_ts_file: { code: 8008, category: DiagnosticCategory.Error, key: "'type aliases' can only be used in a .ts file." },
+ _0_can_only_be_used_in_a_ts_file: { code: 8009, category: DiagnosticCategory.Error, key: "'{0}' can only be used in a .ts file." },
+ types_can_only_be_used_in_a_ts_file: { code: 8010, category: DiagnosticCategory.Error, key: "'types' can only be used in a .ts file." },
+ type_arguments_can_only_be_used_in_a_ts_file: { code: 8011, category: DiagnosticCategory.Error, key: "'type arguments' can only be used in a .ts file." },
+ parameter_modifiers_can_only_be_used_in_a_ts_file: { code: 8012, category: DiagnosticCategory.Error, key: "'parameter modifiers' can only be used in a .ts file." },
+ can_only_be_used_in_a_ts_file: { code: 8013, category: DiagnosticCategory.Error, key: "'?' can only be used in a .ts file." },
+ property_declarations_can_only_be_used_in_a_ts_file: { code: 8014, category: DiagnosticCategory.Error, key: "'property declarations' can only be used in a .ts file." },
+ enum_declarations_can_only_be_used_in_a_ts_file: { code: 8015, category: DiagnosticCategory.Error, key: "'enum declarations' can only be used in a .ts file." },
+ type_assertion_expressions_can_only_be_used_in_a_ts_file: { code: 8016, category: DiagnosticCategory.Error, key: "'type assertion expressions' can only be used in a .ts file." },
+ decorators_can_only_be_used_in_a_ts_file: { code: 8017, category: DiagnosticCategory.Error, key: "'decorators' can only be used in a .ts file." },
yield_expressions_are_not_currently_supported: { code: 9000, category: DiagnosticCategory.Error, key: "'yield' expressions are not currently supported." },
Generators_are_not_currently_supported: { code: 9001, category: DiagnosticCategory.Error, key: "Generators are not currently supported." },
Only_identifiers_Slashqualified_names_with_optional_type_arguments_are_currently_supported_in_a_class_extends_clauses: { code: 9002, category: DiagnosticCategory.Error, key: "Only identifiers/qualified-names with optional type arguments are currently supported in a class 'extends' clauses." },
diff --git a/src/compiler/diagnosticMessages.json b/src/compiler/diagnosticMessages.json
index cafc1f5efa9..79b652619b5 100644
--- a/src/compiler/diagnosticMessages.json
+++ b/src/compiler/diagnosticMessages.json
@@ -2017,6 +2017,71 @@
"category": "Error",
"code": 8001
},
+ "'import ... =' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8002
+ },
+ "'export=' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8003
+ },
+ "'type parameter declarations' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8004
+ },
+ "'implements clauses' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8005
+ },
+ "'interface declarations' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8006
+ },
+ "'module declarations' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8007
+ },
+ "'type aliases' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8008
+ },
+ "'{0}' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8009
+ },
+ "'types' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8010
+ },
+ "'type arguments' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8011
+ },
+ "'parameter modifiers' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8012
+ },
+ "'?' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8013
+ },
+ "'property declarations' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8014
+ },
+ "'enum declarations' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8015
+ },
+ "'type assertion expressions' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8016
+ },
+ "'decorators' can only be used in a .ts file.": {
+ "category": "Error",
+ "code": 8017
+ },
+
"'yield' expressions are not currently supported.": {
"category": "Error",
"code": 9000
diff --git a/src/compiler/parser.ts b/src/compiler/parser.ts
index 7a28ad0441b..2b5ca0616b7 100644
--- a/src/compiler/parser.ts
+++ b/src/compiler/parser.ts
@@ -828,7 +828,7 @@ module ts {
// to reuse are already at the appropriate position in the new text. That way when we
// reuse them, we don't have to figure out if they need to be adjusted. Second, it makes
// it very easy to determine if we can reuse a node. If the node's position is at where
- // we are in the text, then we can reuse it. Otherwise we can't. If hte node's position
+ // we are in the text, then we can reuse it. Otherwise we can't. If the node's position
// is ahead of us, then we'll need to rescan tokens. If the node's position is behind
// us, then we'll need to skip it or crumble it as appropriate
//
@@ -1033,7 +1033,7 @@ module ts {
// that some tokens that would be considered identifiers may be considered keywords.
//
// When adding more parser context flags, consider which is the more common case that the
- // flag will be in. This should be hte 'false' state for that flag. The reason for this is
+ // flag will be in. This should be the 'false' state for that flag. The reason for this is
// that we don't store data in our nodes unless the value is in the *non-default* state. So,
// for example, more often than code 'allows-in' (or doesn't 'disallow-in'). We opt for
// 'disallow-in' set to 'false'. Otherwise, if we had 'allowsIn' set to 'true', then almost
@@ -1044,7 +1044,7 @@ module ts {
//
// An important thing about these context concepts. By default they are effectively inherited
// while parsing through every grammar production. i.e. if you don't change them, then when
- // you parse a sub-production, it will have the same context values as hte parent production.
+ // you parse a sub-production, it will have the same context values as the parent production.
// This is great most of the time. After all, consider all the 'expression' grammar productions
// and how nearly all of them pass along the 'in' and 'yield' context values:
//
@@ -1836,7 +1836,7 @@ module ts {
// some node, then we cannot get a node from the old source tree. This is because we
// want to mark the next node we encounter as being unusable.
//
- // Note: This may be too conservative. Perhaps we could reuse hte node and set the bit
+ // Note: This may be too conservative. Perhaps we could reuse the node and set the bit
// on it (or its leftmost child) as having the error. For now though, being conservative
// is nice and likely won't ever affect perf.
if (parseErrorBeforeNextFinishedNode) {
diff --git a/src/harness/fourslash.ts b/src/harness/fourslash.ts
index 5d488259a36..7269b2db75d 100644
--- a/src/harness/fourslash.ts
+++ b/src/harness/fourslash.ts
@@ -14,6 +14,7 @@
//
///
+///
///
///
///
@@ -115,7 +116,7 @@ module FourSlash {
// Name of testcase metadata including ts.CompilerOptions properties that will be used by globalOptions
// To add additional option, add property into the testOptMetadataNames, refer the property in either globalMetadataNames or fileMetadataNames
// Add cases into convertGlobalOptionsToCompilationsSettings function for the compiler to acknowledge such option from meta data
- var testOptMetadataNames = {
+ var metadataOptionNames = {
baselineFile: 'BaselineFile',
declaration: 'declaration',
emitThisFile: 'emitThisFile', // This flag is used for testing getEmitOutput feature. It allows test-cases to indicate what file to be output in multiple files project
@@ -126,14 +127,15 @@ module FourSlash {
outDir: 'outDir',
sourceMap: 'sourceMap',
sourceRoot: 'sourceRoot',
+ allowNonTsExtensions: 'allowNonTsExtensions',
resolveReference: 'ResolveReference', // This flag is used to specify entry file for resolve file references. The flag is only allow once per test file
};
// List of allowed metadata names
- var fileMetadataNames = [testOptMetadataNames.fileName, testOptMetadataNames.emitThisFile, testOptMetadataNames.resolveReference];
- var globalMetadataNames = [testOptMetadataNames.baselineFile, testOptMetadataNames.declaration,
- testOptMetadataNames.mapRoot, testOptMetadataNames.module, testOptMetadataNames.out,
- testOptMetadataNames.outDir, testOptMetadataNames.sourceMap, testOptMetadataNames.sourceRoot]
+ var fileMetadataNames = [metadataOptionNames.fileName, metadataOptionNames.emitThisFile, metadataOptionNames.resolveReference];
+ var globalMetadataNames = [metadataOptionNames.allowNonTsExtensions, metadataOptionNames.baselineFile, metadataOptionNames.declaration,
+ metadataOptionNames.mapRoot, metadataOptionNames.module, metadataOptionNames.out,
+ metadataOptionNames.outDir, metadataOptionNames.sourceMap, metadataOptionNames.sourceRoot]
function convertGlobalOptionsToCompilerOptions(globalOptions: { [idx: string]: string }): ts.CompilerOptions {
var settings: ts.CompilerOptions = { target: ts.ScriptTarget.ES5 };
@@ -141,13 +143,16 @@ module FourSlash {
for (var prop in globalOptions) {
if (globalOptions.hasOwnProperty(prop)) {
switch (prop) {
- case testOptMetadataNames.declaration:
+ case metadataOptionNames.allowNonTsExtensions:
+ settings.allowNonTsExtensions = true;
+ break;
+ case metadataOptionNames.declaration:
settings.declaration = true;
break;
- case testOptMetadataNames.mapRoot:
+ case metadataOptionNames.mapRoot:
settings.mapRoot = globalOptions[prop];
break;
- case testOptMetadataNames.module:
+ case metadataOptionNames.module:
// create appropriate external module target for CompilationSettings
switch (globalOptions[prop]) {
case "AMD":
@@ -162,16 +167,16 @@ module FourSlash {
break;
}
break;
- case testOptMetadataNames.out:
+ case metadataOptionNames.out:
settings.out = globalOptions[prop];
break;
- case testOptMetadataNames.outDir:
+ case metadataOptionNames.outDir:
settings.outDir = globalOptions[prop];
break;
- case testOptMetadataNames.sourceMap:
+ case metadataOptionNames.sourceMap:
settings.sourceMap = true;
break;
- case testOptMetadataNames.sourceRoot:
+ case metadataOptionNames.sourceRoot:
settings.sourceRoot = globalOptions[prop];
break;
}
@@ -303,7 +308,7 @@ module FourSlash {
ts.forEach(testData.files, file => {
// Create map between fileName and its content for easily looking up when resolveReference flag is specified
this.inputFiles[file.fileName] = file.content;
- if (!startResolveFileRef && file.fileOptions[testOptMetadataNames.resolveReference]) {
+ if (!startResolveFileRef && file.fileOptions[metadataOptionNames.resolveReference]) {
startResolveFileRef = file;
} else if (startResolveFileRef) {
// If entry point for resolving file references is already specified, report duplication error
@@ -793,6 +798,13 @@ module FourSlash {
return "\nActual " + name + ":\n\t" + actualValue + "\nExpected value:\n\t" + expectedValue;
}
+ public getSemanticDiagnostics(expected: string) {
+ var diagnostics = this.languageService.getSemanticDiagnostics(this.activeFile.fileName);
+ var realized = ts.realizeDiagnostics(diagnostics, "\r\n");
+ var actual = JSON.stringify(realized, null, " ");
+ assert.equal(actual, expected);
+ }
+
public verifyQuickInfoString(negative: boolean, expectedText?: string, expectedDocumentation?: string) {
[expectedText, expectedDocumentation].forEach(str => {
if (str) {
@@ -1131,7 +1143,7 @@ module FourSlash {
Harness.Baseline.runBaseline(
"Breakpoint Locations for " + this.activeFile.fileName,
- this.testData.globalOptions[testOptMetadataNames.baselineFile],
+ this.testData.globalOptions[metadataOptionNames.baselineFile],
() => {
return this.baselineCurrentFileLocations(pos => this.getBreakpointStatementLocation(pos));
},
@@ -1146,7 +1158,7 @@ module FourSlash {
var allFourSlashFiles = this.testData.files;
for (var idx = 0; idx < allFourSlashFiles.length; ++idx) {
var file = allFourSlashFiles[idx];
- if (file.fileOptions[testOptMetadataNames.emitThisFile]) {
+ if (file.fileOptions[metadataOptionNames.emitThisFile]) {
// Find a file with the flag emitThisFile turned on
emitFiles.push(file);
}
@@ -1159,7 +1171,7 @@ module FourSlash {
Harness.Baseline.runBaseline(
"Generate getEmitOutput baseline : " + emitFiles.join(" "),
- this.testData.globalOptions[testOptMetadataNames.baselineFile],
+ this.testData.globalOptions[metadataOptionNames.baselineFile],
() => {
var resultString = "";
// Loop through all the emittedFiles and emit them one by one
@@ -1704,7 +1716,7 @@ module FourSlash {
Harness.Baseline.runBaseline(
"Name OrDottedNameSpans for " + this.activeFile.fileName,
- this.testData.globalOptions[testOptMetadataNames.baselineFile],
+ this.testData.globalOptions[metadataOptionNames.baselineFile],
() => {
return this.baselineCurrentFileLocations(pos =>
this.getNameOrDottedNameSpan(pos));
@@ -2280,7 +2292,7 @@ module FourSlash {
if (globalMetadataNamesIndex === -1) {
if (fileMetadataNamesIndex === -1) {
throw new Error('Unrecognized metadata name "' + match[1] + '". Available global metadata names are: ' + globalMetadataNames.join(', ') + '; file metadata names are: ' + fileMetadataNames.join(', '));
- } else if (fileMetadataNamesIndex === fileMetadataNames.indexOf(testOptMetadataNames.fileName)) {
+ } else if (fileMetadataNamesIndex === fileMetadataNames.indexOf(metadataOptionNames.fileName)) {
// Found an @FileName directive, if this is not the first then create a new subfile
if (currentFileContent) {
var file = parseFileContent(currentFileContent, currentFileName, markerPositions, markers, ranges);
diff --git a/src/server/protocol.d.ts b/src/server/protocol.d.ts
index 382ce8494af..3a03c22d49e 100644
--- a/src/server/protocol.d.ts
+++ b/src/server/protocol.d.ts
@@ -617,12 +617,29 @@ declare module ts.server.protocol {
* Optional modifiers for the kind (such as 'public').
*/
kindModifiers: string;
+ /**
+ * A string that is used for comparing completion items so that they can be ordered. This
+ * is often the same as the name but may be different in certain circumstances.
+ */
+ sortText: string;
}
/**
* Additional completion entry details, available on demand
*/
- export interface CompletionEntryDetails extends CompletionEntry {
+ export interface CompletionEntryDetails {
+ /**
+ * The symbol's name.
+ */
+ name: string;
+ /**
+ * The symbol's kind (such as 'className' or 'parameterName').
+ */
+ kind: string;
+ /**
+ * Optional modifiers for the kind (such as 'public').
+ */
+ kindModifiers: string;
/**
* Display parts of the symbol (similar to quick info).
*/
diff --git a/src/services/navigateTo.ts b/src/services/navigateTo.ts
index 9871a447c05..54f87d8e50b 100644
--- a/src/services/navigateTo.ts
+++ b/src/services/navigateTo.ts
@@ -22,7 +22,7 @@ module ts.NavigateTo {
continue;
}
- // It was a match! If the pattern has dots in it, then also see if hte
+ // It was a match! If the pattern has dots in it, then also see if the
// declaration container matches as well.
if (patternMatcher.patternContainsDots) {
let containers = getContainers(declaration);
diff --git a/src/services/patternMatcher.ts b/src/services/patternMatcher.ts
index 61642552cab..646782b2cf0 100644
--- a/src/services/patternMatcher.ts
+++ b/src/services/patternMatcher.ts
@@ -471,7 +471,7 @@ module ts {
// Helper function to compare two matches to determine which is better. Matches are first
// ordered by kind (so all prefix matches always beat all substring matches). Then, if the
- // match is a camel case match, the relative weights of hte match are used to determine
+ // match is a camel case match, the relative weights of the match are used to determine
// which is better (with a greater weight being better). Then if the match is of the same
// type, then a case sensitive match is considered better than an insensitive one.
function patternMatchCompareTo(match1: PatternMatch, match2: PatternMatch): number {
diff --git a/src/services/services.ts b/src/services/services.ts
index 339dcc3a145..12ea84eafc1 100644
--- a/src/services/services.ts
+++ b/src/services/services.ts
@@ -1148,6 +1148,7 @@ module ts {
name: string;
kind: string; // see ScriptElementKind
kindModifiers: string; // see ScriptElementKindModifier, comma separated
+ sortText: string;
}
export interface CompletionEntryDetails {
@@ -1316,6 +1317,7 @@ module ts {
// TODO: move these to enums
export class ScriptElementKind {
static unknown = "";
+ static warning = "warning";
// predefined type (void) or keyword (class)
static keyword = "keyword";
@@ -2166,7 +2168,8 @@ module ts {
keywordCompletions.push({
name: tokenToString(i),
kind: ScriptElementKind.keyword,
- kindModifiers: ScriptElementKindModifier.none
+ kindModifiers: ScriptElementKindModifier.none,
+ sortText: "0"
});
}
@@ -2430,15 +2433,26 @@ module ts {
return program.getSyntacticDiagnostics(getValidSourceFile(fileName));
}
+ function isJavaScript(fileName: string) {
+ return fileExtensionIs(fileName, ".js");
+ }
+
/**
* getSemanticDiagnostiscs return array of Diagnostics. If '-d' is not enabled, only report semantic errors
* If '-d' enabled, report both semantic and emitter errors
*/
- function getSemanticDiagnostics(fileName: string) {
+ function getSemanticDiagnostics(fileName: string): Diagnostic[] {
synchronizeHostData();
let targetSourceFile = getValidSourceFile(fileName);
+ // For JavaScript files, we don't want to report the normal typescript semantic errors.
+ // Instead, we just report errors for using TypeScript-only constructs from within a
+ // JavaScript file.
+ if (isJavaScript(fileName)) {
+ return getJavaScriptSemanticDiagnostics(targetSourceFile);
+ }
+
// Only perform the action per file regardless of '-out' flag as LanguageServiceHost is expected to call this function per file.
// Therefore only get diagnostics for given file.
@@ -2452,35 +2466,199 @@ module ts {
return concatenate(semanticDiagnostics, declarationDiagnostics);
}
+ function getJavaScriptSemanticDiagnostics(sourceFile: SourceFile): Diagnostic[] {
+ let diagnostics: Diagnostic[] = [];
+ walk(sourceFile);
+
+ return diagnostics;
+
+ function walk(node: Node): boolean {
+ if (!node) {
+ return false;
+ }
+
+ switch (node.kind) {
+ case SyntaxKind.ImportEqualsDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.import_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.ExportAssignment:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.export_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.ClassDeclaration:
+ let classDeclaration = node;
+ if (checkModifiers(classDeclaration.modifiers) ||
+ checkTypeParameters(classDeclaration.typeParameters)) {
+ return true;
+ }
+ break;
+ case SyntaxKind.HeritageClause:
+ let heritageClause = node;
+ if (heritageClause.token === SyntaxKind.ImplementsKeyword) {
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.implements_clauses_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ break;
+ case SyntaxKind.InterfaceDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.interface_declarations_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.ModuleDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.module_declarations_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.TypeAliasDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.type_aliases_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.MethodDeclaration:
+ case SyntaxKind.MethodSignature:
+ case SyntaxKind.Constructor:
+ case SyntaxKind.GetAccessor:
+ case SyntaxKind.SetAccessor:
+ case SyntaxKind.FunctionExpression:
+ case SyntaxKind.FunctionDeclaration:
+ case SyntaxKind.ArrowFunction:
+ case SyntaxKind.FunctionDeclaration:
+ let functionDeclaration = node;
+ if (checkModifiers(functionDeclaration.modifiers) ||
+ checkTypeParameters(functionDeclaration.typeParameters) ||
+ checkTypeAnnotation(functionDeclaration.type)) {
+ return true;
+ }
+ break;
+ case SyntaxKind.VariableStatement:
+ let variableStatement = node;
+ if (checkModifiers(variableStatement.modifiers)) {
+ return true;
+ }
+ break;
+ case SyntaxKind.VariableDeclaration:
+ let variableDeclaration = node;
+ if (checkTypeAnnotation(variableDeclaration.type)) {
+ return true;
+ }
+ break;
+ case SyntaxKind.CallExpression:
+ case SyntaxKind.NewExpression:
+ let expression = node;
+ if (expression.typeArguments && expression.typeArguments.length > 0) {
+ let start = expression.typeArguments.pos;
+ diagnostics.push(createFileDiagnostic(sourceFile, start, expression.typeArguments.end - start,
+ Diagnostics.type_arguments_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ break;
+ case SyntaxKind.Parameter:
+ let parameter = node;
+ if (parameter.modifiers) {
+ let start = parameter.modifiers.pos;
+ diagnostics.push(createFileDiagnostic(sourceFile, start, parameter.modifiers.end - start,
+ Diagnostics.parameter_modifiers_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ if (parameter.questionToken) {
+ diagnostics.push(createDiagnosticForNode(parameter.questionToken, Diagnostics.can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ if (parameter.type) {
+ diagnostics.push(createDiagnosticForNode(parameter.type, Diagnostics.types_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ break;
+ case SyntaxKind.PropertyDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.property_declarations_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.EnumDeclaration:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.enum_declarations_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.TypeAssertionExpression:
+ let typeAssertionExpression = node;
+ diagnostics.push(createDiagnosticForNode(typeAssertionExpression.type, Diagnostics.type_assertion_expressions_can_only_be_used_in_a_ts_file));
+ return true;
+ case SyntaxKind.Decorator:
+ diagnostics.push(createDiagnosticForNode(node, Diagnostics.decorators_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+
+ return forEachChild(node, walk);
+ }
+
+ function checkTypeParameters(typeParameters: NodeArray): boolean {
+ if (typeParameters) {
+ let start = typeParameters.pos;
+ diagnostics.push(createFileDiagnostic(sourceFile, start, typeParameters.end - start, Diagnostics.type_parameter_declarations_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+ return false;
+ }
+
+ function checkTypeAnnotation(type: TypeNode): boolean {
+ if (type) {
+ diagnostics.push(createDiagnosticForNode(type, Diagnostics.types_can_only_be_used_in_a_ts_file));
+ return true;
+ }
+
+ return false;
+ }
+
+ function checkModifiers(modifiers: ModifiersArray): boolean {
+ if (modifiers) {
+ for (let modifier of modifiers) {
+ switch (modifier.kind) {
+ case SyntaxKind.PublicKeyword:
+ case SyntaxKind.PrivateKeyword:
+ case SyntaxKind.ProtectedKeyword:
+ case SyntaxKind.DeclareKeyword:
+ diagnostics.push(createDiagnosticForNode(modifier, Diagnostics._0_can_only_be_used_in_a_ts_file, tokenToString(modifier.kind)));
+ return true;
+
+ // These are all legal modifiers.
+ case SyntaxKind.StaticKeyword:
+ case SyntaxKind.ExportKeyword:
+ case SyntaxKind.ConstKeyword:
+ case SyntaxKind.DefaultKeyword:
+ }
+ }
+ }
+
+ return false;
+ }
+ }
+
function getCompilerOptionsDiagnostics() {
synchronizeHostData();
return program.getGlobalDiagnostics();
}
/// Completion
- function getCompletionEntryDisplayName(symbol: Symbol, target: ScriptTarget, performCharacterChecks: boolean): string {
+ function getCompletionEntryDisplayNameForSymbol(symbol: Symbol, target: ScriptTarget, performCharacterChecks: boolean): string {
let displayName = symbol.getName();
+ if (displayName) {
+ // If this is the default export, get the name of the declaration if it exists
+ if (displayName === "default") {
+ let localSymbol = getLocalSymbolForExportDefault(symbol);
+ if (localSymbol && localSymbol.name) {
+ displayName = symbol.valueDeclaration.localSymbol.name;
+ }
+ }
+
+ let firstCharCode = displayName.charCodeAt(0);
+ // First check of the displayName is not external module; if it is an external module, it is not valid entry
+ if ((symbol.flags & SymbolFlags.Namespace) && (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) {
+ // If the symbol is external module, don't show it in the completion list
+ // (i.e declare module "http" { let x; } | // <= request completion here, "http" should not be there)
+ return undefined;
+ }
+ }
+
+ return getCompletionEntryDisplayName(displayName, target, performCharacterChecks);
+ }
+
+ function getCompletionEntryDisplayName(displayName: string, target: ScriptTarget, performCharacterChecks: boolean): string {
if (!displayName) {
return undefined;
}
- // If this is the default export, get the name of the declaration if it exists
- if (displayName === "default") {
- let localSymbol = getLocalSymbolForExportDefault(symbol);
- if (localSymbol && localSymbol.name) {
- displayName = symbol.valueDeclaration.localSymbol.name;
- }
- }
-
let firstCharCode = displayName.charCodeAt(0);
- // First check of the displayName is not external module; if it is an external module, it is not valid entry
- if ((symbol.flags & SymbolFlags.Namespace) && (firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) {
- // If the symbol is external module, don't show it in the completion list
- // (i.e declare module "http" { let x; } | // <= request completion here, "http" should not be there)
- return undefined;
- }
-
- if (displayName && displayName.length >= 2 && firstCharCode === displayName.charCodeAt(displayName.length - 1) &&
+ if (displayName.length >= 2 &&
+ firstCharCode === displayName.charCodeAt(displayName.length - 1) &&
(firstCharCode === CharacterCodes.singleQuote || firstCharCode === CharacterCodes.doubleQuote)) {
// If the user entered name for the symbol was quoted, removing the quotes is not enough, as the name could be an
// invalid identifier name. We need to check if whatever was inside the quotes is actually a valid identifier name.
@@ -2510,19 +2688,24 @@ module ts {
// Try to get a valid display name for this symbol, if we could not find one, then ignore it.
// We would like to only show things that can be added after a dot, so for instance numeric properties can
// not be accessed with a dot (a.1 <- invalid)
- let displayName = getCompletionEntryDisplayName(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true);
+ let displayName = getCompletionEntryDisplayNameForSymbol(symbol, program.getCompilerOptions().target, /*performCharacterChecks:*/ true);
if (!displayName) {
return undefined;
}
- // TODO(drosen): Right now we just permit *all* semantic meanings when calling 'getSymbolKind'
- // which is permissible given that it is backwards compatible; but really we should consider
- // passing the meaning for the node so that we don't report that a suggestion for a value is an interface.
- // We COULD also just do what 'getSymbolModifiers' does, which is to use the first declaration.
+ // TODO(drosen): Right now we just permit *all* semantic meanings when calling
+ // 'getSymbolKind' which is permissible given that it is backwards compatible; but
+ // really we should consider passing the meaning for the node so that we don't report
+ // that a suggestion for a value is an interface. We COULD also just do what
+ // 'getSymbolModifiers' does, which is to use the first declaration.
+
+ // Use a 'sortText' of 0' so that all symbol completion entries come before any other
+ // entries (like JavaScript identifier entries).
return {
name: displayName,
kind: getSymbolKind(symbol, typeChecker, location),
- kindModifiers: getSymbolModifiers(symbol)
+ kindModifiers: getSymbolModifiers(symbol),
+ sortText: "0",
};
}
@@ -2566,8 +2749,9 @@ module ts {
return undefined;
}
- // Find the node where completion is requested on, in the case of a completion after a dot, it is the member access expression
- // otherwise, it is a request for all visible symbols in the scope, and the node is the current location
+ // Find the node where completion is requested on, in the case of a completion after
+ // a dot, it is the member access expression other wise, it is a request for all
+ // visible symbols in the scope, and the node is the current location.
let node = currentToken;
let isRightOfDot = false;
if (contextToken && contextToken.kind === SyntaxKind.DotToken && contextToken.parent.kind === SyntaxKind.PropertyAccessExpression) {
@@ -2585,11 +2769,26 @@ module ts {
let semanticStart = new Date().getTime();
let isMemberCompletion: boolean;
let isNewIdentifierLocation: boolean;
- let symbols: Symbol[];
+ let symbols: Symbol[] = [];
if (isRightOfDot) {
+ getTypeScriptMemberSymbols();
+ }
+ else {
+ // For JavaScript or TypeScript, if we're not after a dot, then just try to get the
+ // global symbols in scope. These results should be valid for either language as
+ // the set of symbols that can be referenced from this location.
+ if (!tryGetGlobalSymbols()) {
+ return undefined;
+ }
+ }
+
+ log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart));
+
+ return { symbols, isMemberCompletion, isNewIdentifierLocation, location, isRightOfDot };
+
+ function getTypeScriptMemberSymbols(): void {
// Right of dot member completion list
- symbols = [];
isMemberCompletion = true;
isNewIdentifierLocation = false;
@@ -2622,7 +2821,8 @@ module ts {
});
}
}
- else {
+
+ function tryGetGlobalSymbols(): boolean {
let containingObjectLiteral = getContainingObjectLiteralApplicableForCompletion(contextToken);
if (containingObjectLiteral) {
// Object literal expression, look up possible property names from contextual type
@@ -2631,7 +2831,7 @@ module ts {
let contextualType = typeInfoResolver.getContextualType(containingObjectLiteral);
if (!contextualType) {
- return undefined;
+ return false;
}
let contextualTypeMembers = typeInfoResolver.getPropertiesOfType(contextualType);
@@ -2704,12 +2904,10 @@ module ts {
let symbolMeanings = SymbolFlags.Type | SymbolFlags.Value | SymbolFlags.Namespace | SymbolFlags.Alias;
symbols = typeInfoResolver.getSymbolsInScope(scopeNode, symbolMeanings);
}
+
+ return true;
}
- log("getCompletionData: Semantic work: " + (new Date().getTime() - semanticStart));
-
- return { symbols, isMemberCompletion, isNewIdentifierLocation, location };
-
/**
* Finds the first node that "embraces" the position, so that one may
* accurately aggregate locals from the closest containing scope.
@@ -3016,12 +3214,20 @@ module ts {
return undefined;
}
- let { symbols, isMemberCompletion, isNewIdentifierLocation, location } = completionData;
- if (!symbols || symbols.length === 0) {
- return undefined;
- }
+ let { symbols, isMemberCompletion, isNewIdentifierLocation, location, isRightOfDot } = completionData;
- var entries = getCompletionEntriesFromSymbols(symbols);
+ let entries: CompletionEntry[];
+ if (isRightOfDot && isJavaScript(fileName)) {
+ entries = getCompletionEntriesFromSymbols(symbols);
+ addRange(entries, getJavaScriptCompletionEntries());
+ }
+ else {
+ if (!symbols || symbols.length === 0) {
+ return undefined;
+ }
+
+ entries = getCompletionEntriesFromSymbols(symbols);
+ }
// Add keywords if this is not a member completion list
if (!isMemberCompletion) {
@@ -3030,21 +3236,51 @@ module ts {
return { isMemberCompletion, isNewIdentifierLocation, entries };
- function getCompletionEntriesFromSymbols(symbols: Symbol[]): CompletionEntry[] {
- let start = new Date().getTime();
- var entries: CompletionEntry[] = [];
- var nameToSymbol: Map = {};
+ function getJavaScriptCompletionEntries(): CompletionEntry[] {
+ let entries: CompletionEntry[] = [];
+ let allNames: Map = {};
+ let target = program.getCompilerOptions().target;
- for (let symbol of symbols) {
- let entry = createCompletionEntry(symbol, typeInfoResolver, location);
- if (entry) {
- let id = escapeIdentifier(entry.name);
- if (!lookUp(nameToSymbol, id)) {
- entries.push(entry);
- nameToSymbol[id] = symbol;
+ for (let sourceFile of program.getSourceFiles()) {
+ let nameTable = getNameTable(sourceFile);
+ for (let name in nameTable) {
+ if (!allNames[name]) {
+ allNames[name] = name;
+ let displayName = getCompletionEntryDisplayName(name, target, /*performCharacterChecks:*/ true);
+ if (displayName) {
+ let entry = {
+ name: displayName,
+ kind: ScriptElementKind.warning,
+ kindModifiers: "",
+ sortText: "1"
+ };
+ entries.push(entry);
+ }
}
}
}
+
+ return entries;
+ }
+
+ function getCompletionEntriesFromSymbols(symbols: Symbol[]): CompletionEntry[] {
+ let start = new Date().getTime();
+ var entries: CompletionEntry[] = [];
+
+ if (symbols) {
+ var nameToSymbol: Map = {};
+ for (let symbol of symbols) {
+ let entry = createCompletionEntry(symbol, typeInfoResolver, location);
+ if (entry) {
+ let id = escapeIdentifier(entry.name);
+ if (!lookUp(nameToSymbol, id)) {
+ entries.push(entry);
+ nameToSymbol[id] = symbol;
+ }
+ }
+ }
+ }
+
log("getCompletionsAtPosition: getCompletionEntriesFromSymbols: " + (new Date().getTime() - start));
return entries;
}
@@ -3063,7 +3299,7 @@ module ts {
// We don't need to perform character checks here because we're only comparing the
// name against 'entryName' (which is known to be good), not building a new
// completion entry.
- let symbol = forEach(symbols, s => getCompletionEntryDisplayName(s, target, /*performCharacterChecks:*/ false) === entryName ? s : undefined);
+ let symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(s, target, /*performCharacterChecks:*/ false) === entryName ? s : undefined);
if (symbol) {
let displayPartsDocumentationsAndSymbolKind = getSymbolDisplayPartsDocumentationAndSymbolKind(symbol, getValidSourceFile(fileName), location, typeInfoResolver, location, SemanticMeaning.All);
diff --git a/src/services/shims.ts b/src/services/shims.ts
index adcec5ada2b..7b5eeaf94d2 100644
--- a/src/services/shims.ts
+++ b/src/services/shims.ts
@@ -331,6 +331,22 @@ module ts {
}
}
+ /* @internal */
+ export function realizeDiagnostics(diagnostics: Diagnostic[], newLine: string): { message: string; start: number; length: number; category: string; } []{
+ return diagnostics.map(d => realizeDiagnostic(d, newLine));
+ }
+
+ function realizeDiagnostic(diagnostic: Diagnostic, newLine: string): { message: string; start: number; length: number; category: string; } {
+ return {
+ message: flattenDiagnosticMessageText(diagnostic.messageText, newLine),
+ start: diagnostic.start,
+ length: diagnostic.length,
+ /// TODO: no need for the tolowerCase call
+ category: DiagnosticCategory[diagnostic.category].toLowerCase(),
+ code: diagnostic.code
+ };
+ }
+
class LanguageServiceShimObject extends ShimBase implements LanguageServiceShim {
private logger: Logger;
@@ -391,18 +407,7 @@ module ts {
private realizeDiagnostics(diagnostics: Diagnostic[]): { message: string; start: number; length: number; category: string; }[]{
var newLine = this.getNewLine();
- return diagnostics.map(d => this.realizeDiagnostic(d, newLine));
- }
-
- private realizeDiagnostic(diagnostic: Diagnostic, newLine: string): { message: string; start: number; length: number; category: string; } {
- return {
- message: flattenDiagnosticMessageText(diagnostic.messageText, newLine),
- start: diagnostic.start,
- length: diagnostic.length,
- /// TODO: no need for the tolowerCase call
- category: DiagnosticCategory[diagnostic.category].toLowerCase(),
- code: diagnostic.code
- };
+ return ts.realizeDiagnostics(diagnostics, newLine);
}
public getSyntacticClassifications(fileName: string, start: number, length: number): string {
diff --git a/tests/baselines/reference/APISample_linter.types.pull b/tests/baselines/reference/APISample_linter.types.pull
new file mode 100644
index 00000000000..0a2a7ea948a
--- /dev/null
+++ b/tests/baselines/reference/APISample_linter.types.pull
@@ -0,0 +1,6438 @@
+=== tests/cases/compiler/APISample_linter.ts ===
+
+/*
+ * Note: This test is a public API sample. The sample sources can be found
+ at: https://github.com/Microsoft/TypeScript/wiki/Using-the-Compiler-API#traversing-the-ast-with-a-little-linter
+ * Please log a "breaking change" issue for any API breaking change affecting this issue
+ */
+
+declare var process: any;
+>process : any
+
+declare var console: any;
+>console : any
+
+declare var fs: any;
+>fs : any
+
+import ts = require("typescript");
+>ts : typeof ts
+
+export function delint(sourceFile: ts.SourceFile) {
+>delint : (sourceFile: ts.SourceFile) => void
+>sourceFile : ts.SourceFile
+>ts : unknown
+>SourceFile : ts.SourceFile
+
+ delintNode(sourceFile);
+>delintNode(sourceFile) : void
+>delintNode : (node: ts.Node) => void
+>sourceFile : ts.SourceFile
+
+ function delintNode(node: ts.Node) {
+>delintNode : (node: ts.Node) => void
+>node : ts.Node
+>ts : unknown
+>Node : ts.Node
+
+ switch (node.kind) {
+>node.kind : ts.SyntaxKind
+>node : ts.Node
+>kind : ts.SyntaxKind
+
+ case ts.SyntaxKind.ForStatement:
+>ts.SyntaxKind.ForStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>ForStatement : ts.SyntaxKind
+
+ case ts.SyntaxKind.ForInStatement:
+>ts.SyntaxKind.ForInStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>ForInStatement : ts.SyntaxKind
+
+ case ts.SyntaxKind.WhileStatement:
+>ts.SyntaxKind.WhileStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>WhileStatement : ts.SyntaxKind
+
+ case ts.SyntaxKind.DoStatement:
+>ts.SyntaxKind.DoStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>DoStatement : ts.SyntaxKind
+
+ if ((node).statement.kind !== ts.SyntaxKind.Block) {
+>(node).statement.kind !== ts.SyntaxKind.Block : boolean
+>(node).statement.kind : ts.SyntaxKind
+>(node).statement : ts.Statement
+>(node) : ts.IterationStatement
+>node : ts.IterationStatement
+>ts : unknown
+>IterationStatement : ts.IterationStatement
+>node : ts.Node
+>statement : ts.Statement
+>kind : ts.SyntaxKind
+>ts.SyntaxKind.Block : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>Block : ts.SyntaxKind
+
+ report(node, "A looping statement's contents should be wrapped in a block body.");
+>report(node, "A looping statement's contents should be wrapped in a block body.") : void
+>report : (node: ts.Node, message: string) => void
+>node : ts.Node
+ }
+ break;
+ case ts.SyntaxKind.IfStatement:
+>ts.SyntaxKind.IfStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>IfStatement : ts.SyntaxKind
+
+ var ifStatement = (node);
+>ifStatement : ts.IfStatement
+>(node) : ts.IfStatement
+>node : ts.IfStatement
+>ts : unknown
+>IfStatement : ts.IfStatement
+>node : ts.Node
+
+ if (ifStatement.thenStatement.kind !== ts.SyntaxKind.Block) {
+>ifStatement.thenStatement.kind !== ts.SyntaxKind.Block : boolean
+>ifStatement.thenStatement.kind : ts.SyntaxKind
+>ifStatement.thenStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>thenStatement : ts.Statement
+>kind : ts.SyntaxKind
+>ts.SyntaxKind.Block : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>Block : ts.SyntaxKind
+
+ report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body.");
+>report(ifStatement.thenStatement, "An if statement's contents should be wrapped in a block body.") : void
+>report : (node: ts.Node, message: string) => void
+>ifStatement.thenStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>thenStatement : ts.Statement
+ }
+ if (ifStatement.elseStatement &&
+>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean
+>ifStatement.elseStatement && ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean
+>ifStatement.elseStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>elseStatement : ts.Statement
+
+ ifStatement.elseStatement.kind !== ts.SyntaxKind.Block && ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement) {
+>ifStatement.elseStatement.kind !== ts.SyntaxKind.Block : boolean
+>ifStatement.elseStatement.kind : ts.SyntaxKind
+>ifStatement.elseStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>elseStatement : ts.Statement
+>kind : ts.SyntaxKind
+>ts.SyntaxKind.Block : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>Block : ts.SyntaxKind
+>ifStatement.elseStatement.kind !== ts.SyntaxKind.IfStatement : boolean
+>ifStatement.elseStatement.kind : ts.SyntaxKind
+>ifStatement.elseStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>elseStatement : ts.Statement
+>kind : ts.SyntaxKind
+>ts.SyntaxKind.IfStatement : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>IfStatement : ts.SyntaxKind
+
+ report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body.");
+>report(ifStatement.elseStatement, "An else statement's contents should be wrapped in a block body.") : void
+>report : (node: ts.Node, message: string) => void
+>ifStatement.elseStatement : ts.Statement
+>ifStatement : ts.IfStatement
+>elseStatement : ts.Statement
+ }
+ break;
+
+ case ts.SyntaxKind.BinaryExpression:
+>ts.SyntaxKind.BinaryExpression : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>BinaryExpression : ts.SyntaxKind
+
+ var op = (node).operatorToken.kind;
+>op : ts.SyntaxKind
+>(node).operatorToken.kind : ts.SyntaxKind
+>(node).operatorToken : ts.Node
+>(node) : ts.BinaryExpression
+>node : ts.BinaryExpression
+>ts : unknown
+>BinaryExpression : ts.BinaryExpression
+>node : ts.Node
+>operatorToken : ts.Node
+>kind : ts.SyntaxKind
+
+ if (op === ts.SyntaxKind.EqualsEqualsToken || op === ts.SyntaxKind.ExclamationEqualsToken) {
+>op === ts.SyntaxKind.EqualsEqualsToken || op === ts.SyntaxKind.ExclamationEqualsToken : boolean
+>op === ts.SyntaxKind.EqualsEqualsToken : boolean
+>op : ts.SyntaxKind
+>ts.SyntaxKind.EqualsEqualsToken : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>EqualsEqualsToken : ts.SyntaxKind
+>op === ts.SyntaxKind.ExclamationEqualsToken : boolean
+>op : ts.SyntaxKind
+>ts.SyntaxKind.ExclamationEqualsToken : ts.SyntaxKind
+>ts.SyntaxKind : typeof ts.SyntaxKind
+>ts : typeof ts
+>SyntaxKind : typeof ts.SyntaxKind
+>ExclamationEqualsToken : ts.SyntaxKind
+
+ report(node, "Use '===' and '!=='.")
+>report(node, "Use '===' and '!=='.") : void
+>report : (node: ts.Node, message: string) => void
+>node : ts.Node
+ }
+ break;
+ }
+
+ ts.forEachChild(node, delintNode);
+>ts.forEachChild(node, delintNode) : void
+>ts.forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T
+>ts : typeof ts
+>forEachChild : (node: ts.Node, cbNode: (node: ts.Node) => T, cbNodeArray?: (nodes: ts.Node[]) => T) => T
+>node : ts.Node
+>delintNode : (node: ts.Node) => void
+ }
+
+ function report(node: ts.Node, message: string) {
+>report : (node: ts.Node, message: string) => void
+>node : ts.Node
+>ts : unknown
+>Node : ts.Node
+>message : string
+
+ var lineChar = sourceFile.getLineAndCharacterOfPosition(node.getStart());
+>lineChar : ts.LineAndCharacter
+>sourceFile.getLineAndCharacterOfPosition(node.getStart()) : ts.LineAndCharacter
+>sourceFile.getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
+>sourceFile : ts.SourceFile
+>getLineAndCharacterOfPosition : (pos: number) => ts.LineAndCharacter
+>node.getStart() : number
+>node.getStart : (sourceFile?: ts.SourceFile) => number
+>node : ts.Node
+>getStart : (sourceFile?: ts.SourceFile) => number
+
+ console.log(`${sourceFile.fileName} (${lineChar.line + 1},${lineChar.character + 1}): ${message}`)
+>console.log(`${sourceFile.fileName} (${lineChar.line + 1},${lineChar.character + 1}): ${message}`) : any
+>console.log : any
+>console : any
+>log : any
+>sourceFile.fileName : string
+>sourceFile : ts.SourceFile
+>fileName : string
+>lineChar.line + 1 : number
+>lineChar.line : number
+>lineChar : ts.LineAndCharacter
+>line : number
+>lineChar.character + 1 : number
+>lineChar.character : number
+>lineChar : ts.LineAndCharacter
+>character : number
+>message : string
+ }
+}
+
+var fileNames = process.argv.slice(2);
+>fileNames : any
+>process.argv.slice(2) : any
+>process.argv.slice : any
+>process.argv : any
+>process : any
+>argv : any
+>slice : any
+
+fileNames.forEach(fileName => {
+>fileNames.forEach(fileName => { // Parse a file var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);}) : any
+>fileNames.forEach : any
+>fileNames : any
+>forEach : any
+>fileName => { // Parse a file var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true); // delint it delint(sourceFile);} : (fileName: any) => void
+>fileName : any
+
+ // Parse a file
+ var sourceFile = ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true);
+>sourceFile : ts.SourceFile
+>ts.createSourceFile(fileName, fs.readFileSync(fileName).toString(), ts.ScriptTarget.ES6, /*setParentNodes */ true) : ts.SourceFile
+>ts.createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile
+>ts : typeof ts
+>createSourceFile : (fileName: string, sourceText: string, languageVersion: ts.ScriptTarget, setParentNodes?: boolean) => ts.SourceFile
+>fileName : any
+>fs.readFileSync(fileName).toString() : any
+>fs.readFileSync(fileName).toString : any
+>fs.readFileSync(fileName) : any
+>fs.readFileSync : any
+>fs : any
+>readFileSync : any
+>fileName : any
+>toString : any
+>ts.ScriptTarget.ES6 : ts.ScriptTarget
+>ts.ScriptTarget : typeof ts.ScriptTarget
+>ts : typeof ts
+>ScriptTarget : typeof ts.ScriptTarget
+>ES6 : ts.ScriptTarget
+
+ // delint it
+ delint(sourceFile);
+>delint(sourceFile) : void
+>delint : (sourceFile: ts.SourceFile) => void
+>sourceFile : ts.SourceFile
+
+});
+
+=== typescript.d.ts ===
+/*! *****************************************************************************
+Copyright (c) Microsoft Corporation. All rights reserved.
+Licensed under the Apache License, Version 2.0 (the "License"); you may not use
+this file except in compliance with the License. You may obtain a copy of the
+License at http://www.apache.org/licenses/LICENSE-2.0
+
+THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED
+WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,
+MERCHANTABLITY OR NON-INFRINGEMENT.
+
+See the Apache Version 2.0 License for specific language governing permissions
+and limitations under the License.
+***************************************************************************** */
+
+declare module "typescript" {
+ interface Map {
+>Map : Map
+>T : T
+
+ [index: string]: T;
+>index : string
+>T : T
+ }
+ interface TextRange {
+>TextRange : TextRange
+
+ pos: number;
+>pos : number
+
+ end: number;
+>end : number
+ }
+ const enum SyntaxKind {
+>SyntaxKind : SyntaxKind
+
+ Unknown = 0,
+>Unknown : SyntaxKind
+
+ EndOfFileToken = 1,
+>EndOfFileToken : SyntaxKind
+
+ SingleLineCommentTrivia = 2,
+>SingleLineCommentTrivia : SyntaxKind
+
+ MultiLineCommentTrivia = 3,
+>MultiLineCommentTrivia : SyntaxKind
+
+ NewLineTrivia = 4,
+>NewLineTrivia : SyntaxKind
+
+ WhitespaceTrivia = 5,
+>WhitespaceTrivia : SyntaxKind
+
+ ConflictMarkerTrivia = 6,
+>ConflictMarkerTrivia : SyntaxKind
+
+ NumericLiteral = 7,
+>NumericLiteral : SyntaxKind
+
+ StringLiteral = 8,
+>StringLiteral : SyntaxKind
+
+ RegularExpressionLiteral = 9,
+>RegularExpressionLiteral : SyntaxKind
+
+ NoSubstitutionTemplateLiteral = 10,
+>NoSubstitutionTemplateLiteral : SyntaxKind
+
+ TemplateHead = 11,
+>TemplateHead : SyntaxKind
+
+ TemplateMiddle = 12,
+>TemplateMiddle : SyntaxKind
+
+ TemplateTail = 13,
+>TemplateTail : SyntaxKind
+
+ OpenBraceToken = 14,
+>OpenBraceToken : SyntaxKind
+
+ CloseBraceToken = 15,
+>CloseBraceToken : SyntaxKind
+
+ OpenParenToken = 16,
+>OpenParenToken : SyntaxKind
+
+ CloseParenToken = 17,
+>CloseParenToken : SyntaxKind
+
+ OpenBracketToken = 18,
+>OpenBracketToken : SyntaxKind
+
+ CloseBracketToken = 19,
+>CloseBracketToken : SyntaxKind
+
+ DotToken = 20,
+>DotToken : SyntaxKind
+
+ DotDotDotToken = 21,
+>DotDotDotToken : SyntaxKind
+
+ SemicolonToken = 22,
+>SemicolonToken : SyntaxKind
+
+ CommaToken = 23,
+>CommaToken : SyntaxKind
+
+ LessThanToken = 24,
+>LessThanToken : SyntaxKind
+
+ GreaterThanToken = 25,
+>GreaterThanToken : SyntaxKind
+
+ LessThanEqualsToken = 26,
+>LessThanEqualsToken : SyntaxKind
+
+ GreaterThanEqualsToken = 27,
+>GreaterThanEqualsToken : SyntaxKind
+
+ EqualsEqualsToken = 28,
+>EqualsEqualsToken : SyntaxKind
+
+ ExclamationEqualsToken = 29,
+>ExclamationEqualsToken : SyntaxKind
+
+ EqualsEqualsEqualsToken = 30,
+>EqualsEqualsEqualsToken : SyntaxKind
+
+ ExclamationEqualsEqualsToken = 31,
+>ExclamationEqualsEqualsToken : SyntaxKind
+
+ EqualsGreaterThanToken = 32,
+>EqualsGreaterThanToken : SyntaxKind
+
+ PlusToken = 33,
+>PlusToken : SyntaxKind
+
+ MinusToken = 34,
+>MinusToken : SyntaxKind
+
+ AsteriskToken = 35,
+>AsteriskToken : SyntaxKind
+
+ SlashToken = 36,
+>SlashToken : SyntaxKind
+
+ PercentToken = 37,
+>PercentToken : SyntaxKind
+
+ PlusPlusToken = 38,
+>PlusPlusToken : SyntaxKind
+
+ MinusMinusToken = 39,
+>MinusMinusToken : SyntaxKind
+
+ LessThanLessThanToken = 40,
+>LessThanLessThanToken : SyntaxKind
+
+ GreaterThanGreaterThanToken = 41,
+>GreaterThanGreaterThanToken : SyntaxKind
+
+ GreaterThanGreaterThanGreaterThanToken = 42,
+>GreaterThanGreaterThanGreaterThanToken : SyntaxKind
+
+ AmpersandToken = 43,
+>AmpersandToken : SyntaxKind
+
+ BarToken = 44,
+>BarToken : SyntaxKind
+
+ CaretToken = 45,
+>CaretToken : SyntaxKind
+
+ ExclamationToken = 46,
+>ExclamationToken : SyntaxKind
+
+ TildeToken = 47,
+>TildeToken : SyntaxKind
+
+ AmpersandAmpersandToken = 48,
+>AmpersandAmpersandToken : SyntaxKind
+
+ BarBarToken = 49,
+>BarBarToken : SyntaxKind
+
+ QuestionToken = 50,
+>QuestionToken : SyntaxKind
+
+ ColonToken = 51,
+>ColonToken : SyntaxKind
+
+ AtToken = 52,
+>AtToken : SyntaxKind
+
+ EqualsToken = 53,
+>EqualsToken : SyntaxKind
+
+ PlusEqualsToken = 54,
+>PlusEqualsToken : SyntaxKind
+
+ MinusEqualsToken = 55,
+>MinusEqualsToken : SyntaxKind
+
+ AsteriskEqualsToken = 56,
+>AsteriskEqualsToken : SyntaxKind
+
+ SlashEqualsToken = 57,
+>SlashEqualsToken : SyntaxKind
+
+ PercentEqualsToken = 58,
+>PercentEqualsToken : SyntaxKind
+
+ LessThanLessThanEqualsToken = 59,
+>LessThanLessThanEqualsToken : SyntaxKind
+
+ GreaterThanGreaterThanEqualsToken = 60,
+>GreaterThanGreaterThanEqualsToken : SyntaxKind
+
+ GreaterThanGreaterThanGreaterThanEqualsToken = 61,
+>GreaterThanGreaterThanGreaterThanEqualsToken : SyntaxKind
+
+ AmpersandEqualsToken = 62,
+>AmpersandEqualsToken : SyntaxKind
+
+ BarEqualsToken = 63,
+>BarEqualsToken : SyntaxKind
+
+ CaretEqualsToken = 64,
+>CaretEqualsToken : SyntaxKind
+
+ Identifier = 65,
+>Identifier : SyntaxKind
+
+ BreakKeyword = 66,
+>BreakKeyword : SyntaxKind
+
+ CaseKeyword = 67,
+>CaseKeyword : SyntaxKind
+
+ CatchKeyword = 68,
+>CatchKeyword : SyntaxKind
+
+ ClassKeyword = 69,
+>ClassKeyword : SyntaxKind
+
+ ConstKeyword = 70,
+>ConstKeyword : SyntaxKind
+
+ ContinueKeyword = 71,
+>ContinueKeyword : SyntaxKind
+
+ DebuggerKeyword = 72,
+>DebuggerKeyword : SyntaxKind
+
+ DefaultKeyword = 73,
+>DefaultKeyword : SyntaxKind
+
+ DeleteKeyword = 74,
+>DeleteKeyword : SyntaxKind
+
+ DoKeyword = 75,
+>DoKeyword : SyntaxKind
+
+ ElseKeyword = 76,
+>ElseKeyword : SyntaxKind
+
+ EnumKeyword = 77,
+>EnumKeyword : SyntaxKind
+
+ ExportKeyword = 78,
+>ExportKeyword : SyntaxKind
+
+ ExtendsKeyword = 79,
+>ExtendsKeyword : SyntaxKind
+
+ FalseKeyword = 80,
+>FalseKeyword : SyntaxKind
+
+ FinallyKeyword = 81,
+>FinallyKeyword : SyntaxKind
+
+ ForKeyword = 82,
+>ForKeyword : SyntaxKind
+
+ FunctionKeyword = 83,
+>FunctionKeyword : SyntaxKind
+
+ IfKeyword = 84,
+>IfKeyword : SyntaxKind
+
+ ImportKeyword = 85,
+>ImportKeyword : SyntaxKind
+
+ InKeyword = 86,
+>InKeyword : SyntaxKind
+
+ InstanceOfKeyword = 87,
+>InstanceOfKeyword : SyntaxKind
+
+ NewKeyword = 88,
+>NewKeyword : SyntaxKind
+
+ NullKeyword = 89,
+>NullKeyword : SyntaxKind
+
+ ReturnKeyword = 90,
+>ReturnKeyword : SyntaxKind
+
+ SuperKeyword = 91,
+>SuperKeyword : SyntaxKind
+
+ SwitchKeyword = 92,
+>SwitchKeyword : SyntaxKind
+
+ ThisKeyword = 93,
+>ThisKeyword : SyntaxKind
+
+ ThrowKeyword = 94,
+>ThrowKeyword : SyntaxKind
+
+ TrueKeyword = 95,
+>TrueKeyword : SyntaxKind
+
+ TryKeyword = 96,
+>TryKeyword : SyntaxKind
+
+ TypeOfKeyword = 97,
+>TypeOfKeyword : SyntaxKind
+
+ VarKeyword = 98,
+>VarKeyword : SyntaxKind
+
+ VoidKeyword = 99,
+>VoidKeyword : SyntaxKind
+
+ WhileKeyword = 100,
+>WhileKeyword : SyntaxKind
+
+ WithKeyword = 101,
+>WithKeyword : SyntaxKind
+
+ AsKeyword = 102,
+>AsKeyword : SyntaxKind
+
+ ImplementsKeyword = 103,
+>ImplementsKeyword : SyntaxKind
+
+ InterfaceKeyword = 104,
+>InterfaceKeyword : SyntaxKind
+
+ LetKeyword = 105,
+>LetKeyword : SyntaxKind
+
+ PackageKeyword = 106,
+>PackageKeyword : SyntaxKind
+
+ PrivateKeyword = 107,
+>PrivateKeyword : SyntaxKind
+
+ ProtectedKeyword = 108,
+>ProtectedKeyword : SyntaxKind
+
+ PublicKeyword = 109,
+>PublicKeyword : SyntaxKind
+
+ StaticKeyword = 110,
+>StaticKeyword : SyntaxKind
+
+ YieldKeyword = 111,
+>YieldKeyword : SyntaxKind
+
+ AnyKeyword = 112,
+>AnyKeyword : SyntaxKind
+
+ BooleanKeyword = 113,
+>BooleanKeyword : SyntaxKind
+
+ ConstructorKeyword = 114,
+>ConstructorKeyword : SyntaxKind
+
+ DeclareKeyword = 115,
+>DeclareKeyword : SyntaxKind
+
+ GetKeyword = 116,
+>GetKeyword : SyntaxKind
+
+ ModuleKeyword = 117,
+>ModuleKeyword : SyntaxKind
+
+ RequireKeyword = 118,
+>RequireKeyword : SyntaxKind
+
+ NumberKeyword = 119,
+>NumberKeyword : SyntaxKind
+
+ SetKeyword = 120,
+>SetKeyword : SyntaxKind
+
+ StringKeyword = 121,
+>StringKeyword : SyntaxKind
+
+ SymbolKeyword = 122,
+>SymbolKeyword : SyntaxKind
+
+ TypeKeyword = 123,
+>TypeKeyword : SyntaxKind
+
+ FromKeyword = 124,
+>FromKeyword : SyntaxKind
+
+ OfKeyword = 125,
+>OfKeyword : SyntaxKind
+
+ QualifiedName = 126,
+>QualifiedName : SyntaxKind
+
+ ComputedPropertyName = 127,
+>ComputedPropertyName : SyntaxKind
+
+ TypeParameter = 128,
+>TypeParameter : SyntaxKind
+
+ Parameter = 129,
+>Parameter : SyntaxKind
+
+ Decorator = 130,
+>Decorator : SyntaxKind
+
+ PropertySignature = 131,
+>PropertySignature : SyntaxKind
+
+ PropertyDeclaration = 132,
+>PropertyDeclaration : SyntaxKind
+
+ MethodSignature = 133,
+>MethodSignature : SyntaxKind
+
+ MethodDeclaration = 134,
+>MethodDeclaration : SyntaxKind
+
+ Constructor = 135,
+>Constructor : SyntaxKind
+
+ GetAccessor = 136,
+>GetAccessor : SyntaxKind
+
+ SetAccessor = 137,
+>SetAccessor : SyntaxKind
+
+ CallSignature = 138,
+>CallSignature : SyntaxKind
+
+ ConstructSignature = 139,
+>ConstructSignature : SyntaxKind
+
+ IndexSignature = 140,
+>IndexSignature : SyntaxKind
+
+ TypeReference = 141,
+>TypeReference : SyntaxKind
+
+ FunctionType = 142,
+>FunctionType : SyntaxKind
+
+ ConstructorType = 143,
+>ConstructorType : SyntaxKind
+
+ TypeQuery = 144,
+>TypeQuery : SyntaxKind
+
+ TypeLiteral = 145,
+>TypeLiteral : SyntaxKind
+
+ ArrayType = 146,
+>ArrayType : SyntaxKind
+
+ TupleType = 147,
+>TupleType : SyntaxKind
+
+ UnionType = 148,
+>UnionType : SyntaxKind
+
+ ParenthesizedType = 149,
+>ParenthesizedType : SyntaxKind
+
+ ObjectBindingPattern = 150,
+>ObjectBindingPattern : SyntaxKind
+
+ ArrayBindingPattern = 151,
+>ArrayBindingPattern : SyntaxKind
+
+ BindingElement = 152,
+>BindingElement : SyntaxKind
+
+ ArrayLiteralExpression = 153,
+>ArrayLiteralExpression : SyntaxKind
+
+ ObjectLiteralExpression = 154,
+>ObjectLiteralExpression : SyntaxKind
+
+ PropertyAccessExpression = 155,
+>PropertyAccessExpression : SyntaxKind
+
+ ElementAccessExpression = 156,
+>ElementAccessExpression : SyntaxKind
+
+ CallExpression = 157,
+>CallExpression : SyntaxKind
+
+ NewExpression = 158,
+>NewExpression : SyntaxKind
+
+ TaggedTemplateExpression = 159,
+>TaggedTemplateExpression : SyntaxKind
+
+ TypeAssertionExpression = 160,
+>TypeAssertionExpression : SyntaxKind
+
+ ParenthesizedExpression = 161,
+>ParenthesizedExpression : SyntaxKind
+
+ FunctionExpression = 162,
+>FunctionExpression : SyntaxKind
+
+ ArrowFunction = 163,
+>ArrowFunction : SyntaxKind
+
+ DeleteExpression = 164,
+>DeleteExpression : SyntaxKind
+
+ TypeOfExpression = 165,
+>TypeOfExpression : SyntaxKind
+
+ VoidExpression = 166,
+>VoidExpression : SyntaxKind
+
+ PrefixUnaryExpression = 167,
+>PrefixUnaryExpression : SyntaxKind
+
+ PostfixUnaryExpression = 168,
+>PostfixUnaryExpression : SyntaxKind
+
+ BinaryExpression = 169,
+>BinaryExpression : SyntaxKind
+
+ ConditionalExpression = 170,
+>ConditionalExpression : SyntaxKind
+
+ TemplateExpression = 171,
+>TemplateExpression : SyntaxKind
+
+ YieldExpression = 172,
+>YieldExpression : SyntaxKind
+
+ SpreadElementExpression = 173,
+>SpreadElementExpression : SyntaxKind
+
+ ClassExpression = 174,
+>ClassExpression : SyntaxKind
+
+ OmittedExpression = 175,
+>OmittedExpression : SyntaxKind
+
+ TemplateSpan = 176,
+>TemplateSpan : SyntaxKind
+
+ HeritageClauseElement = 177,
+>HeritageClauseElement : SyntaxKind
+
+ SemicolonClassElement = 178,
+>SemicolonClassElement : SyntaxKind
+
+ Block = 179,
+>Block : SyntaxKind
+
+ VariableStatement = 180,
+>VariableStatement : SyntaxKind
+
+ EmptyStatement = 181,
+>EmptyStatement : SyntaxKind
+
+ ExpressionStatement = 182,
+>ExpressionStatement : SyntaxKind
+
+ IfStatement = 183,
+>IfStatement : SyntaxKind
+
+ DoStatement = 184,
+>DoStatement : SyntaxKind
+
+ WhileStatement = 185,
+>WhileStatement : SyntaxKind
+
+ ForStatement = 186,
+>ForStatement : SyntaxKind
+
+ ForInStatement = 187,
+>ForInStatement : SyntaxKind
+
+ ForOfStatement = 188,
+>ForOfStatement : SyntaxKind
+
+ ContinueStatement = 189,
+>ContinueStatement : SyntaxKind
+
+ BreakStatement = 190,
+>BreakStatement : SyntaxKind
+
+ ReturnStatement = 191,
+>ReturnStatement : SyntaxKind
+
+ WithStatement = 192,
+>WithStatement : SyntaxKind
+
+ SwitchStatement = 193,
+>SwitchStatement : SyntaxKind
+
+ LabeledStatement = 194,
+>LabeledStatement : SyntaxKind
+
+ ThrowStatement = 195,
+>ThrowStatement : SyntaxKind
+
+ TryStatement = 196,
+>TryStatement : SyntaxKind
+
+ DebuggerStatement = 197,
+>DebuggerStatement : SyntaxKind
+
+ VariableDeclaration = 198,
+>VariableDeclaration : SyntaxKind
+
+ VariableDeclarationList = 199,
+>VariableDeclarationList : SyntaxKind
+
+ FunctionDeclaration = 200,
+>FunctionDeclaration : SyntaxKind
+
+ ClassDeclaration = 201,
+>ClassDeclaration : SyntaxKind
+
+ InterfaceDeclaration = 202,
+>InterfaceDeclaration : SyntaxKind
+
+ TypeAliasDeclaration = 203,
+>TypeAliasDeclaration : SyntaxKind
+
+ EnumDeclaration = 204,
+>EnumDeclaration : SyntaxKind
+
+ ModuleDeclaration = 205,
+>ModuleDeclaration : SyntaxKind
+
+ ModuleBlock = 206,
+>ModuleBlock : SyntaxKind
+
+ CaseBlock = 207,
+>CaseBlock : SyntaxKind
+
+ ImportEqualsDeclaration = 208,
+>ImportEqualsDeclaration : SyntaxKind
+
+ ImportDeclaration = 209,
+>ImportDeclaration : SyntaxKind
+
+ ImportClause = 210,
+>ImportClause : SyntaxKind
+
+ NamespaceImport = 211,
+>NamespaceImport : SyntaxKind
+
+ NamedImports = 212,
+>NamedImports : SyntaxKind
+
+ ImportSpecifier = 213,
+>ImportSpecifier : SyntaxKind
+
+ ExportAssignment = 214,
+>ExportAssignment : SyntaxKind
+
+ ExportDeclaration = 215,
+>ExportDeclaration : SyntaxKind
+
+ NamedExports = 216,
+>NamedExports : SyntaxKind
+
+ ExportSpecifier = 217,
+>ExportSpecifier : SyntaxKind
+
+ MissingDeclaration = 218,
+>MissingDeclaration : SyntaxKind
+
+ ExternalModuleReference = 219,
+>ExternalModuleReference : SyntaxKind
+
+ CaseClause = 220,
+>CaseClause : SyntaxKind
+
+ DefaultClause = 221,
+>DefaultClause : SyntaxKind
+
+ HeritageClause = 222,
+>HeritageClause : SyntaxKind
+
+ CatchClause = 223,
+>CatchClause : SyntaxKind
+
+ PropertyAssignment = 224,
+>PropertyAssignment : SyntaxKind
+
+ ShorthandPropertyAssignment = 225,
+>ShorthandPropertyAssignment : SyntaxKind
+
+ EnumMember = 226,
+>EnumMember : SyntaxKind
+
+ SourceFile = 227,
+>SourceFile : SyntaxKind
+
+ SyntaxList = 228,
+>SyntaxList : SyntaxKind
+
+ Count = 229,
+>Count : SyntaxKind
+
+ FirstAssignment = 53,
+>FirstAssignment : SyntaxKind
+
+ LastAssignment = 64,
+>LastAssignment : SyntaxKind
+
+ FirstReservedWord = 66,
+>FirstReservedWord : SyntaxKind
+
+ LastReservedWord = 101,
+>LastReservedWord : SyntaxKind
+
+ FirstKeyword = 66,
+>FirstKeyword : SyntaxKind
+
+ LastKeyword = 125,
+>LastKeyword : SyntaxKind
+
+ FirstFutureReservedWord = 103,
+>FirstFutureReservedWord : SyntaxKind
+
+ LastFutureReservedWord = 111,
+>LastFutureReservedWord : SyntaxKind
+
+ FirstTypeNode = 141,
+>FirstTypeNode : SyntaxKind
+
+ LastTypeNode = 149,
+>LastTypeNode : SyntaxKind
+
+ FirstPunctuation = 14,
+>FirstPunctuation : SyntaxKind
+
+ LastPunctuation = 64,
+>LastPunctuation : SyntaxKind
+
+ FirstToken = 0,
+>FirstToken : SyntaxKind
+
+ LastToken = 125,
+>LastToken : SyntaxKind
+
+ FirstTriviaToken = 2,
+>FirstTriviaToken : SyntaxKind
+
+ LastTriviaToken = 6,
+>LastTriviaToken : SyntaxKind
+
+ FirstLiteralToken = 7,
+>FirstLiteralToken : SyntaxKind
+
+ LastLiteralToken = 10,
+>LastLiteralToken : SyntaxKind
+
+ FirstTemplateToken = 10,
+>FirstTemplateToken : SyntaxKind
+
+ LastTemplateToken = 13,
+>LastTemplateToken : SyntaxKind
+
+ FirstBinaryOperator = 24,
+>FirstBinaryOperator : SyntaxKind
+
+ LastBinaryOperator = 64,
+>LastBinaryOperator : SyntaxKind
+
+ FirstNode = 126,
+>FirstNode : SyntaxKind
+ }
+ const enum NodeFlags {
+>NodeFlags : NodeFlags
+
+ Export = 1,
+>Export : NodeFlags
+
+ Ambient = 2,
+>Ambient : NodeFlags
+
+ Public = 16,
+>Public : NodeFlags
+
+ Private = 32,
+>Private : NodeFlags
+
+ Protected = 64,
+>Protected : NodeFlags
+
+ Static = 128,
+>Static : NodeFlags
+
+ Default = 256,
+>Default : NodeFlags
+
+ MultiLine = 512,
+>MultiLine : NodeFlags
+
+ Synthetic = 1024,
+>Synthetic : NodeFlags
+
+ DeclarationFile = 2048,
+>DeclarationFile : NodeFlags
+
+ Let = 4096,
+>Let : NodeFlags
+
+ Const = 8192,
+>Const : NodeFlags
+
+ OctalLiteral = 16384,
+>OctalLiteral : NodeFlags
+
+ ExportContext = 32768,
+>ExportContext : NodeFlags
+
+ Modifier = 499,
+>Modifier : NodeFlags
+
+ AccessibilityModifier = 112,
+>AccessibilityModifier : NodeFlags
+
+ BlockScoped = 12288,
+>BlockScoped : NodeFlags
+ }
+ const enum ParserContextFlags {
+>ParserContextFlags : ParserContextFlags
+
+ StrictMode = 1,
+>StrictMode : ParserContextFlags
+
+ DisallowIn = 2,
+>DisallowIn : ParserContextFlags
+
+ Yield = 4,
+>Yield : ParserContextFlags
+
+ GeneratorParameter = 8,
+>GeneratorParameter : ParserContextFlags
+
+ Decorator = 16,
+>Decorator : ParserContextFlags
+
+ ThisNodeHasError = 32,
+>ThisNodeHasError : ParserContextFlags
+
+ ParserGeneratedFlags = 63,
+>ParserGeneratedFlags : ParserContextFlags
+
+ ThisNodeOrAnySubNodesHasError = 64,
+>ThisNodeOrAnySubNodesHasError : ParserContextFlags
+
+ HasAggregatedChildData = 128,
+>HasAggregatedChildData : ParserContextFlags
+ }
+ const enum RelationComparisonResult {
+>RelationComparisonResult : RelationComparisonResult
+
+ Succeeded = 1,
+>Succeeded : RelationComparisonResult
+
+ Failed = 2,
+>Failed : RelationComparisonResult
+
+ FailedAndReported = 3,
+>FailedAndReported : RelationComparisonResult
+ }
+ interface Node extends TextRange {
+>Node : Node
+>TextRange : TextRange
+
+ kind: SyntaxKind;
+>kind : SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ flags: NodeFlags;
+>flags : NodeFlags
+>NodeFlags : NodeFlags
+
+ parserContextFlags?: ParserContextFlags;
+>parserContextFlags : ParserContextFlags
+>ParserContextFlags : ParserContextFlags
+
+ decorators?: NodeArray;
+>decorators : NodeArray
+>NodeArray : NodeArray
+>Decorator : Decorator
+
+ modifiers?: ModifiersArray;
+>modifiers : ModifiersArray
+>ModifiersArray : ModifiersArray
+
+ id?: number;
+>id : number
+
+ parent?: Node;
+>parent : Node
+>Node : Node
+
+ symbol?: Symbol;
+>symbol : Symbol
+>Symbol : Symbol
+
+ locals?: SymbolTable;
+>locals : SymbolTable
+>SymbolTable : SymbolTable
+
+ nextContainer?: Node;
+>nextContainer : Node
+>Node : Node
+
+ localSymbol?: Symbol;
+>localSymbol : Symbol
+>Symbol : Symbol
+ }
+ interface NodeArray extends Array, TextRange {
+>NodeArray : NodeArray
+>T : T
+>Array : T[]
+>T : T
+>TextRange : TextRange
+
+ hasTrailingComma?: boolean;
+>hasTrailingComma : boolean
+ }
+ interface ModifiersArray extends NodeArray {
+>ModifiersArray : ModifiersArray
+>NodeArray : NodeArray
+>Node : Node
+
+ flags: number;
+>flags : number
+ }
+ interface Identifier extends PrimaryExpression {
+>Identifier : Identifier
+>PrimaryExpression : PrimaryExpression
+
+ text: string;
+>text : string
+ }
+ interface QualifiedName extends Node {
+>QualifiedName : QualifiedName
+>Node : Node
+
+ left: EntityName;
+>left : Identifier | QualifiedName
+>EntityName : Identifier | QualifiedName
+
+ right: Identifier;
+>right : Identifier
+>Identifier : Identifier
+ }
+ type EntityName = Identifier | QualifiedName;
+>EntityName : Identifier | QualifiedName
+>Identifier : Identifier
+>QualifiedName : QualifiedName
+
+ type DeclarationName = Identifier | LiteralExpression | ComputedPropertyName | BindingPattern;
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>Identifier : Identifier
+>LiteralExpression : LiteralExpression
+>ComputedPropertyName : ComputedPropertyName
+>BindingPattern : BindingPattern
+
+ interface Declaration extends Node {
+>Declaration : Declaration
+>Node : Node
+
+ _declarationBrand: any;
+>_declarationBrand : any
+
+ name?: DeclarationName;
+>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+ }
+ interface ComputedPropertyName extends Node {
+>ComputedPropertyName : ComputedPropertyName
+>Node : Node
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface Decorator extends Node {
+>Decorator : Decorator
+>Node : Node
+
+ expression: LeftHandSideExpression;
+>expression : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+ }
+ interface TypeParameterDeclaration extends Declaration {
+>TypeParameterDeclaration : TypeParameterDeclaration
+>Declaration : Declaration
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ constraint?: TypeNode;
+>constraint : TypeNode
+>TypeNode : TypeNode
+
+ expression?: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface SignatureDeclaration extends Declaration {
+>SignatureDeclaration : SignatureDeclaration
+>Declaration : Declaration
+
+ typeParameters?: NodeArray;
+>typeParameters : NodeArray
+>NodeArray : NodeArray
+>TypeParameterDeclaration : TypeParameterDeclaration
+
+ parameters: NodeArray;
+>parameters : NodeArray
+>NodeArray : NodeArray
+>ParameterDeclaration : ParameterDeclaration
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+ }
+ interface VariableDeclaration extends Declaration {
+>VariableDeclaration : VariableDeclaration
+>Declaration : Declaration
+
+ parent?: VariableDeclarationList;
+>parent : VariableDeclarationList
+>VariableDeclarationList : VariableDeclarationList
+
+ name: Identifier | BindingPattern;
+>name : Identifier | BindingPattern
+>Identifier : Identifier
+>BindingPattern : BindingPattern
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface VariableDeclarationList extends Node {
+>VariableDeclarationList : VariableDeclarationList
+>Node : Node
+
+ declarations: NodeArray;
+>declarations : NodeArray
+>NodeArray : NodeArray
+>VariableDeclaration : VariableDeclaration
+ }
+ interface ParameterDeclaration extends Declaration {
+>ParameterDeclaration : ParameterDeclaration
+>Declaration : Declaration
+
+ dotDotDotToken?: Node;
+>dotDotDotToken : Node
+>Node : Node
+
+ name: Identifier | BindingPattern;
+>name : Identifier | BindingPattern
+>Identifier : Identifier
+>BindingPattern : BindingPattern
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface BindingElement extends Declaration {
+>BindingElement : BindingElement
+>Declaration : Declaration
+
+ propertyName?: Identifier;
+>propertyName : Identifier
+>Identifier : Identifier
+
+ dotDotDotToken?: Node;
+>dotDotDotToken : Node
+>Node : Node
+
+ name: Identifier | BindingPattern;
+>name : Identifier | BindingPattern
+>Identifier : Identifier
+>BindingPattern : BindingPattern
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface PropertyDeclaration extends Declaration, ClassElement {
+>PropertyDeclaration : PropertyDeclaration
+>Declaration : Declaration
+>ClassElement : ClassElement
+
+ name: DeclarationName;
+>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface ObjectLiteralElement extends Declaration {
+>ObjectLiteralElement : ObjectLiteralElement
+>Declaration : Declaration
+
+ _objectLiteralBrandBrand: any;
+>_objectLiteralBrandBrand : any
+ }
+ interface PropertyAssignment extends ObjectLiteralElement {
+>PropertyAssignment : PropertyAssignment
+>ObjectLiteralElement : ObjectLiteralElement
+
+ _propertyAssignmentBrand: any;
+>_propertyAssignmentBrand : any
+
+ name: DeclarationName;
+>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+
+ initializer: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface ShorthandPropertyAssignment extends ObjectLiteralElement {
+>ShorthandPropertyAssignment : ShorthandPropertyAssignment
+>ObjectLiteralElement : ObjectLiteralElement
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+ }
+ interface VariableLikeDeclaration extends Declaration {
+>VariableLikeDeclaration : VariableLikeDeclaration
+>Declaration : Declaration
+
+ propertyName?: Identifier;
+>propertyName : Identifier
+>Identifier : Identifier
+
+ dotDotDotToken?: Node;
+>dotDotDotToken : Node
+>Node : Node
+
+ name: DeclarationName;
+>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface BindingPattern extends Node {
+>BindingPattern : BindingPattern
+>Node : Node
+
+ elements: NodeArray;
+>elements : NodeArray
+>NodeArray : NodeArray
+>BindingElement : BindingElement
+ }
+ /**
+ * Several node kinds share function-like features such as a signature,
+ * a name, and a body. These nodes should extend FunctionLikeDeclaration.
+ * Examples:
+ * FunctionDeclaration
+ * MethodDeclaration
+ * AccessorDeclaration
+ */
+ interface FunctionLikeDeclaration extends SignatureDeclaration {
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+>SignatureDeclaration : SignatureDeclaration
+
+ _functionLikeDeclarationBrand: any;
+>_functionLikeDeclarationBrand : any
+
+ asteriskToken?: Node;
+>asteriskToken : Node
+>Node : Node
+
+ questionToken?: Node;
+>questionToken : Node
+>Node : Node
+
+ body?: Block | Expression;
+>body : Expression | Block
+>Block : Block
+>Expression : Expression
+ }
+ interface FunctionDeclaration extends FunctionLikeDeclaration, Statement {
+>FunctionDeclaration : FunctionDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+>Statement : Statement
+
+ name?: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ body?: Block;
+>body : Block
+>Block : Block
+ }
+ interface MethodDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement {
+>MethodDeclaration : MethodDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+>ClassElement : ClassElement
+>ObjectLiteralElement : ObjectLiteralElement
+
+ body?: Block;
+>body : Block
+>Block : Block
+ }
+ interface ConstructorDeclaration extends FunctionLikeDeclaration, ClassElement {
+>ConstructorDeclaration : ConstructorDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+>ClassElement : ClassElement
+
+ body?: Block;
+>body : Block
+>Block : Block
+ }
+ interface SemicolonClassElement extends ClassElement {
+>SemicolonClassElement : SemicolonClassElement
+>ClassElement : ClassElement
+
+ _semicolonClassElementBrand: any;
+>_semicolonClassElementBrand : any
+ }
+ interface AccessorDeclaration extends FunctionLikeDeclaration, ClassElement, ObjectLiteralElement {
+>AccessorDeclaration : AccessorDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+>ClassElement : ClassElement
+>ObjectLiteralElement : ObjectLiteralElement
+
+ _accessorDeclarationBrand: any;
+>_accessorDeclarationBrand : any
+
+ body: Block;
+>body : Block
+>Block : Block
+ }
+ interface IndexSignatureDeclaration extends SignatureDeclaration, ClassElement {
+>IndexSignatureDeclaration : IndexSignatureDeclaration
+>SignatureDeclaration : SignatureDeclaration
+>ClassElement : ClassElement
+
+ _indexSignatureDeclarationBrand: any;
+>_indexSignatureDeclarationBrand : any
+ }
+ interface TypeNode extends Node {
+>TypeNode : TypeNode
+>Node : Node
+
+ _typeNodeBrand: any;
+>_typeNodeBrand : any
+ }
+ interface FunctionOrConstructorTypeNode extends TypeNode, SignatureDeclaration {
+>FunctionOrConstructorTypeNode : FunctionOrConstructorTypeNode
+>TypeNode : TypeNode
+>SignatureDeclaration : SignatureDeclaration
+
+ _functionOrConstructorTypeNodeBrand: any;
+>_functionOrConstructorTypeNodeBrand : any
+ }
+ interface TypeReferenceNode extends TypeNode {
+>TypeReferenceNode : TypeReferenceNode
+>TypeNode : TypeNode
+
+ typeName: EntityName;
+>typeName : Identifier | QualifiedName
+>EntityName : Identifier | QualifiedName
+
+ typeArguments?: NodeArray;
+>typeArguments : NodeArray
+>NodeArray : NodeArray
+>TypeNode : TypeNode
+ }
+ interface TypeQueryNode extends TypeNode {
+>TypeQueryNode : TypeQueryNode
+>TypeNode : TypeNode
+
+ exprName: EntityName;
+>exprName : Identifier | QualifiedName
+>EntityName : Identifier | QualifiedName
+ }
+ interface TypeLiteralNode extends TypeNode, Declaration {
+>TypeLiteralNode : TypeLiteralNode
+>TypeNode : TypeNode
+>Declaration : Declaration
+
+ members: NodeArray;
+>members : NodeArray
+>NodeArray : NodeArray
+>Node : Node
+ }
+ interface ArrayTypeNode extends TypeNode {
+>ArrayTypeNode : ArrayTypeNode
+>TypeNode : TypeNode
+
+ elementType: TypeNode;
+>elementType : TypeNode
+>TypeNode : TypeNode
+ }
+ interface TupleTypeNode extends TypeNode {
+>TupleTypeNode : TupleTypeNode
+>TypeNode : TypeNode
+
+ elementTypes: NodeArray;
+>elementTypes : NodeArray
+>NodeArray : NodeArray
+>TypeNode : TypeNode
+ }
+ interface UnionTypeNode extends TypeNode {
+>UnionTypeNode : UnionTypeNode
+>TypeNode : TypeNode
+
+ types: NodeArray;
+>types : NodeArray
+>NodeArray : NodeArray
+>TypeNode : TypeNode
+ }
+ interface ParenthesizedTypeNode extends TypeNode {
+>ParenthesizedTypeNode : ParenthesizedTypeNode
+>TypeNode : TypeNode
+
+ type: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+ }
+ interface StringLiteralTypeNode extends LiteralExpression, TypeNode {
+>StringLiteralTypeNode : StringLiteralTypeNode
+>LiteralExpression : LiteralExpression
+>TypeNode : TypeNode
+ }
+ interface Expression extends Node {
+>Expression : Expression
+>Node : Node
+
+ _expressionBrand: any;
+>_expressionBrand : any
+
+ contextualType?: Type;
+>contextualType : Type
+>Type : Type
+ }
+ interface UnaryExpression extends Expression {
+>UnaryExpression : UnaryExpression
+>Expression : Expression
+
+ _unaryExpressionBrand: any;
+>_unaryExpressionBrand : any
+ }
+ interface PrefixUnaryExpression extends UnaryExpression {
+>PrefixUnaryExpression : PrefixUnaryExpression
+>UnaryExpression : UnaryExpression
+
+ operator: SyntaxKind;
+>operator : SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ operand: UnaryExpression;
+>operand : UnaryExpression
+>UnaryExpression : UnaryExpression
+ }
+ interface PostfixUnaryExpression extends PostfixExpression {
+>PostfixUnaryExpression : PostfixUnaryExpression
+>PostfixExpression : PostfixExpression
+
+ operand: LeftHandSideExpression;
+>operand : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ operator: SyntaxKind;
+>operator : SyntaxKind
+>SyntaxKind : SyntaxKind
+ }
+ interface PostfixExpression extends UnaryExpression {
+>PostfixExpression : PostfixExpression
+>UnaryExpression : UnaryExpression
+
+ _postfixExpressionBrand: any;
+>_postfixExpressionBrand : any
+ }
+ interface LeftHandSideExpression extends PostfixExpression {
+>LeftHandSideExpression : LeftHandSideExpression
+>PostfixExpression : PostfixExpression
+
+ _leftHandSideExpressionBrand: any;
+>_leftHandSideExpressionBrand : any
+ }
+ interface MemberExpression extends LeftHandSideExpression {
+>MemberExpression : MemberExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ _memberExpressionBrand: any;
+>_memberExpressionBrand : any
+ }
+ interface PrimaryExpression extends MemberExpression {
+>PrimaryExpression : PrimaryExpression
+>MemberExpression : MemberExpression
+
+ _primaryExpressionBrand: any;
+>_primaryExpressionBrand : any
+ }
+ interface DeleteExpression extends UnaryExpression {
+>DeleteExpression : DeleteExpression
+>UnaryExpression : UnaryExpression
+
+ expression: UnaryExpression;
+>expression : UnaryExpression
+>UnaryExpression : UnaryExpression
+ }
+ interface TypeOfExpression extends UnaryExpression {
+>TypeOfExpression : TypeOfExpression
+>UnaryExpression : UnaryExpression
+
+ expression: UnaryExpression;
+>expression : UnaryExpression
+>UnaryExpression : UnaryExpression
+ }
+ interface VoidExpression extends UnaryExpression {
+>VoidExpression : VoidExpression
+>UnaryExpression : UnaryExpression
+
+ expression: UnaryExpression;
+>expression : UnaryExpression
+>UnaryExpression : UnaryExpression
+ }
+ interface YieldExpression extends Expression {
+>YieldExpression : YieldExpression
+>Expression : Expression
+
+ asteriskToken?: Node;
+>asteriskToken : Node
+>Node : Node
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface BinaryExpression extends Expression {
+>BinaryExpression : BinaryExpression
+>Expression : Expression
+
+ left: Expression;
+>left : Expression
+>Expression : Expression
+
+ operatorToken: Node;
+>operatorToken : Node
+>Node : Node
+
+ right: Expression;
+>right : Expression
+>Expression : Expression
+ }
+ interface ConditionalExpression extends Expression {
+>ConditionalExpression : ConditionalExpression
+>Expression : Expression
+
+ condition: Expression;
+>condition : Expression
+>Expression : Expression
+
+ questionToken: Node;
+>questionToken : Node
+>Node : Node
+
+ whenTrue: Expression;
+>whenTrue : Expression
+>Expression : Expression
+
+ colonToken: Node;
+>colonToken : Node
+>Node : Node
+
+ whenFalse: Expression;
+>whenFalse : Expression
+>Expression : Expression
+ }
+ interface FunctionExpression extends PrimaryExpression, FunctionLikeDeclaration {
+>FunctionExpression : FunctionExpression
+>PrimaryExpression : PrimaryExpression
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+
+ name?: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ body: Block | Expression;
+>body : Expression | Block
+>Block : Block
+>Expression : Expression
+ }
+ interface ArrowFunction extends Expression, FunctionLikeDeclaration {
+>ArrowFunction : ArrowFunction
+>Expression : Expression
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+
+ equalsGreaterThanToken: Node;
+>equalsGreaterThanToken : Node
+>Node : Node
+ }
+ interface LiteralExpression extends PrimaryExpression {
+>LiteralExpression : LiteralExpression
+>PrimaryExpression : PrimaryExpression
+
+ text: string;
+>text : string
+
+ isUnterminated?: boolean;
+>isUnterminated : boolean
+
+ hasExtendedUnicodeEscape?: boolean;
+>hasExtendedUnicodeEscape : boolean
+ }
+ interface StringLiteralExpression extends LiteralExpression {
+>StringLiteralExpression : StringLiteralExpression
+>LiteralExpression : LiteralExpression
+
+ _stringLiteralExpressionBrand: any;
+>_stringLiteralExpressionBrand : any
+ }
+ interface TemplateExpression extends PrimaryExpression {
+>TemplateExpression : TemplateExpression
+>PrimaryExpression : PrimaryExpression
+
+ head: LiteralExpression;
+>head : LiteralExpression
+>LiteralExpression : LiteralExpression
+
+ templateSpans: NodeArray;
+>templateSpans : NodeArray
+>NodeArray : NodeArray
+>TemplateSpan : TemplateSpan
+ }
+ interface TemplateSpan extends Node {
+>TemplateSpan : TemplateSpan
+>Node : Node
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+
+ literal: LiteralExpression;
+>literal : LiteralExpression
+>LiteralExpression : LiteralExpression
+ }
+ interface ParenthesizedExpression extends PrimaryExpression {
+>ParenthesizedExpression : ParenthesizedExpression
+>PrimaryExpression : PrimaryExpression
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface ArrayLiteralExpression extends PrimaryExpression {
+>ArrayLiteralExpression : ArrayLiteralExpression
+>PrimaryExpression : PrimaryExpression
+
+ elements: NodeArray;
+>elements : NodeArray
+>NodeArray : NodeArray
+>Expression : Expression
+ }
+ interface SpreadElementExpression extends Expression {
+>SpreadElementExpression : SpreadElementExpression
+>Expression : Expression
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface ObjectLiteralExpression extends PrimaryExpression, Declaration {
+>ObjectLiteralExpression : ObjectLiteralExpression
+>PrimaryExpression : PrimaryExpression
+>Declaration : Declaration
+
+ properties: NodeArray;
+>properties : NodeArray
+>NodeArray : NodeArray
+>ObjectLiteralElement : ObjectLiteralElement
+ }
+ interface PropertyAccessExpression extends MemberExpression {
+>PropertyAccessExpression : PropertyAccessExpression
+>MemberExpression : MemberExpression
+
+ expression: LeftHandSideExpression;
+>expression : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ dotToken: Node;
+>dotToken : Node
+>Node : Node
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+ }
+ interface ElementAccessExpression extends MemberExpression {
+>ElementAccessExpression : ElementAccessExpression
+>MemberExpression : MemberExpression
+
+ expression: LeftHandSideExpression;
+>expression : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ argumentExpression?: Expression;
+>argumentExpression : Expression
+>Expression : Expression
+ }
+ interface CallExpression extends LeftHandSideExpression {
+>CallExpression : CallExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ expression: LeftHandSideExpression;
+>expression : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ typeArguments?: NodeArray;
+>typeArguments : NodeArray
+>NodeArray : NodeArray
+>TypeNode : TypeNode
+
+ arguments: NodeArray;
+>arguments : NodeArray
+>NodeArray : NodeArray
+>Expression : Expression
+ }
+ interface HeritageClauseElement extends Node {
+>HeritageClauseElement : HeritageClauseElement
+>Node : Node
+
+ expression: LeftHandSideExpression;
+>expression : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ typeArguments?: NodeArray;
+>typeArguments : NodeArray
+>NodeArray : NodeArray
+>TypeNode : TypeNode
+ }
+ interface NewExpression extends CallExpression, PrimaryExpression {
+>NewExpression : NewExpression
+>CallExpression : CallExpression
+>PrimaryExpression : PrimaryExpression
+ }
+ interface TaggedTemplateExpression extends MemberExpression {
+>TaggedTemplateExpression : TaggedTemplateExpression
+>MemberExpression : MemberExpression
+
+ tag: LeftHandSideExpression;
+>tag : LeftHandSideExpression
+>LeftHandSideExpression : LeftHandSideExpression
+
+ template: LiteralExpression | TemplateExpression;
+>template : LiteralExpression | TemplateExpression
+>LiteralExpression : LiteralExpression
+>TemplateExpression : TemplateExpression
+ }
+ type CallLikeExpression = CallExpression | NewExpression | TaggedTemplateExpression;
+>CallLikeExpression : CallExpression | NewExpression | TaggedTemplateExpression
+>CallExpression : CallExpression
+>NewExpression : NewExpression
+>TaggedTemplateExpression : TaggedTemplateExpression
+
+ interface TypeAssertion extends UnaryExpression {
+>TypeAssertion : TypeAssertion
+>UnaryExpression : UnaryExpression
+
+ type: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+
+ expression: UnaryExpression;
+>expression : UnaryExpression
+>UnaryExpression : UnaryExpression
+ }
+ interface Statement extends Node, ModuleElement {
+>Statement : Statement
+>Node : Node
+>ModuleElement : ModuleElement
+
+ _statementBrand: any;
+>_statementBrand : any
+ }
+ interface Block extends Statement {
+>Block : Block
+>Statement : Statement
+
+ statements: NodeArray;
+>statements : NodeArray
+>NodeArray : NodeArray
+>Statement : Statement
+ }
+ interface VariableStatement extends Statement {
+>VariableStatement : VariableStatement
+>Statement : Statement
+
+ declarationList: VariableDeclarationList;
+>declarationList : VariableDeclarationList
+>VariableDeclarationList : VariableDeclarationList
+ }
+ interface ExpressionStatement extends Statement {
+>ExpressionStatement : ExpressionStatement
+>Statement : Statement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface IfStatement extends Statement {
+>IfStatement : IfStatement
+>Statement : Statement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+
+ thenStatement: Statement;
+>thenStatement : Statement
+>Statement : Statement
+
+ elseStatement?: Statement;
+>elseStatement : Statement
+>Statement : Statement
+ }
+ interface IterationStatement extends Statement {
+>IterationStatement : IterationStatement
+>Statement : Statement
+
+ statement: Statement;
+>statement : Statement
+>Statement : Statement
+ }
+ interface DoStatement extends IterationStatement {
+>DoStatement : DoStatement
+>IterationStatement : IterationStatement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface WhileStatement extends IterationStatement {
+>WhileStatement : WhileStatement
+>IterationStatement : IterationStatement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface ForStatement extends IterationStatement {
+>ForStatement : ForStatement
+>IterationStatement : IterationStatement
+
+ initializer?: VariableDeclarationList | Expression;
+>initializer : Expression | VariableDeclarationList
+>VariableDeclarationList : VariableDeclarationList
+>Expression : Expression
+
+ condition?: Expression;
+>condition : Expression
+>Expression : Expression
+
+ iterator?: Expression;
+>iterator : Expression
+>Expression : Expression
+ }
+ interface ForInStatement extends IterationStatement {
+>ForInStatement : ForInStatement
+>IterationStatement : IterationStatement
+
+ initializer: VariableDeclarationList | Expression;
+>initializer : Expression | VariableDeclarationList
+>VariableDeclarationList : VariableDeclarationList
+>Expression : Expression
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface ForOfStatement extends IterationStatement {
+>ForOfStatement : ForOfStatement
+>IterationStatement : IterationStatement
+
+ initializer: VariableDeclarationList | Expression;
+>initializer : Expression | VariableDeclarationList
+>VariableDeclarationList : VariableDeclarationList
+>Expression : Expression
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface BreakOrContinueStatement extends Statement {
+>BreakOrContinueStatement : BreakOrContinueStatement
+>Statement : Statement
+
+ label?: Identifier;
+>label : Identifier
+>Identifier : Identifier
+ }
+ interface ReturnStatement extends Statement {
+>ReturnStatement : ReturnStatement
+>Statement : Statement
+
+ expression?: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface WithStatement extends Statement {
+>WithStatement : WithStatement
+>Statement : Statement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+
+ statement: Statement;
+>statement : Statement
+>Statement : Statement
+ }
+ interface SwitchStatement extends Statement {
+>SwitchStatement : SwitchStatement
+>Statement : Statement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+
+ caseBlock: CaseBlock;
+>caseBlock : CaseBlock
+>CaseBlock : CaseBlock
+ }
+ interface CaseBlock extends Node {
+>CaseBlock : CaseBlock
+>Node : Node
+
+ clauses: NodeArray;
+>clauses : NodeArray
+>NodeArray : NodeArray
+>CaseOrDefaultClause : CaseClause | DefaultClause
+ }
+ interface CaseClause extends Node {
+>CaseClause : CaseClause
+>Node : Node
+
+ expression?: Expression;
+>expression : Expression
+>Expression : Expression
+
+ statements: NodeArray;
+>statements : NodeArray
+>NodeArray : NodeArray
+>Statement : Statement
+ }
+ interface DefaultClause extends Node {
+>DefaultClause : DefaultClause
+>Node : Node
+
+ statements: NodeArray;
+>statements : NodeArray
+>NodeArray : NodeArray
+>Statement : Statement
+ }
+ type CaseOrDefaultClause = CaseClause | DefaultClause;
+>CaseOrDefaultClause : CaseClause | DefaultClause
+>CaseClause : CaseClause
+>DefaultClause : DefaultClause
+
+ interface LabeledStatement extends Statement {
+>LabeledStatement : LabeledStatement
+>Statement : Statement
+
+ label: Identifier;
+>label : Identifier
+>Identifier : Identifier
+
+ statement: Statement;
+>statement : Statement
+>Statement : Statement
+ }
+ interface ThrowStatement extends Statement {
+>ThrowStatement : ThrowStatement
+>Statement : Statement
+
+ expression: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface TryStatement extends Statement {
+>TryStatement : TryStatement
+>Statement : Statement
+
+ tryBlock: Block;
+>tryBlock : Block
+>Block : Block
+
+ catchClause?: CatchClause;
+>catchClause : CatchClause
+>CatchClause : CatchClause
+
+ finallyBlock?: Block;
+>finallyBlock : Block
+>Block : Block
+ }
+ interface CatchClause extends Node {
+>CatchClause : CatchClause
+>Node : Node
+
+ variableDeclaration: VariableDeclaration;
+>variableDeclaration : VariableDeclaration
+>VariableDeclaration : VariableDeclaration
+
+ block: Block;
+>block : Block
+>Block : Block
+ }
+ interface ModuleElement extends Node {
+>ModuleElement : ModuleElement
+>Node : Node
+
+ _moduleElementBrand: any;
+>_moduleElementBrand : any
+ }
+ interface ClassLikeDeclaration extends Declaration {
+>ClassLikeDeclaration : ClassLikeDeclaration
+>Declaration : Declaration
+
+ name?: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ typeParameters?: NodeArray;
+>typeParameters : NodeArray
+>NodeArray : NodeArray
+>TypeParameterDeclaration : TypeParameterDeclaration
+
+ heritageClauses?: NodeArray;
+>heritageClauses : NodeArray
+>NodeArray : NodeArray
+>HeritageClause : HeritageClause
+
+ members: NodeArray;
+>members : NodeArray
+>NodeArray : NodeArray
+>ClassElement : ClassElement
+ }
+ interface ClassDeclaration extends ClassLikeDeclaration, Statement {
+>ClassDeclaration : ClassDeclaration
+>ClassLikeDeclaration : ClassLikeDeclaration
+>Statement : Statement
+ }
+ interface ClassExpression extends ClassLikeDeclaration, PrimaryExpression {
+>ClassExpression : ClassExpression
+>ClassLikeDeclaration : ClassLikeDeclaration
+>PrimaryExpression : PrimaryExpression
+ }
+ interface ClassElement extends Declaration {
+>ClassElement : ClassElement
+>Declaration : Declaration
+
+ _classElementBrand: any;
+>_classElementBrand : any
+ }
+ interface InterfaceDeclaration extends Declaration, ModuleElement {
+>InterfaceDeclaration : InterfaceDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ typeParameters?: NodeArray;
+>typeParameters : NodeArray
+>NodeArray : NodeArray
+>TypeParameterDeclaration : TypeParameterDeclaration
+
+ heritageClauses?: NodeArray;
+>heritageClauses : NodeArray
+>NodeArray : NodeArray
+>HeritageClause : HeritageClause
+
+ members: NodeArray;
+>members : NodeArray
+>NodeArray : NodeArray
+>Declaration : Declaration
+ }
+ interface HeritageClause extends Node {
+>HeritageClause : HeritageClause
+>Node : Node
+
+ token: SyntaxKind;
+>token : SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ types?: NodeArray;
+>types : NodeArray
+>NodeArray : NodeArray
+>HeritageClauseElement : HeritageClauseElement
+ }
+ interface TypeAliasDeclaration extends Declaration, ModuleElement {
+>TypeAliasDeclaration : TypeAliasDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ type: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+ }
+ interface EnumMember extends Declaration {
+>EnumMember : EnumMember
+>Declaration : Declaration
+
+ name: DeclarationName;
+>name : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+>DeclarationName : Identifier | LiteralExpression | ComputedPropertyName | BindingPattern
+
+ initializer?: Expression;
+>initializer : Expression
+>Expression : Expression
+ }
+ interface EnumDeclaration extends Declaration, ModuleElement {
+>EnumDeclaration : EnumDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ members: NodeArray;
+>members : NodeArray
+>NodeArray : NodeArray
+>EnumMember : EnumMember
+ }
+ interface ModuleDeclaration extends Declaration, ModuleElement {
+>ModuleDeclaration : ModuleDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ name: Identifier | LiteralExpression;
+>name : Identifier | LiteralExpression
+>Identifier : Identifier
+>LiteralExpression : LiteralExpression
+
+ body: ModuleBlock | ModuleDeclaration;
+>body : ModuleDeclaration | ModuleBlock
+>ModuleBlock : ModuleBlock
+>ModuleDeclaration : ModuleDeclaration
+ }
+ interface ModuleBlock extends Node, ModuleElement {
+>ModuleBlock : ModuleBlock
+>Node : Node
+>ModuleElement : ModuleElement
+
+ statements: NodeArray;
+>statements : NodeArray
+>NodeArray : NodeArray
+>ModuleElement : ModuleElement
+ }
+ interface ImportEqualsDeclaration extends Declaration, ModuleElement {
+>ImportEqualsDeclaration : ImportEqualsDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ moduleReference: EntityName | ExternalModuleReference;
+>moduleReference : Identifier | QualifiedName | ExternalModuleReference
+>EntityName : Identifier | QualifiedName
+>ExternalModuleReference : ExternalModuleReference
+ }
+ interface ExternalModuleReference extends Node {
+>ExternalModuleReference : ExternalModuleReference
+>Node : Node
+
+ expression?: Expression;
+>expression : Expression
+>Expression : Expression
+ }
+ interface ImportDeclaration extends ModuleElement {
+>ImportDeclaration : ImportDeclaration
+>ModuleElement : ModuleElement
+
+ importClause?: ImportClause;
+>importClause : ImportClause
+>ImportClause : ImportClause
+
+ moduleSpecifier: Expression;
+>moduleSpecifier : Expression
+>Expression : Expression
+ }
+ interface ImportClause extends Declaration {
+>ImportClause : ImportClause
+>Declaration : Declaration
+
+ name?: Identifier;
+>name : Identifier
+>Identifier : Identifier
+
+ namedBindings?: NamespaceImport | NamedImports;
+>namedBindings : NamespaceImport | NamedImportsOrExports
+>NamespaceImport : NamespaceImport
+>NamedImports : NamedImportsOrExports
+ }
+ interface NamespaceImport extends Declaration {
+>NamespaceImport : NamespaceImport
+>Declaration : Declaration
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+ }
+ interface ExportDeclaration extends Declaration, ModuleElement {
+>ExportDeclaration : ExportDeclaration
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ exportClause?: NamedExports;
+>exportClause : NamedImportsOrExports
+>NamedExports : NamedImportsOrExports
+
+ moduleSpecifier?: Expression;
+>moduleSpecifier : Expression
+>Expression : Expression
+ }
+ interface NamedImportsOrExports extends Node {
+>NamedImportsOrExports : NamedImportsOrExports
+>Node : Node
+
+ elements: NodeArray;
+>elements : NodeArray
+>NodeArray : NodeArray
+>ImportOrExportSpecifier : ImportOrExportSpecifier
+ }
+ type NamedImports = NamedImportsOrExports;
+>NamedImports : NamedImportsOrExports
+>NamedImportsOrExports : NamedImportsOrExports
+
+ type NamedExports = NamedImportsOrExports;
+>NamedExports : NamedImportsOrExports
+>NamedImportsOrExports : NamedImportsOrExports
+
+ interface ImportOrExportSpecifier extends Declaration {
+>ImportOrExportSpecifier : ImportOrExportSpecifier
+>Declaration : Declaration
+
+ propertyName?: Identifier;
+>propertyName : Identifier
+>Identifier : Identifier
+
+ name: Identifier;
+>name : Identifier
+>Identifier : Identifier
+ }
+ type ImportSpecifier = ImportOrExportSpecifier;
+>ImportSpecifier : ImportOrExportSpecifier
+>ImportOrExportSpecifier : ImportOrExportSpecifier
+
+ type ExportSpecifier = ImportOrExportSpecifier;
+>ExportSpecifier : ImportOrExportSpecifier
+>ImportOrExportSpecifier : ImportOrExportSpecifier
+
+ interface ExportAssignment extends Declaration, ModuleElement {
+>ExportAssignment : ExportAssignment
+>Declaration : Declaration
+>ModuleElement : ModuleElement
+
+ isExportEquals?: boolean;
+>isExportEquals : boolean
+
+ expression?: Expression;
+>expression : Expression
+>Expression : Expression
+
+ type?: TypeNode;
+>type : TypeNode
+>TypeNode : TypeNode
+ }
+ interface FileReference extends TextRange {
+>FileReference : FileReference
+>TextRange : TextRange
+
+ fileName: string;
+>fileName : string
+ }
+ interface CommentRange extends TextRange {
+>CommentRange : CommentRange
+>TextRange : TextRange
+
+ hasTrailingNewLine?: boolean;
+>hasTrailingNewLine : boolean
+ }
+ interface SourceFile extends Declaration {
+>SourceFile : SourceFile
+>Declaration : Declaration
+
+ statements: NodeArray;
+>statements : NodeArray
+>NodeArray : NodeArray
+>ModuleElement : ModuleElement
+
+ endOfFileToken: Node;
+>endOfFileToken : Node
+>Node : Node
+
+ fileName: string;
+>fileName : string
+
+ text: string;
+>text : string
+
+ amdDependencies: {
+>amdDependencies : { path: string; name: string; }[]
+
+ path: string;
+>path : string
+
+ name: string;
+>name : string
+
+ }[];
+ amdModuleName: string;
+>amdModuleName : string
+
+ referencedFiles: FileReference[];
+>referencedFiles : FileReference[]
+>FileReference : FileReference
+
+ hasNoDefaultLib: boolean;
+>hasNoDefaultLib : boolean
+
+ externalModuleIndicator: Node;
+>externalModuleIndicator : Node
+>Node : Node
+
+ languageVersion: ScriptTarget;
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+
+ identifiers: Map;
+>identifiers : Map
+>Map : Map
+ }
+ interface ScriptReferenceHost {
+>ScriptReferenceHost : ScriptReferenceHost
+
+ getCompilerOptions(): CompilerOptions;
+>getCompilerOptions : () => CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ getSourceFile(fileName: string): SourceFile;
+>getSourceFile : (fileName: string) => SourceFile
+>fileName : string
+>SourceFile : SourceFile
+
+ getCurrentDirectory(): string;
+>getCurrentDirectory : () => string
+ }
+ interface WriteFileCallback {
+>WriteFileCallback : WriteFileCallback
+
+ (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void): void;
+>fileName : string
+>data : string
+>writeByteOrderMark : boolean
+>onError : (message: string) => void
+>message : string
+ }
+ interface Program extends ScriptReferenceHost {
+>Program : Program
+>ScriptReferenceHost : ScriptReferenceHost
+
+ getSourceFiles(): SourceFile[];
+>getSourceFiles : () => SourceFile[]
+>SourceFile : SourceFile
+
+ /**
+ * Emits the JavaScript and declaration files. If targetSourceFile is not specified, then
+ * the JavaScript and declaration files will be produced for all the files in this program.
+ * If targetSourceFile is specified, then only the JavaScript and declaration for that
+ * specific file will be generated.
+ *
+ * If writeFile is not specified then the writeFile callback from the compiler host will be
+ * used for writing the JavaScript and declaration files. Otherwise, the writeFile parameter
+ * will be invoked when writing the JavaScript and declaration files.
+ */
+ emit(targetSourceFile?: SourceFile, writeFile?: WriteFileCallback): EmitResult;
+>emit : (targetSourceFile?: SourceFile, writeFile?: WriteFileCallback) => EmitResult
+>targetSourceFile : SourceFile
+>SourceFile : SourceFile
+>writeFile : WriteFileCallback
+>WriteFileCallback : WriteFileCallback
+>EmitResult : EmitResult
+
+ getSyntacticDiagnostics(sourceFile?: SourceFile): Diagnostic[];
+>getSyntacticDiagnostics : (sourceFile?: SourceFile) => Diagnostic[]
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Diagnostic : Diagnostic
+
+ getGlobalDiagnostics(): Diagnostic[];
+>getGlobalDiagnostics : () => Diagnostic[]
+>Diagnostic : Diagnostic
+
+ getSemanticDiagnostics(sourceFile?: SourceFile): Diagnostic[];
+>getSemanticDiagnostics : (sourceFile?: SourceFile) => Diagnostic[]
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Diagnostic : Diagnostic
+
+ getDeclarationDiagnostics(sourceFile?: SourceFile): Diagnostic[];
+>getDeclarationDiagnostics : (sourceFile?: SourceFile) => Diagnostic[]
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Diagnostic : Diagnostic
+
+ getTypeChecker(): TypeChecker;
+>getTypeChecker : () => TypeChecker
+>TypeChecker : TypeChecker
+
+ getCommonSourceDirectory(): string;
+>getCommonSourceDirectory : () => string
+ }
+ interface SourceMapSpan {
+>SourceMapSpan : SourceMapSpan
+
+ emittedLine: number;
+>emittedLine : number
+
+ emittedColumn: number;
+>emittedColumn : number
+
+ sourceLine: number;
+>sourceLine : number
+
+ sourceColumn: number;
+>sourceColumn : number
+
+ nameIndex?: number;
+>nameIndex : number
+
+ sourceIndex: number;
+>sourceIndex : number
+ }
+ interface SourceMapData {
+>SourceMapData : SourceMapData
+
+ sourceMapFilePath: string;
+>sourceMapFilePath : string
+
+ jsSourceMappingURL: string;
+>jsSourceMappingURL : string
+
+ sourceMapFile: string;
+>sourceMapFile : string
+
+ sourceMapSourceRoot: string;
+>sourceMapSourceRoot : string
+
+ sourceMapSources: string[];
+>sourceMapSources : string[]
+
+ inputSourceFileNames: string[];
+>inputSourceFileNames : string[]
+
+ sourceMapNames?: string[];
+>sourceMapNames : string[]
+
+ sourceMapMappings: string;
+>sourceMapMappings : string
+
+ sourceMapDecodedMappings: SourceMapSpan[];
+>sourceMapDecodedMappings : SourceMapSpan[]
+>SourceMapSpan : SourceMapSpan
+ }
+ enum ExitStatus {
+>ExitStatus : ExitStatus
+
+ Success = 0,
+>Success : ExitStatus
+
+ DiagnosticsPresent_OutputsSkipped = 1,
+>DiagnosticsPresent_OutputsSkipped : ExitStatus
+
+ DiagnosticsPresent_OutputsGenerated = 2,
+>DiagnosticsPresent_OutputsGenerated : ExitStatus
+ }
+ interface EmitResult {
+>EmitResult : EmitResult
+
+ emitSkipped: boolean;
+>emitSkipped : boolean
+
+ diagnostics: Diagnostic[];
+>diagnostics : Diagnostic[]
+>Diagnostic : Diagnostic
+
+ sourceMaps: SourceMapData[];
+>sourceMaps : SourceMapData[]
+>SourceMapData : SourceMapData
+ }
+ interface TypeCheckerHost {
+>TypeCheckerHost : TypeCheckerHost
+
+ getCompilerOptions(): CompilerOptions;
+>getCompilerOptions : () => CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ getSourceFiles(): SourceFile[];
+>getSourceFiles : () => SourceFile[]
+>SourceFile : SourceFile
+
+ getSourceFile(fileName: string): SourceFile;
+>getSourceFile : (fileName: string) => SourceFile
+>fileName : string
+>SourceFile : SourceFile
+ }
+ interface TypeChecker {
+>TypeChecker : TypeChecker
+
+ getTypeOfSymbolAtLocation(symbol: Symbol, node: Node): Type;
+>getTypeOfSymbolAtLocation : (symbol: Symbol, node: Node) => Type
+>symbol : Symbol
+>Symbol : Symbol
+>node : Node
+>Node : Node
+>Type : Type
+
+ getDeclaredTypeOfSymbol(symbol: Symbol): Type;
+>getDeclaredTypeOfSymbol : (symbol: Symbol) => Type
+>symbol : Symbol
+>Symbol : Symbol
+>Type : Type
+
+ getPropertiesOfType(type: Type): Symbol[];
+>getPropertiesOfType : (type: Type) => Symbol[]
+>type : Type
+>Type : Type
+>Symbol : Symbol
+
+ getPropertyOfType(type: Type, propertyName: string): Symbol;
+>getPropertyOfType : (type: Type, propertyName: string) => Symbol
+>type : Type
+>Type : Type
+>propertyName : string
+>Symbol : Symbol
+
+ getSignaturesOfType(type: Type, kind: SignatureKind): Signature[];
+>getSignaturesOfType : (type: Type, kind: SignatureKind) => Signature[]
+>type : Type
+>Type : Type
+>kind : SignatureKind
+>SignatureKind : SignatureKind
+>Signature : Signature
+
+ getIndexTypeOfType(type: Type, kind: IndexKind): Type;
+>getIndexTypeOfType : (type: Type, kind: IndexKind) => Type
+>type : Type
+>Type : Type
+>kind : IndexKind
+>IndexKind : IndexKind
+>Type : Type
+
+ getReturnTypeOfSignature(signature: Signature): Type;
+>getReturnTypeOfSignature : (signature: Signature) => Type
+>signature : Signature
+>Signature : Signature
+>Type : Type
+
+ getSymbolsInScope(location: Node, meaning: SymbolFlags): Symbol[];
+>getSymbolsInScope : (location: Node, meaning: SymbolFlags) => Symbol[]
+>location : Node
+>Node : Node
+>meaning : SymbolFlags
+>SymbolFlags : SymbolFlags
+>Symbol : Symbol
+
+ getSymbolAtLocation(node: Node): Symbol;
+>getSymbolAtLocation : (node: Node) => Symbol
+>node : Node
+>Node : Node
+>Symbol : Symbol
+
+ getShorthandAssignmentValueSymbol(location: Node): Symbol;
+>getShorthandAssignmentValueSymbol : (location: Node) => Symbol
+>location : Node
+>Node : Node
+>Symbol : Symbol
+
+ getTypeAtLocation(node: Node): Type;
+>getTypeAtLocation : (node: Node) => Type
+>node : Node
+>Node : Node
+>Type : Type
+
+ typeToString(type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags): string;
+>typeToString : (type: Type, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => string
+>type : Type
+>Type : Type
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ symbolToString(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): string;
+>symbolToString : (symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) => string
+>symbol : Symbol
+>Symbol : Symbol
+>enclosingDeclaration : Node
+>Node : Node
+>meaning : SymbolFlags
+>SymbolFlags : SymbolFlags
+
+ getSymbolDisplayBuilder(): SymbolDisplayBuilder;
+>getSymbolDisplayBuilder : () => SymbolDisplayBuilder
+>SymbolDisplayBuilder : SymbolDisplayBuilder
+
+ getFullyQualifiedName(symbol: Symbol): string;
+>getFullyQualifiedName : (symbol: Symbol) => string
+>symbol : Symbol
+>Symbol : Symbol
+
+ getAugmentedPropertiesOfType(type: Type): Symbol[];
+>getAugmentedPropertiesOfType : (type: Type) => Symbol[]
+>type : Type
+>Type : Type
+>Symbol : Symbol
+
+ getRootSymbols(symbol: Symbol): Symbol[];
+>getRootSymbols : (symbol: Symbol) => Symbol[]
+>symbol : Symbol
+>Symbol : Symbol
+>Symbol : Symbol
+
+ getContextualType(node: Expression): Type;
+>getContextualType : (node: Expression) => Type
+>node : Expression
+>Expression : Expression
+>Type : Type
+
+ getResolvedSignature(node: CallLikeExpression, candidatesOutArray?: Signature[]): Signature;
+>getResolvedSignature : (node: CallExpression | NewExpression | TaggedTemplateExpression, candidatesOutArray?: Signature[]) => Signature
+>node : CallExpression | NewExpression | TaggedTemplateExpression
+>CallLikeExpression : CallExpression | NewExpression | TaggedTemplateExpression
+>candidatesOutArray : Signature[]
+>Signature : Signature
+>Signature : Signature
+
+ getSignatureFromDeclaration(declaration: SignatureDeclaration): Signature;
+>getSignatureFromDeclaration : (declaration: SignatureDeclaration) => Signature
+>declaration : SignatureDeclaration
+>SignatureDeclaration : SignatureDeclaration
+>Signature : Signature
+
+ isImplementationOfOverload(node: FunctionLikeDeclaration): boolean;
+>isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean
+>node : FunctionLikeDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+
+ isUndefinedSymbol(symbol: Symbol): boolean;
+>isUndefinedSymbol : (symbol: Symbol) => boolean
+>symbol : Symbol
+>Symbol : Symbol
+
+ isArgumentsSymbol(symbol: Symbol): boolean;
+>isArgumentsSymbol : (symbol: Symbol) => boolean
+>symbol : Symbol
+>Symbol : Symbol
+
+ getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number;
+>getConstantValue : (node: PropertyAccessExpression | ElementAccessExpression | EnumMember) => number
+>node : PropertyAccessExpression | ElementAccessExpression | EnumMember
+>EnumMember : EnumMember
+>PropertyAccessExpression : PropertyAccessExpression
+>ElementAccessExpression : ElementAccessExpression
+
+ isValidPropertyAccess(node: PropertyAccessExpression | QualifiedName, propertyName: string): boolean;
+>isValidPropertyAccess : (node: QualifiedName | PropertyAccessExpression, propertyName: string) => boolean
+>node : QualifiedName | PropertyAccessExpression
+>PropertyAccessExpression : PropertyAccessExpression
+>QualifiedName : QualifiedName
+>propertyName : string
+
+ getAliasedSymbol(symbol: Symbol): Symbol;
+>getAliasedSymbol : (symbol: Symbol) => Symbol
+>symbol : Symbol
+>Symbol : Symbol
+>Symbol : Symbol
+
+ getExportsOfModule(moduleSymbol: Symbol): Symbol[];
+>getExportsOfModule : (moduleSymbol: Symbol) => Symbol[]
+>moduleSymbol : Symbol
+>Symbol : Symbol
+>Symbol : Symbol
+ }
+ interface SymbolDisplayBuilder {
+>SymbolDisplayBuilder : SymbolDisplayBuilder
+
+ buildTypeDisplay(type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildTypeDisplay : (type: Type, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>type : Type
+>Type : Type
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildSymbolDisplay(symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags): void;
+>buildSymbolDisplay : (symbol: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, meaning?: SymbolFlags, flags?: SymbolFormatFlags) => void
+>symbol : Symbol
+>Symbol : Symbol
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>meaning : SymbolFlags
+>SymbolFlags : SymbolFlags
+>flags : SymbolFormatFlags
+>SymbolFormatFlags : SymbolFormatFlags
+
+ buildSignatureDisplay(signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildSignatureDisplay : (signatures: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>signatures : Signature
+>Signature : Signature
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildParameterDisplay(parameter: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildParameterDisplay : (parameter: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>parameter : Symbol
+>Symbol : Symbol
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildTypeParameterDisplay(tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildTypeParameterDisplay : (tp: TypeParameter, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>tp : TypeParameter
+>TypeParameter : TypeParameter
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildTypeParameterDisplayFromSymbol(symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags): void;
+>buildTypeParameterDisplayFromSymbol : (symbol: Symbol, writer: SymbolWriter, enclosingDeclaraiton?: Node, flags?: TypeFormatFlags) => void
+>symbol : Symbol
+>Symbol : Symbol
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaraiton : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildDisplayForParametersAndDelimiters(parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildDisplayForParametersAndDelimiters : (parameters: Symbol[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>parameters : Symbol[]
+>Symbol : Symbol
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildDisplayForTypeParametersAndDelimiters(typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildDisplayForTypeParametersAndDelimiters : (typeParameters: TypeParameter[], writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>typeParameters : TypeParameter[]
+>TypeParameter : TypeParameter
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+
+ buildReturnTypeDisplay(signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags): void;
+>buildReturnTypeDisplay : (signature: Signature, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags) => void
+>signature : Signature
+>Signature : Signature
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+ }
+ interface SymbolWriter {
+>SymbolWriter : SymbolWriter
+
+ writeKeyword(text: string): void;
+>writeKeyword : (text: string) => void
+>text : string
+
+ writeOperator(text: string): void;
+>writeOperator : (text: string) => void
+>text : string
+
+ writePunctuation(text: string): void;
+>writePunctuation : (text: string) => void
+>text : string
+
+ writeSpace(text: string): void;
+>writeSpace : (text: string) => void
+>text : string
+
+ writeStringLiteral(text: string): void;
+>writeStringLiteral : (text: string) => void
+>text : string
+
+ writeParameter(text: string): void;
+>writeParameter : (text: string) => void
+>text : string
+
+ writeSymbol(text: string, symbol: Symbol): void;
+>writeSymbol : (text: string, symbol: Symbol) => void
+>text : string
+>symbol : Symbol
+>Symbol : Symbol
+
+ writeLine(): void;
+>writeLine : () => void
+
+ increaseIndent(): void;
+>increaseIndent : () => void
+
+ decreaseIndent(): void;
+>decreaseIndent : () => void
+
+ clear(): void;
+>clear : () => void
+
+ trackSymbol(symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags): void;
+>trackSymbol : (symbol: Symbol, enclosingDeclaration?: Node, meaning?: SymbolFlags) => void
+>symbol : Symbol
+>Symbol : Symbol
+>enclosingDeclaration : Node
+>Node : Node
+>meaning : SymbolFlags
+>SymbolFlags : SymbolFlags
+ }
+ const enum TypeFormatFlags {
+>TypeFormatFlags : TypeFormatFlags
+
+ None = 0,
+>None : TypeFormatFlags
+
+ WriteArrayAsGenericType = 1,
+>WriteArrayAsGenericType : TypeFormatFlags
+
+ UseTypeOfFunction = 2,
+>UseTypeOfFunction : TypeFormatFlags
+
+ NoTruncation = 4,
+>NoTruncation : TypeFormatFlags
+
+ WriteArrowStyleSignature = 8,
+>WriteArrowStyleSignature : TypeFormatFlags
+
+ WriteOwnNameForAnyLike = 16,
+>WriteOwnNameForAnyLike : TypeFormatFlags
+
+ WriteTypeArgumentsOfSignature = 32,
+>WriteTypeArgumentsOfSignature : TypeFormatFlags
+
+ InElementType = 64,
+>InElementType : TypeFormatFlags
+
+ UseFullyQualifiedType = 128,
+>UseFullyQualifiedType : TypeFormatFlags
+ }
+ const enum SymbolFormatFlags {
+>SymbolFormatFlags : SymbolFormatFlags
+
+ None = 0,
+>None : SymbolFormatFlags
+
+ WriteTypeParametersOrArguments = 1,
+>WriteTypeParametersOrArguments : SymbolFormatFlags
+
+ UseOnlyExternalAliasing = 2,
+>UseOnlyExternalAliasing : SymbolFormatFlags
+ }
+ const enum SymbolAccessibility {
+>SymbolAccessibility : SymbolAccessibility
+
+ Accessible = 0,
+>Accessible : SymbolAccessibility
+
+ NotAccessible = 1,
+>NotAccessible : SymbolAccessibility
+
+ CannotBeNamed = 2,
+>CannotBeNamed : SymbolAccessibility
+ }
+ type AnyImportSyntax = ImportDeclaration | ImportEqualsDeclaration;
+>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration
+>ImportDeclaration : ImportDeclaration
+>ImportEqualsDeclaration : ImportEqualsDeclaration
+
+ interface SymbolVisibilityResult {
+>SymbolVisibilityResult : SymbolVisibilityResult
+
+ accessibility: SymbolAccessibility;
+>accessibility : SymbolAccessibility
+>SymbolAccessibility : SymbolAccessibility
+
+ aliasesToMakeVisible?: AnyImportSyntax[];
+>aliasesToMakeVisible : (ImportEqualsDeclaration | ImportDeclaration)[]
+>AnyImportSyntax : ImportEqualsDeclaration | ImportDeclaration
+
+ errorSymbolName?: string;
+>errorSymbolName : string
+
+ errorNode?: Node;
+>errorNode : Node
+>Node : Node
+ }
+ interface SymbolAccessiblityResult extends SymbolVisibilityResult {
+>SymbolAccessiblityResult : SymbolAccessiblityResult
+>SymbolVisibilityResult : SymbolVisibilityResult
+
+ errorModuleName?: string;
+>errorModuleName : string
+ }
+ interface EmitResolver {
+>EmitResolver : EmitResolver
+
+ hasGlobalName(name: string): boolean;
+>hasGlobalName : (name: string) => boolean
+>name : string
+
+ getExpressionNameSubstitution(node: Identifier, getGeneratedNameForNode: (node: Node) => string): string;
+>getExpressionNameSubstitution : (node: Identifier, getGeneratedNameForNode: (node: Node) => string) => string
+>node : Identifier
+>Identifier : Identifier
+>getGeneratedNameForNode : (node: Node) => string
+>node : Node
+>Node : Node
+
+ isValueAliasDeclaration(node: Node): boolean;
+>isValueAliasDeclaration : (node: Node) => boolean
+>node : Node
+>Node : Node
+
+ isReferencedAliasDeclaration(node: Node, checkChildren?: boolean): boolean;
+>isReferencedAliasDeclaration : (node: Node, checkChildren?: boolean) => boolean
+>node : Node
+>Node : Node
+>checkChildren : boolean
+
+ isTopLevelValueImportEqualsWithEntityName(node: ImportEqualsDeclaration): boolean;
+>isTopLevelValueImportEqualsWithEntityName : (node: ImportEqualsDeclaration) => boolean
+>node : ImportEqualsDeclaration
+>ImportEqualsDeclaration : ImportEqualsDeclaration
+
+ getNodeCheckFlags(node: Node): NodeCheckFlags;
+>getNodeCheckFlags : (node: Node) => NodeCheckFlags
+>node : Node
+>Node : Node
+>NodeCheckFlags : NodeCheckFlags
+
+ isDeclarationVisible(node: Declaration): boolean;
+>isDeclarationVisible : (node: Declaration) => boolean
+>node : Declaration
+>Declaration : Declaration
+
+ collectLinkedAliases(node: Identifier): Node[];
+>collectLinkedAliases : (node: Identifier) => Node[]
+>node : Identifier
+>Identifier : Identifier
+>Node : Node
+
+ isImplementationOfOverload(node: FunctionLikeDeclaration): boolean;
+>isImplementationOfOverload : (node: FunctionLikeDeclaration) => boolean
+>node : FunctionLikeDeclaration
+>FunctionLikeDeclaration : FunctionLikeDeclaration
+
+ writeTypeOfDeclaration(declaration: AccessorDeclaration | VariableLikeDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
+>writeTypeOfDeclaration : (declaration: VariableLikeDeclaration | AccessorDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void
+>declaration : VariableLikeDeclaration | AccessorDeclaration
+>AccessorDeclaration : AccessorDeclaration
+>VariableLikeDeclaration : VariableLikeDeclaration
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+
+ writeReturnTypeOfSignatureDeclaration(signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
+>writeReturnTypeOfSignatureDeclaration : (signatureDeclaration: SignatureDeclaration, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void
+>signatureDeclaration : SignatureDeclaration
+>SignatureDeclaration : SignatureDeclaration
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+
+ writeTypeOfExpression(expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter): void;
+>writeTypeOfExpression : (expr: Expression, enclosingDeclaration: Node, flags: TypeFormatFlags, writer: SymbolWriter) => void
+>expr : Expression
+>Expression : Expression
+>enclosingDeclaration : Node
+>Node : Node
+>flags : TypeFormatFlags
+>TypeFormatFlags : TypeFormatFlags
+>writer : SymbolWriter
+>SymbolWriter : SymbolWriter
+
+ isSymbolAccessible(symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags): SymbolAccessiblityResult;
+>isSymbolAccessible : (symbol: Symbol, enclosingDeclaration: Node, meaning: SymbolFlags) => SymbolAccessiblityResult
+>symbol : Symbol
+>Symbol : Symbol
+>enclosingDeclaration : Node
+>Node : Node
+>meaning : SymbolFlags
+>SymbolFlags : SymbolFlags
+>SymbolAccessiblityResult : SymbolAccessiblityResult
+
+ isEntityNameVisible(entityName: EntityName | Expression, enclosingDeclaration: Node): SymbolVisibilityResult;
+>isEntityNameVisible : (entityName: Expression | Identifier | QualifiedName, enclosingDeclaration: Node) => SymbolVisibilityResult
+>entityName : Expression | Identifier | QualifiedName
+>EntityName : Identifier | QualifiedName
+>Expression : Expression
+>enclosingDeclaration : Node
+>Node : Node
+>SymbolVisibilityResult : SymbolVisibilityResult
+
+ getConstantValue(node: EnumMember | PropertyAccessExpression | ElementAccessExpression): number;
+>getConstantValue : (node: PropertyAccessExpression | ElementAccessExpression | EnumMember) => number
+>node : PropertyAccessExpression | ElementAccessExpression | EnumMember
+>EnumMember : EnumMember
+>PropertyAccessExpression : PropertyAccessExpression
+>ElementAccessExpression : ElementAccessExpression
+
+ resolvesToSomeValue(location: Node, name: string): boolean;
+>resolvesToSomeValue : (location: Node, name: string) => boolean
+>location : Node
+>Node : Node
+>name : string
+
+ getBlockScopedVariableId(node: Identifier): number;
+>getBlockScopedVariableId : (node: Identifier) => number
+>node : Identifier
+>Identifier : Identifier
+ }
+ const enum SymbolFlags {
+>SymbolFlags : SymbolFlags
+
+ FunctionScopedVariable = 1,
+>FunctionScopedVariable : SymbolFlags
+
+ BlockScopedVariable = 2,
+>BlockScopedVariable : SymbolFlags
+
+ Property = 4,
+>Property : SymbolFlags
+
+ EnumMember = 8,
+>EnumMember : SymbolFlags
+
+ Function = 16,
+>Function : SymbolFlags
+
+ Class = 32,
+>Class : SymbolFlags
+
+ Interface = 64,
+>Interface : SymbolFlags
+
+ ConstEnum = 128,
+>ConstEnum : SymbolFlags
+
+ RegularEnum = 256,
+>RegularEnum : SymbolFlags
+
+ ValueModule = 512,
+>ValueModule : SymbolFlags
+
+ NamespaceModule = 1024,
+>NamespaceModule : SymbolFlags
+
+ TypeLiteral = 2048,
+>TypeLiteral : SymbolFlags
+
+ ObjectLiteral = 4096,
+>ObjectLiteral : SymbolFlags
+
+ Method = 8192,
+>Method : SymbolFlags
+
+ Constructor = 16384,
+>Constructor : SymbolFlags
+
+ GetAccessor = 32768,
+>GetAccessor : SymbolFlags
+
+ SetAccessor = 65536,
+>SetAccessor : SymbolFlags
+
+ Signature = 131072,
+>Signature : SymbolFlags
+
+ TypeParameter = 262144,
+>TypeParameter : SymbolFlags
+
+ TypeAlias = 524288,
+>TypeAlias : SymbolFlags
+
+ ExportValue = 1048576,
+>ExportValue : SymbolFlags
+
+ ExportType = 2097152,
+>ExportType : SymbolFlags
+
+ ExportNamespace = 4194304,
+>ExportNamespace : SymbolFlags
+
+ Alias = 8388608,
+>Alias : SymbolFlags
+
+ Instantiated = 16777216,
+>Instantiated : SymbolFlags
+
+ Merged = 33554432,
+>Merged : SymbolFlags
+
+ Transient = 67108864,
+>Transient : SymbolFlags
+
+ Prototype = 134217728,
+>Prototype : SymbolFlags
+
+ UnionProperty = 268435456,
+>UnionProperty : SymbolFlags
+
+ Optional = 536870912,
+>Optional : SymbolFlags
+
+ ExportStar = 1073741824,
+>ExportStar : SymbolFlags
+
+ Enum = 384,
+>Enum : SymbolFlags
+
+ Variable = 3,
+>Variable : SymbolFlags
+
+ Value = 107455,
+>Value : SymbolFlags
+
+ Type = 793056,
+>Type : SymbolFlags
+
+ Namespace = 1536,
+>Namespace : SymbolFlags
+
+ Module = 1536,
+>Module : SymbolFlags
+
+ Accessor = 98304,
+>Accessor : SymbolFlags
+
+ FunctionScopedVariableExcludes = 107454,
+>FunctionScopedVariableExcludes : SymbolFlags
+
+ BlockScopedVariableExcludes = 107455,
+>BlockScopedVariableExcludes : SymbolFlags
+
+ ParameterExcludes = 107455,
+>ParameterExcludes : SymbolFlags
+
+ PropertyExcludes = 107455,
+>PropertyExcludes : SymbolFlags
+
+ EnumMemberExcludes = 107455,
+>EnumMemberExcludes : SymbolFlags
+
+ FunctionExcludes = 106927,
+>FunctionExcludes : SymbolFlags
+
+ ClassExcludes = 899583,
+>ClassExcludes : SymbolFlags
+
+ InterfaceExcludes = 792992,
+>InterfaceExcludes : SymbolFlags
+
+ RegularEnumExcludes = 899327,
+>RegularEnumExcludes : SymbolFlags
+
+ ConstEnumExcludes = 899967,
+>ConstEnumExcludes : SymbolFlags
+
+ ValueModuleExcludes = 106639,
+>ValueModuleExcludes : SymbolFlags
+
+ NamespaceModuleExcludes = 0,
+>NamespaceModuleExcludes : SymbolFlags
+
+ MethodExcludes = 99263,
+>MethodExcludes : SymbolFlags
+
+ GetAccessorExcludes = 41919,
+>GetAccessorExcludes : SymbolFlags
+
+ SetAccessorExcludes = 74687,
+>SetAccessorExcludes : SymbolFlags
+
+ TypeParameterExcludes = 530912,
+>TypeParameterExcludes : SymbolFlags
+
+ TypeAliasExcludes = 793056,
+>TypeAliasExcludes : SymbolFlags
+
+ AliasExcludes = 8388608,
+>AliasExcludes : SymbolFlags
+
+ ModuleMember = 8914931,
+>ModuleMember : SymbolFlags
+
+ ExportHasLocal = 944,
+>ExportHasLocal : SymbolFlags
+
+ HasLocals = 255504,
+>HasLocals : SymbolFlags
+
+ HasExports = 1952,
+>HasExports : SymbolFlags
+
+ HasMembers = 6240,
+>HasMembers : SymbolFlags
+
+ IsContainer = 262128,
+>IsContainer : SymbolFlags
+
+ PropertyOrAccessor = 98308,
+>PropertyOrAccessor : SymbolFlags
+
+ Export = 7340032,
+>Export : SymbolFlags
+ }
+ interface Symbol {
+>Symbol : Symbol
+
+ flags: SymbolFlags;
+>flags : SymbolFlags
+>SymbolFlags : SymbolFlags
+
+ name: string;
+>name : string
+
+ id?: number;
+>id : number
+
+ mergeId?: number;
+>mergeId : number
+
+ declarations?: Declaration[];
+>declarations : Declaration[]
+>Declaration : Declaration
+
+ parent?: Symbol;
+>parent : Symbol
+>Symbol : Symbol
+
+ members?: SymbolTable;
+>members : SymbolTable
+>SymbolTable : SymbolTable
+
+ exports?: SymbolTable;
+>exports : SymbolTable
+>SymbolTable : SymbolTable
+
+ exportSymbol?: Symbol;
+>exportSymbol : Symbol
+>Symbol : Symbol
+
+ valueDeclaration?: Declaration;
+>valueDeclaration : Declaration
+>Declaration : Declaration
+
+ constEnumOnlyModule?: boolean;
+>constEnumOnlyModule : boolean
+ }
+ interface SymbolLinks {
+>SymbolLinks : SymbolLinks
+
+ target?: Symbol;
+>target : Symbol
+>Symbol : Symbol
+
+ type?: Type;
+>type : Type
+>Type : Type
+
+ declaredType?: Type;
+>declaredType : Type
+>Type : Type
+
+ mapper?: TypeMapper;
+>mapper : TypeMapper
+>TypeMapper : TypeMapper
+
+ referenced?: boolean;
+>referenced : boolean
+
+ unionType?: UnionType;
+>unionType : UnionType
+>UnionType : UnionType
+
+ resolvedExports?: SymbolTable;
+>resolvedExports : SymbolTable
+>SymbolTable : SymbolTable
+
+ exportsChecked?: boolean;
+>exportsChecked : boolean
+ }
+ interface TransientSymbol extends Symbol, SymbolLinks {
+>TransientSymbol : TransientSymbol
+>Symbol : Symbol
+>SymbolLinks : SymbolLinks
+ }
+ interface SymbolTable {
+>SymbolTable : SymbolTable
+
+ [index: string]: Symbol;
+>index : string
+>Symbol : Symbol
+ }
+ const enum NodeCheckFlags {
+>NodeCheckFlags : NodeCheckFlags
+
+ TypeChecked = 1,
+>TypeChecked : NodeCheckFlags
+
+ LexicalThis = 2,
+>LexicalThis : NodeCheckFlags
+
+ CaptureThis = 4,
+>CaptureThis : NodeCheckFlags
+
+ EmitExtends = 8,
+>EmitExtends : NodeCheckFlags
+
+ SuperInstance = 16,
+>SuperInstance : NodeCheckFlags
+
+ SuperStatic = 32,
+>SuperStatic : NodeCheckFlags
+
+ ContextChecked = 64,
+>ContextChecked : NodeCheckFlags
+
+ EnumValuesComputed = 128,
+>EnumValuesComputed : NodeCheckFlags
+
+ BlockScopedBindingInLoop = 256,
+>BlockScopedBindingInLoop : NodeCheckFlags
+
+ EmitDecorate = 512,
+>EmitDecorate : NodeCheckFlags
+ }
+ interface NodeLinks {
+>NodeLinks : NodeLinks
+
+ resolvedType?: Type;
+>resolvedType : Type
+>Type : Type
+
+ resolvedSignature?: Signature;
+>resolvedSignature : Signature
+>Signature : Signature
+
+ resolvedSymbol?: Symbol;
+>resolvedSymbol : Symbol
+>Symbol : Symbol
+
+ flags?: NodeCheckFlags;
+>flags : NodeCheckFlags
+>NodeCheckFlags : NodeCheckFlags
+
+ enumMemberValue?: number;
+>enumMemberValue : number
+
+ isIllegalTypeReferenceInConstraint?: boolean;
+>isIllegalTypeReferenceInConstraint : boolean
+
+ isVisible?: boolean;
+>isVisible : boolean
+
+ generatedName?: string;
+>generatedName : string
+
+ generatedNames?: Map;
+>generatedNames : Map
+>Map : Map
+
+ assignmentChecks?: Map;
+>assignmentChecks : Map
+>Map : Map
+
+ hasReportedStatementInAmbientContext?: boolean;
+>hasReportedStatementInAmbientContext : boolean
+
+ importOnRightSide?: Symbol;
+>importOnRightSide : Symbol
+>Symbol : Symbol
+ }
+ const enum TypeFlags {
+>TypeFlags : TypeFlags
+
+ Any = 1,
+>Any : TypeFlags
+
+ String = 2,
+>String : TypeFlags
+
+ Number = 4,
+>Number : TypeFlags
+
+ Boolean = 8,
+>Boolean : TypeFlags
+
+ Void = 16,
+>Void : TypeFlags
+
+ Undefined = 32,
+>Undefined : TypeFlags
+
+ Null = 64,
+>Null : TypeFlags
+
+ Enum = 128,
+>Enum : TypeFlags
+
+ StringLiteral = 256,
+>StringLiteral : TypeFlags
+
+ TypeParameter = 512,
+>TypeParameter : TypeFlags
+
+ Class = 1024,
+>Class : TypeFlags
+
+ Interface = 2048,
+>Interface : TypeFlags
+
+ Reference = 4096,
+>Reference : TypeFlags
+
+ Tuple = 8192,
+>Tuple : TypeFlags
+
+ Union = 16384,
+>Union : TypeFlags
+
+ Anonymous = 32768,
+>Anonymous : TypeFlags
+
+ FromSignature = 65536,
+>FromSignature : TypeFlags
+
+ ObjectLiteral = 131072,
+>ObjectLiteral : TypeFlags
+
+ ContainsUndefinedOrNull = 262144,
+>ContainsUndefinedOrNull : TypeFlags
+
+ ContainsObjectLiteral = 524288,
+>ContainsObjectLiteral : TypeFlags
+
+ ESSymbol = 1048576,
+>ESSymbol : TypeFlags
+
+ Intrinsic = 1048703,
+>Intrinsic : TypeFlags
+
+ Primitive = 1049086,
+>Primitive : TypeFlags
+
+ StringLike = 258,
+>StringLike : TypeFlags
+
+ NumberLike = 132,
+>NumberLike : TypeFlags
+
+ ObjectType = 48128,
+>ObjectType : TypeFlags
+
+ RequiresWidening = 786432,
+>RequiresWidening : TypeFlags
+ }
+ interface Type {
+>Type : Type
+
+ flags: TypeFlags;
+>flags : TypeFlags
+>TypeFlags : TypeFlags
+
+ id: number;
+>id : number
+
+ symbol?: Symbol;
+>symbol : Symbol
+>Symbol : Symbol
+ }
+ interface IntrinsicType extends Type {
+>IntrinsicType : IntrinsicType
+>Type : Type
+
+ intrinsicName: string;
+>intrinsicName : string
+ }
+ interface StringLiteralType extends Type {
+>StringLiteralType : StringLiteralType
+>Type : Type
+
+ text: string;
+>text : string
+ }
+ interface ObjectType extends Type {
+>ObjectType : ObjectType
+>Type : Type
+ }
+ interface InterfaceType extends ObjectType {
+>InterfaceType : InterfaceType
+>ObjectType : ObjectType
+
+ typeParameters: TypeParameter[];
+>typeParameters : TypeParameter[]
+>TypeParameter : TypeParameter
+
+ baseTypes: ObjectType[];
+>baseTypes : ObjectType[]
+>ObjectType : ObjectType
+
+ declaredProperties: Symbol[];
+>declaredProperties : Symbol[]
+>Symbol : Symbol
+
+ declaredCallSignatures: Signature[];
+>declaredCallSignatures : Signature[]
+>Signature : Signature
+
+ declaredConstructSignatures: Signature[];
+>declaredConstructSignatures : Signature[]
+>Signature : Signature
+
+ declaredStringIndexType: Type;
+>declaredStringIndexType : Type
+>Type : Type
+
+ declaredNumberIndexType: Type;
+>declaredNumberIndexType : Type
+>Type : Type
+ }
+ interface TypeReference extends ObjectType {
+>TypeReference : TypeReference
+>ObjectType : ObjectType
+
+ target: GenericType;
+>target : GenericType
+>GenericType : GenericType
+
+ typeArguments: Type[];
+>typeArguments : Type[]
+>Type : Type
+ }
+ interface GenericType extends InterfaceType, TypeReference {
+>GenericType : GenericType
+>InterfaceType : InterfaceType
+>TypeReference : TypeReference
+
+ instantiations: Map;
+>instantiations : Map
+>Map : Map
+>TypeReference : TypeReference
+ }
+ interface TupleType extends ObjectType {
+>TupleType : TupleType
+>ObjectType : ObjectType
+
+ elementTypes: Type[];
+>elementTypes : Type[]
+>Type : Type
+
+ baseArrayType: TypeReference;
+>baseArrayType : TypeReference
+>TypeReference : TypeReference
+ }
+ interface UnionType extends Type {
+>UnionType : UnionType
+>Type : Type
+
+ types: Type[];
+>types : Type[]
+>Type : Type
+
+ resolvedProperties: SymbolTable;
+>resolvedProperties : SymbolTable
+>SymbolTable : SymbolTable
+ }
+ interface ResolvedType extends ObjectType, UnionType {
+>ResolvedType : ResolvedType
+>ObjectType : ObjectType
+>UnionType : UnionType
+
+ members: SymbolTable;
+>members : SymbolTable
+>SymbolTable : SymbolTable
+
+ properties: Symbol[];
+>properties : Symbol[]
+>Symbol : Symbol
+
+ callSignatures: Signature[];
+>callSignatures : Signature[]
+>Signature : Signature
+
+ constructSignatures: Signature[];
+>constructSignatures : Signature[]
+>Signature : Signature
+
+ stringIndexType: Type;
+>stringIndexType : Type
+>Type : Type
+
+ numberIndexType: Type;
+>numberIndexType : Type
+>Type : Type
+ }
+ interface TypeParameter extends Type {
+>TypeParameter : TypeParameter
+>Type : Type
+
+ constraint: Type;
+>constraint : Type
+>Type : Type
+
+ target?: TypeParameter;
+>target : TypeParameter
+>TypeParameter : TypeParameter
+
+ mapper?: TypeMapper;
+>mapper : TypeMapper
+>TypeMapper : TypeMapper
+ }
+ const enum SignatureKind {
+>SignatureKind : SignatureKind
+
+ Call = 0,
+>Call : SignatureKind
+
+ Construct = 1,
+>Construct : SignatureKind
+ }
+ interface Signature {
+>Signature : Signature
+
+ declaration: SignatureDeclaration;
+>declaration : SignatureDeclaration
+>SignatureDeclaration : SignatureDeclaration
+
+ typeParameters: TypeParameter[];
+>typeParameters : TypeParameter[]
+>TypeParameter : TypeParameter
+
+ parameters: Symbol[];
+>parameters : Symbol[]
+>Symbol : Symbol
+
+ resolvedReturnType: Type;
+>resolvedReturnType : Type
+>Type : Type
+
+ minArgumentCount: number;
+>minArgumentCount : number
+
+ hasRestParameter: boolean;
+>hasRestParameter : boolean
+
+ hasStringLiterals: boolean;
+>hasStringLiterals : boolean
+
+ target?: Signature;
+>target : Signature
+>Signature : Signature
+
+ mapper?: TypeMapper;
+>mapper : TypeMapper
+>TypeMapper : TypeMapper
+
+ unionSignatures?: Signature[];
+>unionSignatures : Signature[]
+>Signature : Signature
+
+ erasedSignatureCache?: Signature;
+>erasedSignatureCache : Signature
+>Signature : Signature
+
+ isolatedSignatureType?: ObjectType;
+>isolatedSignatureType : ObjectType
+>ObjectType : ObjectType
+ }
+ const enum IndexKind {
+>IndexKind : IndexKind
+
+ String = 0,
+>String : IndexKind
+
+ Number = 1,
+>Number : IndexKind
+ }
+ interface TypeMapper {
+>TypeMapper : TypeMapper
+
+ (t: Type): Type;
+>t : Type
+>Type : Type
+>Type : Type
+ }
+ interface DiagnosticMessage {
+>DiagnosticMessage : DiagnosticMessage
+
+ key: string;
+>key : string
+
+ category: DiagnosticCategory;
+>category : DiagnosticCategory
+>DiagnosticCategory : DiagnosticCategory
+
+ code: number;
+>code : number
+ }
+ interface DiagnosticMessageChain {
+>DiagnosticMessageChain : DiagnosticMessageChain
+
+ messageText: string;
+>messageText : string
+
+ category: DiagnosticCategory;
+>category : DiagnosticCategory
+>DiagnosticCategory : DiagnosticCategory
+
+ code: number;
+>code : number
+
+ next?: DiagnosticMessageChain;
+>next : DiagnosticMessageChain
+>DiagnosticMessageChain : DiagnosticMessageChain
+ }
+ interface Diagnostic {
+>Diagnostic : Diagnostic
+
+ file: SourceFile;
+>file : SourceFile
+>SourceFile : SourceFile
+
+ start: number;
+>start : number
+
+ length: number;
+>length : number
+
+ messageText: string | DiagnosticMessageChain;
+>messageText : string | DiagnosticMessageChain
+>DiagnosticMessageChain : DiagnosticMessageChain
+
+ category: DiagnosticCategory;
+>category : DiagnosticCategory
+>DiagnosticCategory : DiagnosticCategory
+
+ code: number;
+>code : number
+ }
+ enum DiagnosticCategory {
+>DiagnosticCategory : DiagnosticCategory
+
+ Warning = 0,
+>Warning : DiagnosticCategory
+
+ Error = 1,
+>Error : DiagnosticCategory
+
+ Message = 2,
+>Message : DiagnosticCategory
+ }
+ interface CompilerOptions {
+>CompilerOptions : CompilerOptions
+
+ allowNonTsExtensions?: boolean;
+>allowNonTsExtensions : boolean
+
+ charset?: string;
+>charset : string
+
+ declaration?: boolean;
+>declaration : boolean
+
+ diagnostics?: boolean;
+>diagnostics : boolean
+
+ emitBOM?: boolean;
+>emitBOM : boolean
+
+ help?: boolean;
+>help : boolean
+
+ listFiles?: boolean;
+>listFiles : boolean
+
+ locale?: string;
+>locale : string
+
+ mapRoot?: string;
+>mapRoot : string
+
+ module?: ModuleKind;
+>module : ModuleKind
+>ModuleKind : ModuleKind
+
+ noEmit?: boolean;
+>noEmit : boolean
+
+ noEmitOnError?: boolean;
+>noEmitOnError : boolean
+
+ noErrorTruncation?: boolean;
+>noErrorTruncation : boolean
+
+ noImplicitAny?: boolean;
+>noImplicitAny : boolean
+
+ noLib?: boolean;
+>noLib : boolean
+
+ noResolve?: boolean;
+>noResolve : boolean
+
+ out?: string;
+>out : string
+
+ outDir?: string;
+>outDir : string
+
+ preserveConstEnums?: boolean;
+>preserveConstEnums : boolean
+
+ project?: string;
+>project : string
+
+ removeComments?: boolean;
+>removeComments : boolean
+
+ sourceMap?: boolean;
+>sourceMap : boolean
+
+ sourceRoot?: string;
+>sourceRoot : string
+
+ suppressImplicitAnyIndexErrors?: boolean;
+>suppressImplicitAnyIndexErrors : boolean
+
+ target?: ScriptTarget;
+>target : ScriptTarget
+>ScriptTarget : ScriptTarget
+
+ version?: boolean;
+>version : boolean
+
+ watch?: boolean;
+>watch : boolean
+
+ separateCompilation?: boolean;
+>separateCompilation : boolean
+
+ [option: string]: string | number | boolean;
+>option : string
+ }
+ const enum ModuleKind {
+>ModuleKind : ModuleKind
+
+ None = 0,
+>None : ModuleKind
+
+ CommonJS = 1,
+>CommonJS : ModuleKind
+
+ AMD = 2,
+>AMD : ModuleKind
+ }
+ interface LineAndCharacter {
+>LineAndCharacter : LineAndCharacter
+
+ line: number;
+>line : number
+
+ character: number;
+>character : number
+ }
+ const enum ScriptTarget {
+>ScriptTarget : ScriptTarget
+
+ ES3 = 0,
+>ES3 : ScriptTarget
+
+ ES5 = 1,
+>ES5 : ScriptTarget
+
+ ES6 = 2,
+>ES6 : ScriptTarget
+
+ Latest = 2,
+>Latest : ScriptTarget
+ }
+ interface ParsedCommandLine {
+>ParsedCommandLine : ParsedCommandLine
+
+ options: CompilerOptions;
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ fileNames: string[];
+>fileNames : string[]
+
+ errors: Diagnostic[];
+>errors : Diagnostic[]
+>Diagnostic : Diagnostic
+ }
+ interface CommandLineOption {
+>CommandLineOption : CommandLineOption
+
+ name: string;
+>name : string
+
+ type: string | Map;
+>type : string | Map
+>Map : Map
+
+ isFilePath?: boolean;
+>isFilePath : boolean
+
+ shortName?: string;
+>shortName : string
+
+ description?: DiagnosticMessage;
+>description : DiagnosticMessage
+>DiagnosticMessage : DiagnosticMessage
+
+ paramType?: DiagnosticMessage;
+>paramType : DiagnosticMessage
+>DiagnosticMessage : DiagnosticMessage
+
+ error?: DiagnosticMessage;
+>error : DiagnosticMessage
+>DiagnosticMessage : DiagnosticMessage
+
+ experimental?: boolean;
+>experimental : boolean
+ }
+ const enum CharacterCodes {
+>CharacterCodes : CharacterCodes
+
+ nullCharacter = 0,
+>nullCharacter : CharacterCodes
+
+ maxAsciiCharacter = 127,
+>maxAsciiCharacter : CharacterCodes
+
+ lineFeed = 10,
+>lineFeed : CharacterCodes
+
+ carriageReturn = 13,
+>carriageReturn : CharacterCodes
+
+ lineSeparator = 8232,
+>lineSeparator : CharacterCodes
+
+ paragraphSeparator = 8233,
+>paragraphSeparator : CharacterCodes
+
+ nextLine = 133,
+>nextLine : CharacterCodes
+
+ space = 32,
+>space : CharacterCodes
+
+ nonBreakingSpace = 160,
+>nonBreakingSpace : CharacterCodes
+
+ enQuad = 8192,
+>enQuad : CharacterCodes
+
+ emQuad = 8193,
+>emQuad : CharacterCodes
+
+ enSpace = 8194,
+>enSpace : CharacterCodes
+
+ emSpace = 8195,
+>emSpace : CharacterCodes
+
+ threePerEmSpace = 8196,
+>threePerEmSpace : CharacterCodes
+
+ fourPerEmSpace = 8197,
+>fourPerEmSpace : CharacterCodes
+
+ sixPerEmSpace = 8198,
+>sixPerEmSpace : CharacterCodes
+
+ figureSpace = 8199,
+>figureSpace : CharacterCodes
+
+ punctuationSpace = 8200,
+>punctuationSpace : CharacterCodes
+
+ thinSpace = 8201,
+>thinSpace : CharacterCodes
+
+ hairSpace = 8202,
+>hairSpace : CharacterCodes
+
+ zeroWidthSpace = 8203,
+>zeroWidthSpace : CharacterCodes
+
+ narrowNoBreakSpace = 8239,
+>narrowNoBreakSpace : CharacterCodes
+
+ ideographicSpace = 12288,
+>ideographicSpace : CharacterCodes
+
+ mathematicalSpace = 8287,
+>mathematicalSpace : CharacterCodes
+
+ ogham = 5760,
+>ogham : CharacterCodes
+
+ _ = 95,
+>_ : CharacterCodes
+
+ $ = 36,
+>$ : CharacterCodes
+
+ _0 = 48,
+>_0 : CharacterCodes
+
+ _1 = 49,
+>_1 : CharacterCodes
+
+ _2 = 50,
+>_2 : CharacterCodes
+
+ _3 = 51,
+>_3 : CharacterCodes
+
+ _4 = 52,
+>_4 : CharacterCodes
+
+ _5 = 53,
+>_5 : CharacterCodes
+
+ _6 = 54,
+>_6 : CharacterCodes
+
+ _7 = 55,
+>_7 : CharacterCodes
+
+ _8 = 56,
+>_8 : CharacterCodes
+
+ _9 = 57,
+>_9 : CharacterCodes
+
+ a = 97,
+>a : CharacterCodes
+
+ b = 98,
+>b : CharacterCodes
+
+ c = 99,
+>c : CharacterCodes
+
+ d = 100,
+>d : CharacterCodes
+
+ e = 101,
+>e : CharacterCodes
+
+ f = 102,
+>f : CharacterCodes
+
+ g = 103,
+>g : CharacterCodes
+
+ h = 104,
+>h : CharacterCodes
+
+ i = 105,
+>i : CharacterCodes
+
+ j = 106,
+>j : CharacterCodes
+
+ k = 107,
+>k : CharacterCodes
+
+ l = 108,
+>l : CharacterCodes
+
+ m = 109,
+>m : CharacterCodes
+
+ n = 110,
+>n : CharacterCodes
+
+ o = 111,
+>o : CharacterCodes
+
+ p = 112,
+>p : CharacterCodes
+
+ q = 113,
+>q : CharacterCodes
+
+ r = 114,
+>r : CharacterCodes
+
+ s = 115,
+>s : CharacterCodes
+
+ t = 116,
+>t : CharacterCodes
+
+ u = 117,
+>u : CharacterCodes
+
+ v = 118,
+>v : CharacterCodes
+
+ w = 119,
+>w : CharacterCodes
+
+ x = 120,
+>x : CharacterCodes
+
+ y = 121,
+>y : CharacterCodes
+
+ z = 122,
+>z : CharacterCodes
+
+ A = 65,
+>A : CharacterCodes
+
+ B = 66,
+>B : CharacterCodes
+
+ C = 67,
+>C : CharacterCodes
+
+ D = 68,
+>D : CharacterCodes
+
+ E = 69,
+>E : CharacterCodes
+
+ F = 70,
+>F : CharacterCodes
+
+ G = 71,
+>G : CharacterCodes
+
+ H = 72,
+>H : CharacterCodes
+
+ I = 73,
+>I : CharacterCodes
+
+ J = 74,
+>J : CharacterCodes
+
+ K = 75,
+>K : CharacterCodes
+
+ L = 76,
+>L : CharacterCodes
+
+ M = 77,
+>M : CharacterCodes
+
+ N = 78,
+>N : CharacterCodes
+
+ O = 79,
+>O : CharacterCodes
+
+ P = 80,
+>P : CharacterCodes
+
+ Q = 81,
+>Q : CharacterCodes
+
+ R = 82,
+>R : CharacterCodes
+
+ S = 83,
+>S : CharacterCodes
+
+ T = 84,
+>T : CharacterCodes
+
+ U = 85,
+>U : CharacterCodes
+
+ V = 86,
+>V : CharacterCodes
+
+ W = 87,
+>W : CharacterCodes
+
+ X = 88,
+>X : CharacterCodes
+
+ Y = 89,
+>Y : CharacterCodes
+
+ Z = 90,
+>Z : CharacterCodes
+
+ ampersand = 38,
+>ampersand : CharacterCodes
+
+ asterisk = 42,
+>asterisk : CharacterCodes
+
+ at = 64,
+>at : CharacterCodes
+
+ backslash = 92,
+>backslash : CharacterCodes
+
+ backtick = 96,
+>backtick : CharacterCodes
+
+ bar = 124,
+>bar : CharacterCodes
+
+ caret = 94,
+>caret : CharacterCodes
+
+ closeBrace = 125,
+>closeBrace : CharacterCodes
+
+ closeBracket = 93,
+>closeBracket : CharacterCodes
+
+ closeParen = 41,
+>closeParen : CharacterCodes
+
+ colon = 58,
+>colon : CharacterCodes
+
+ comma = 44,
+>comma : CharacterCodes
+
+ dot = 46,
+>dot : CharacterCodes
+
+ doubleQuote = 34,
+>doubleQuote : CharacterCodes
+
+ equals = 61,
+>equals : CharacterCodes
+
+ exclamation = 33,
+>exclamation : CharacterCodes
+
+ greaterThan = 62,
+>greaterThan : CharacterCodes
+
+ hash = 35,
+>hash : CharacterCodes
+
+ lessThan = 60,
+>lessThan : CharacterCodes
+
+ minus = 45,
+>minus : CharacterCodes
+
+ openBrace = 123,
+>openBrace : CharacterCodes
+
+ openBracket = 91,
+>openBracket : CharacterCodes
+
+ openParen = 40,
+>openParen : CharacterCodes
+
+ percent = 37,
+>percent : CharacterCodes
+
+ plus = 43,
+>plus : CharacterCodes
+
+ question = 63,
+>question : CharacterCodes
+
+ semicolon = 59,
+>semicolon : CharacterCodes
+
+ singleQuote = 39,
+>singleQuote : CharacterCodes
+
+ slash = 47,
+>slash : CharacterCodes
+
+ tilde = 126,
+>tilde : CharacterCodes
+
+ backspace = 8,
+>backspace : CharacterCodes
+
+ formFeed = 12,
+>formFeed : CharacterCodes
+
+ byteOrderMark = 65279,
+>byteOrderMark : CharacterCodes
+
+ tab = 9,
+>tab : CharacterCodes
+
+ verticalTab = 11,
+>verticalTab : CharacterCodes
+ }
+ interface CancellationToken {
+>CancellationToken : CancellationToken
+
+ isCancellationRequested(): boolean;
+>isCancellationRequested : () => boolean
+ }
+ interface CompilerHost {
+>CompilerHost : CompilerHost
+
+ getSourceFile(fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void): SourceFile;
+>getSourceFile : (fileName: string, languageVersion: ScriptTarget, onError?: (message: string) => void) => SourceFile
+>fileName : string
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+>onError : (message: string) => void
+>message : string
+>SourceFile : SourceFile
+
+ getDefaultLibFileName(options: CompilerOptions): string;
+>getDefaultLibFileName : (options: CompilerOptions) => string
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ getCancellationToken?(): CancellationToken;
+>getCancellationToken : () => CancellationToken
+>CancellationToken : CancellationToken
+
+ writeFile: WriteFileCallback;
+>writeFile : WriteFileCallback
+>WriteFileCallback : WriteFileCallback
+
+ getCurrentDirectory(): string;
+>getCurrentDirectory : () => string
+
+ getCanonicalFileName(fileName: string): string;
+>getCanonicalFileName : (fileName: string) => string
+>fileName : string
+
+ useCaseSensitiveFileNames(): boolean;
+>useCaseSensitiveFileNames : () => boolean
+
+ getNewLine(): string;
+>getNewLine : () => string
+ }
+ interface TextSpan {
+>TextSpan : TextSpan
+
+ start: number;
+>start : number
+
+ length: number;
+>length : number
+ }
+ interface TextChangeRange {
+>TextChangeRange : TextChangeRange
+
+ span: TextSpan;
+>span : TextSpan
+>TextSpan : TextSpan
+
+ newLength: number;
+>newLength : number
+ }
+}
+declare module "typescript" {
+ interface ErrorCallback {
+>ErrorCallback : ErrorCallback
+
+ (message: DiagnosticMessage, length: number): void;
+>message : DiagnosticMessage
+>DiagnosticMessage : DiagnosticMessage
+>length : number
+ }
+ interface Scanner {
+>Scanner : Scanner
+
+ getStartPos(): number;
+>getStartPos : () => number
+
+ getToken(): SyntaxKind;
+>getToken : () => SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ getTextPos(): number;
+>getTextPos : () => number
+
+ getTokenPos(): number;
+>getTokenPos : () => number
+
+ getTokenText(): string;
+>getTokenText : () => string
+
+ getTokenValue(): string;
+>getTokenValue : () => string
+
+ hasExtendedUnicodeEscape(): boolean;
+>hasExtendedUnicodeEscape : () => boolean
+
+ hasPrecedingLineBreak(): boolean;
+>hasPrecedingLineBreak : () => boolean
+
+ isIdentifier(): boolean;
+>isIdentifier : () => boolean
+
+ isReservedWord(): boolean;
+>isReservedWord : () => boolean
+
+ isUnterminated(): boolean;
+>isUnterminated : () => boolean
+
+ reScanGreaterToken(): SyntaxKind;
+>reScanGreaterToken : () => SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ reScanSlashToken(): SyntaxKind;
+>reScanSlashToken : () => SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ reScanTemplateToken(): SyntaxKind;
+>reScanTemplateToken : () => SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ scan(): SyntaxKind;
+>scan : () => SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ setText(text: string): void;
+>setText : (text: string) => void
+>text : string
+
+ setTextPos(textPos: number): void;
+>setTextPos : (textPos: number) => void
+>textPos : number
+
+ lookAhead(callback: () => T): T;
+>lookAhead : (callback: () => T) => T
+>T : T
+>callback : () => T
+>T : T
+>T : T
+
+ tryScan(callback: () => T): T;
+>tryScan : (callback: () => T) => T
+>T : T
+>callback : () => T
+>T : T
+>T : T
+ }
+ function tokenToString(t: SyntaxKind): string;
+>tokenToString : (t: SyntaxKind) => string
+>t : SyntaxKind
+>SyntaxKind : SyntaxKind
+
+ function computeLineStarts(text: string): number[];
+>computeLineStarts : (text: string) => number[]
+>text : string
+
+ function getPositionOfLineAndCharacter(sourceFile: SourceFile, line: number, character: number): number;
+>getPositionOfLineAndCharacter : (sourceFile: SourceFile, line: number, character: number) => number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>line : number
+>character : number
+
+ function computePositionOfLineAndCharacter(lineStarts: number[], line: number, character: number): number;
+>computePositionOfLineAndCharacter : (lineStarts: number[], line: number, character: number) => number
+>lineStarts : number[]
+>line : number
+>character : number
+
+ function getLineStarts(sourceFile: SourceFile): number[];
+>getLineStarts : (sourceFile: SourceFile) => number[]
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ function computeLineAndCharacterOfPosition(lineStarts: number[], position: number): {
+>computeLineAndCharacterOfPosition : (lineStarts: number[], position: number) => { line: number; character: number; }
+>lineStarts : number[]
+>position : number
+
+ line: number;
+>line : number
+
+ character: number;
+>character : number
+
+ };
+ function getLineAndCharacterOfPosition(sourceFile: SourceFile, position: number): LineAndCharacter;
+>getLineAndCharacterOfPosition : (sourceFile: SourceFile, position: number) => LineAndCharacter
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>position : number
+>LineAndCharacter : LineAndCharacter
+
+ function isWhiteSpace(ch: number): boolean;
+>isWhiteSpace : (ch: number) => boolean
+>ch : number
+
+ function isLineBreak(ch: number): boolean;
+>isLineBreak : (ch: number) => boolean
+>ch : number
+
+ function isOctalDigit(ch: number): boolean;
+>isOctalDigit : (ch: number) => boolean
+>ch : number
+
+ function skipTrivia(text: string, pos: number, stopAfterLineBreak?: boolean): number;
+>skipTrivia : (text: string, pos: number, stopAfterLineBreak?: boolean) => number
+>text : string
+>pos : number
+>stopAfterLineBreak : boolean
+
+ function getLeadingCommentRanges(text: string, pos: number): CommentRange[];
+>getLeadingCommentRanges : (text: string, pos: number) => CommentRange[]
+>text : string
+>pos : number
+>CommentRange : CommentRange
+
+ function getTrailingCommentRanges(text: string, pos: number): CommentRange[];
+>getTrailingCommentRanges : (text: string, pos: number) => CommentRange[]
+>text : string
+>pos : number
+>CommentRange : CommentRange
+
+ function isIdentifierStart(ch: number, languageVersion: ScriptTarget): boolean;
+>isIdentifierStart : (ch: number, languageVersion: ScriptTarget) => boolean
+>ch : number
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+
+ function isIdentifierPart(ch: number, languageVersion: ScriptTarget): boolean;
+>isIdentifierPart : (ch: number, languageVersion: ScriptTarget) => boolean
+>ch : number
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+
+ function createScanner(languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback): Scanner;
+>createScanner : (languageVersion: ScriptTarget, skipTrivia: boolean, text?: string, onError?: ErrorCallback) => Scanner
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+>skipTrivia : boolean
+>text : string
+>onError : ErrorCallback
+>ErrorCallback : ErrorCallback
+>Scanner : Scanner
+}
+declare module "typescript" {
+ function getNodeConstructor(kind: SyntaxKind): new () => Node;
+>getNodeConstructor : (kind: SyntaxKind) => new () => Node
+>kind : SyntaxKind
+>SyntaxKind : SyntaxKind
+>Node : Node
+
+ function createNode(kind: SyntaxKind): Node;
+>createNode : (kind: SyntaxKind) => Node
+>kind : SyntaxKind
+>SyntaxKind : SyntaxKind
+>Node : Node
+
+ function forEachChild(node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T): T;
+>forEachChild : (node: Node, cbNode: (node: Node) => T, cbNodeArray?: (nodes: Node[]) => T) => T
+>T : T
+>node : Node
+>Node : Node
+>cbNode : (node: Node) => T
+>node : Node
+>Node : Node
+>T : T
+>cbNodeArray : (nodes: Node[]) => T
+>nodes : Node[]
+>Node : Node
+>T : T
+>T : T
+
+ function modifierToFlag(token: SyntaxKind): NodeFlags;
+>modifierToFlag : (token: SyntaxKind) => NodeFlags
+>token : SyntaxKind
+>SyntaxKind : SyntaxKind
+>NodeFlags : NodeFlags
+
+ function updateSourceFile(sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile;
+>updateSourceFile : (sourceFile: SourceFile, newText: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean) => SourceFile
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>newText : string
+>textChangeRange : TextChangeRange
+>TextChangeRange : TextChangeRange
+>aggressiveChecks : boolean
+>SourceFile : SourceFile
+
+ function isEvalOrArgumentsIdentifier(node: Node): boolean;
+>isEvalOrArgumentsIdentifier : (node: Node) => boolean
+>node : Node
+>Node : Node
+
+ function createSourceFile(fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean): SourceFile;
+>createSourceFile : (fileName: string, sourceText: string, languageVersion: ScriptTarget, setParentNodes?: boolean) => SourceFile
+>fileName : string
+>sourceText : string
+>languageVersion : ScriptTarget
+>ScriptTarget : ScriptTarget
+>setParentNodes : boolean
+>SourceFile : SourceFile
+
+ function isLeftHandSideExpression(expr: Expression): boolean;
+>isLeftHandSideExpression : (expr: Expression) => boolean
+>expr : Expression
+>Expression : Expression
+
+ function isAssignmentOperator(token: SyntaxKind): boolean;
+>isAssignmentOperator : (token: SyntaxKind) => boolean
+>token : SyntaxKind
+>SyntaxKind : SyntaxKind
+}
+declare module "typescript" {
+ function createTypeChecker(host: TypeCheckerHost, produceDiagnostics: boolean): TypeChecker;
+>createTypeChecker : (host: TypeCheckerHost, produceDiagnostics: boolean) => TypeChecker
+>host : TypeCheckerHost
+>TypeCheckerHost : TypeCheckerHost
+>produceDiagnostics : boolean
+>TypeChecker : TypeChecker
+}
+declare module "typescript" {
+ /** The version of the TypeScript compiler release */
+ let version: string;
+>version : string
+
+ function findConfigFile(searchPath: string): string;
+>findConfigFile : (searchPath: string) => string
+>searchPath : string
+
+ function createCompilerHost(options: CompilerOptions, setParentNodes?: boolean): CompilerHost;
+>createCompilerHost : (options: CompilerOptions, setParentNodes?: boolean) => CompilerHost
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+>setParentNodes : boolean
+>CompilerHost : CompilerHost
+
+ function getPreEmitDiagnostics(program: Program): Diagnostic[];
+>getPreEmitDiagnostics : (program: Program) => Diagnostic[]
+>program : Program
+>Program : Program
+>Diagnostic : Diagnostic
+
+ function flattenDiagnosticMessageText(messageText: string | DiagnosticMessageChain, newLine: string): string;
+>flattenDiagnosticMessageText : (messageText: string | DiagnosticMessageChain, newLine: string) => string
+>messageText : string | DiagnosticMessageChain
+>DiagnosticMessageChain : DiagnosticMessageChain
+>newLine : string
+
+ function createProgram(rootNames: string[], options: CompilerOptions, host?: CompilerHost): Program;
+>createProgram : (rootNames: string[], options: CompilerOptions, host?: CompilerHost) => Program
+>rootNames : string[]
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+>host : CompilerHost
+>CompilerHost : CompilerHost
+>Program : Program
+}
+declare module "typescript" {
+ /**
+ * Read tsconfig.json file
+ * @param fileName The path to the config file
+ */
+ function readConfigFile(fileName: string): any;
+>readConfigFile : (fileName: string) => any
+>fileName : string
+
+ /**
+ * Parse the contents of a config file (tsconfig.json).
+ * @param json The contents of the config file to parse
+ * @param basePath A root directory to resolve relative path entries in the config
+ * file to. e.g. outDir
+ */
+ function parseConfigFile(json: any, basePath?: string): ParsedCommandLine;
+>parseConfigFile : (json: any, basePath?: string) => ParsedCommandLine
+>json : any
+>basePath : string
+>ParsedCommandLine : ParsedCommandLine
+}
+declare module "typescript" {
+ /** The version of the language service API */
+ let servicesVersion: string;
+>servicesVersion : string
+
+ interface Node {
+>Node : Node
+
+ getSourceFile(): SourceFile;
+>getSourceFile : () => SourceFile
+>SourceFile : SourceFile
+
+ getChildCount(sourceFile?: SourceFile): number;
+>getChildCount : (sourceFile?: SourceFile) => number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getChildAt(index: number, sourceFile?: SourceFile): Node;
+>getChildAt : (index: number, sourceFile?: SourceFile) => Node
+>index : number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Node : Node
+
+ getChildren(sourceFile?: SourceFile): Node[];
+>getChildren : (sourceFile?: SourceFile) => Node[]
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Node : Node
+
+ getStart(sourceFile?: SourceFile): number;
+>getStart : (sourceFile?: SourceFile) => number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getFullStart(): number;
+>getFullStart : () => number
+
+ getEnd(): number;
+>getEnd : () => number
+
+ getWidth(sourceFile?: SourceFile): number;
+>getWidth : (sourceFile?: SourceFile) => number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getFullWidth(): number;
+>getFullWidth : () => number
+
+ getLeadingTriviaWidth(sourceFile?: SourceFile): number;
+>getLeadingTriviaWidth : (sourceFile?: SourceFile) => number
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getFullText(sourceFile?: SourceFile): string;
+>getFullText : (sourceFile?: SourceFile) => string
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getText(sourceFile?: SourceFile): string;
+>getText : (sourceFile?: SourceFile) => string
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+
+ getFirstToken(sourceFile?: SourceFile): Node;
+>getFirstToken : (sourceFile?: SourceFile) => Node
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Node : Node
+
+ getLastToken(sourceFile?: SourceFile): Node;
+>getLastToken : (sourceFile?: SourceFile) => Node
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>Node : Node
+ }
+ interface Symbol {
+>Symbol : Symbol
+
+ getFlags(): SymbolFlags;
+>getFlags : () => SymbolFlags
+>SymbolFlags : SymbolFlags
+
+ getName(): string;
+>getName : () => string
+
+ getDeclarations(): Declaration[];
+>getDeclarations : () => Declaration[]
+>Declaration : Declaration
+
+ getDocumentationComment(): SymbolDisplayPart[];
+>getDocumentationComment : () => SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ interface Type {
+>Type : Type
+
+ getFlags(): TypeFlags;
+>getFlags : () => TypeFlags
+>TypeFlags : TypeFlags
+
+ getSymbol(): Symbol;
+>getSymbol : () => Symbol
+>Symbol : Symbol
+
+ getProperties(): Symbol[];
+>getProperties : () => Symbol[]
+>Symbol : Symbol
+
+ getProperty(propertyName: string): Symbol;
+>getProperty : (propertyName: string) => Symbol
+>propertyName : string
+>Symbol : Symbol
+
+ getApparentProperties(): Symbol[];
+>getApparentProperties : () => Symbol[]
+>Symbol : Symbol
+
+ getCallSignatures(): Signature[];
+>getCallSignatures : () => Signature[]
+>Signature : Signature
+
+ getConstructSignatures(): Signature[];
+>getConstructSignatures : () => Signature[]
+>Signature : Signature
+
+ getStringIndexType(): Type;
+>getStringIndexType : () => Type
+>Type : Type
+
+ getNumberIndexType(): Type;
+>getNumberIndexType : () => Type
+>Type : Type
+ }
+ interface Signature {
+>Signature : Signature
+
+ getDeclaration(): SignatureDeclaration;
+>getDeclaration : () => SignatureDeclaration
+>SignatureDeclaration : SignatureDeclaration
+
+ getTypeParameters(): Type[];
+>getTypeParameters : () => Type[]
+>Type : Type
+
+ getParameters(): Symbol[];
+>getParameters : () => Symbol[]
+>Symbol : Symbol
+
+ getReturnType(): Type;
+>getReturnType : () => Type
+>Type : Type
+
+ getDocumentationComment(): SymbolDisplayPart[];
+>getDocumentationComment : () => SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ interface SourceFile {
+>SourceFile : SourceFile
+
+ getNamedDeclarations(): Declaration[];
+>getNamedDeclarations : () => Declaration[]
+>Declaration : Declaration
+
+ getLineAndCharacterOfPosition(pos: number): LineAndCharacter;
+>getLineAndCharacterOfPosition : (pos: number) => LineAndCharacter
+>pos : number
+>LineAndCharacter : LineAndCharacter
+
+ getLineStarts(): number[];
+>getLineStarts : () => number[]
+
+ getPositionOfLineAndCharacter(line: number, character: number): number;
+>getPositionOfLineAndCharacter : (line: number, character: number) => number
+>line : number
+>character : number
+
+ update(newText: string, textChangeRange: TextChangeRange): SourceFile;
+>update : (newText: string, textChangeRange: TextChangeRange) => SourceFile
+>newText : string
+>textChangeRange : TextChangeRange
+>TextChangeRange : TextChangeRange
+>SourceFile : SourceFile
+ }
+ /**
+ * Represents an immutable snapshot of a script at a specified time.Once acquired, the
+ * snapshot is observably immutable. i.e. the same calls with the same parameters will return
+ * the same values.
+ */
+ interface IScriptSnapshot {
+>IScriptSnapshot : IScriptSnapshot
+
+ /** Gets a portion of the script snapshot specified by [start, end). */
+ getText(start: number, end: number): string;
+>getText : (start: number, end: number) => string
+>start : number
+>end : number
+
+ /** Gets the length of this script snapshot. */
+ getLength(): number;
+>getLength : () => number
+
+ /**
+ * Gets the TextChangeRange that describe how the text changed between this text and
+ * an older version. This information is used by the incremental parser to determine
+ * what sections of the script need to be re-parsed. 'undefined' can be returned if the
+ * change range cannot be determined. However, in that case, incremental parsing will
+ * not happen and the entire document will be re - parsed.
+ */
+ getChangeRange(oldSnapshot: IScriptSnapshot): TextChangeRange;
+>getChangeRange : (oldSnapshot: IScriptSnapshot) => TextChangeRange
+>oldSnapshot : IScriptSnapshot
+>IScriptSnapshot : IScriptSnapshot
+>TextChangeRange : TextChangeRange
+ }
+ module ScriptSnapshot {
+>ScriptSnapshot : typeof ScriptSnapshot
+
+ function fromString(text: string): IScriptSnapshot;
+>fromString : (text: string) => IScriptSnapshot
+>text : string
+>IScriptSnapshot : IScriptSnapshot
+ }
+ interface PreProcessedFileInfo {
+>PreProcessedFileInfo : PreProcessedFileInfo
+
+ referencedFiles: FileReference[];
+>referencedFiles : FileReference[]
+>FileReference : FileReference
+
+ importedFiles: FileReference[];
+>importedFiles : FileReference[]
+>FileReference : FileReference
+
+ isLibFile: boolean;
+>isLibFile : boolean
+ }
+ interface LanguageServiceHost {
+>LanguageServiceHost : LanguageServiceHost
+
+ getCompilationSettings(): CompilerOptions;
+>getCompilationSettings : () => CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ getNewLine?(): string;
+>getNewLine : () => string
+
+ getScriptFileNames(): string[];
+>getScriptFileNames : () => string[]
+
+ getScriptVersion(fileName: string): string;
+>getScriptVersion : (fileName: string) => string
+>fileName : string
+
+ getScriptSnapshot(fileName: string): IScriptSnapshot;
+>getScriptSnapshot : (fileName: string) => IScriptSnapshot
+>fileName : string
+>IScriptSnapshot : IScriptSnapshot
+
+ getLocalizedDiagnosticMessages?(): any;
+>getLocalizedDiagnosticMessages : () => any
+
+ getCancellationToken?(): CancellationToken;
+>getCancellationToken : () => CancellationToken
+>CancellationToken : CancellationToken
+
+ getCurrentDirectory(): string;
+>getCurrentDirectory : () => string
+
+ getDefaultLibFileName(options: CompilerOptions): string;
+>getDefaultLibFileName : (options: CompilerOptions) => string
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ log?(s: string): void;
+>log : (s: string) => void
+>s : string
+
+ trace?(s: string): void;
+>trace : (s: string) => void
+>s : string
+
+ error?(s: string): void;
+>error : (s: string) => void
+>s : string
+ }
+ interface LanguageService {
+>LanguageService : LanguageService
+
+ cleanupSemanticCache(): void;
+>cleanupSemanticCache : () => void
+
+ getSyntacticDiagnostics(fileName: string): Diagnostic[];
+>getSyntacticDiagnostics : (fileName: string) => Diagnostic[]
+>fileName : string
+>Diagnostic : Diagnostic
+
+ getSemanticDiagnostics(fileName: string): Diagnostic[];
+>getSemanticDiagnostics : (fileName: string) => Diagnostic[]
+>fileName : string
+>Diagnostic : Diagnostic
+
+ getCompilerOptionsDiagnostics(): Diagnostic[];
+>getCompilerOptionsDiagnostics : () => Diagnostic[]
+>Diagnostic : Diagnostic
+
+ getSyntacticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
+>getSyntacticClassifications : (fileName: string, span: TextSpan) => ClassifiedSpan[]
+>fileName : string
+>span : TextSpan
+>TextSpan : TextSpan
+>ClassifiedSpan : ClassifiedSpan
+
+ getSemanticClassifications(fileName: string, span: TextSpan): ClassifiedSpan[];
+>getSemanticClassifications : (fileName: string, span: TextSpan) => ClassifiedSpan[]
+>fileName : string
+>span : TextSpan
+>TextSpan : TextSpan
+>ClassifiedSpan : ClassifiedSpan
+
+ getCompletionsAtPosition(fileName: string, position: number): CompletionInfo;
+>getCompletionsAtPosition : (fileName: string, position: number) => CompletionInfo
+>fileName : string
+>position : number
+>CompletionInfo : CompletionInfo
+
+ getCompletionEntryDetails(fileName: string, position: number, entryName: string): CompletionEntryDetails;
+>getCompletionEntryDetails : (fileName: string, position: number, entryName: string) => CompletionEntryDetails
+>fileName : string
+>position : number
+>entryName : string
+>CompletionEntryDetails : CompletionEntryDetails
+
+ getQuickInfoAtPosition(fileName: string, position: number): QuickInfo;
+>getQuickInfoAtPosition : (fileName: string, position: number) => QuickInfo
+>fileName : string
+>position : number
+>QuickInfo : QuickInfo
+
+ getNameOrDottedNameSpan(fileName: string, startPos: number, endPos: number): TextSpan;
+>getNameOrDottedNameSpan : (fileName: string, startPos: number, endPos: number) => TextSpan
+>fileName : string
+>startPos : number
+>endPos : number
+>TextSpan : TextSpan
+
+ getBreakpointStatementAtPosition(fileName: string, position: number): TextSpan;
+>getBreakpointStatementAtPosition : (fileName: string, position: number) => TextSpan
+>fileName : string
+>position : number
+>TextSpan : TextSpan
+
+ getSignatureHelpItems(fileName: string, position: number): SignatureHelpItems;
+>getSignatureHelpItems : (fileName: string, position: number) => SignatureHelpItems
+>fileName : string
+>position : number
+>SignatureHelpItems : SignatureHelpItems
+
+ getRenameInfo(fileName: string, position: number): RenameInfo;
+>getRenameInfo : (fileName: string, position: number) => RenameInfo
+>fileName : string
+>position : number
+>RenameInfo : RenameInfo
+
+ findRenameLocations(fileName: string, position: number, findInStrings: boolean, findInComments: boolean): RenameLocation[];
+>findRenameLocations : (fileName: string, position: number, findInStrings: boolean, findInComments: boolean) => RenameLocation[]
+>fileName : string
+>position : number
+>findInStrings : boolean
+>findInComments : boolean
+>RenameLocation : RenameLocation
+
+ getDefinitionAtPosition(fileName: string, position: number): DefinitionInfo[];
+>getDefinitionAtPosition : (fileName: string, position: number) => DefinitionInfo[]
+>fileName : string
+>position : number
+>DefinitionInfo : DefinitionInfo
+
+ getReferencesAtPosition(fileName: string, position: number): ReferenceEntry[];
+>getReferencesAtPosition : (fileName: string, position: number) => ReferenceEntry[]
+>fileName : string
+>position : number
+>ReferenceEntry : ReferenceEntry
+
+ getOccurrencesAtPosition(fileName: string, position: number): ReferenceEntry[];
+>getOccurrencesAtPosition : (fileName: string, position: number) => ReferenceEntry[]
+>fileName : string
+>position : number
+>ReferenceEntry : ReferenceEntry
+
+ findReferences(fileName: string, position: number): ReferencedSymbol[];
+>findReferences : (fileName: string, position: number) => ReferencedSymbol[]
+>fileName : string
+>position : number
+>ReferencedSymbol : ReferencedSymbol
+
+ getNavigateToItems(searchValue: string, maxResultCount?: number): NavigateToItem[];
+>getNavigateToItems : (searchValue: string, maxResultCount?: number) => NavigateToItem[]
+>searchValue : string
+>maxResultCount : number
+>NavigateToItem : NavigateToItem
+
+ getNavigationBarItems(fileName: string): NavigationBarItem[];
+>getNavigationBarItems : (fileName: string) => NavigationBarItem[]
+>fileName : string
+>NavigationBarItem : NavigationBarItem
+
+ getOutliningSpans(fileName: string): OutliningSpan[];
+>getOutliningSpans : (fileName: string) => OutliningSpan[]
+>fileName : string
+>OutliningSpan : OutliningSpan
+
+ getTodoComments(fileName: string, descriptors: TodoCommentDescriptor[]): TodoComment[];
+>getTodoComments : (fileName: string, descriptors: TodoCommentDescriptor[]) => TodoComment[]
+>fileName : string
+>descriptors : TodoCommentDescriptor[]
+>TodoCommentDescriptor : TodoCommentDescriptor
+>TodoComment : TodoComment
+
+ getBraceMatchingAtPosition(fileName: string, position: number): TextSpan[];
+>getBraceMatchingAtPosition : (fileName: string, position: number) => TextSpan[]
+>fileName : string
+>position : number
+>TextSpan : TextSpan
+
+ getIndentationAtPosition(fileName: string, position: number, options: EditorOptions): number;
+>getIndentationAtPosition : (fileName: string, position: number, options: EditorOptions) => number
+>fileName : string
+>position : number
+>options : EditorOptions
+>EditorOptions : EditorOptions
+
+ getFormattingEditsForRange(fileName: string, start: number, end: number, options: FormatCodeOptions): TextChange[];
+>getFormattingEditsForRange : (fileName: string, start: number, end: number, options: FormatCodeOptions) => TextChange[]
+>fileName : string
+>start : number
+>end : number
+>options : FormatCodeOptions
+>FormatCodeOptions : FormatCodeOptions
+>TextChange : TextChange
+
+ getFormattingEditsForDocument(fileName: string, options: FormatCodeOptions): TextChange[];
+>getFormattingEditsForDocument : (fileName: string, options: FormatCodeOptions) => TextChange[]
+>fileName : string
+>options : FormatCodeOptions
+>FormatCodeOptions : FormatCodeOptions
+>TextChange : TextChange
+
+ getFormattingEditsAfterKeystroke(fileName: string, position: number, key: string, options: FormatCodeOptions): TextChange[];
+>getFormattingEditsAfterKeystroke : (fileName: string, position: number, key: string, options: FormatCodeOptions) => TextChange[]
+>fileName : string
+>position : number
+>key : string
+>options : FormatCodeOptions
+>FormatCodeOptions : FormatCodeOptions
+>TextChange : TextChange
+
+ getEmitOutput(fileName: string): EmitOutput;
+>getEmitOutput : (fileName: string) => EmitOutput
+>fileName : string
+>EmitOutput : EmitOutput
+
+ getProgram(): Program;
+>getProgram : () => Program
+>Program : Program
+
+ getSourceFile(fileName: string): SourceFile;
+>getSourceFile : (fileName: string) => SourceFile
+>fileName : string
+>SourceFile : SourceFile
+
+ dispose(): void;
+>dispose : () => void
+ }
+ interface ClassifiedSpan {
+>ClassifiedSpan : ClassifiedSpan
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ classificationType: string;
+>classificationType : string
+ }
+ interface NavigationBarItem {
+>NavigationBarItem : NavigationBarItem
+
+ text: string;
+>text : string
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ spans: TextSpan[];
+>spans : TextSpan[]
+>TextSpan : TextSpan
+
+ childItems: NavigationBarItem[];
+>childItems : NavigationBarItem[]
+>NavigationBarItem : NavigationBarItem
+
+ indent: number;
+>indent : number
+
+ bolded: boolean;
+>bolded : boolean
+
+ grayed: boolean;
+>grayed : boolean
+ }
+ interface TodoCommentDescriptor {
+>TodoCommentDescriptor : TodoCommentDescriptor
+
+ text: string;
+>text : string
+
+ priority: number;
+>priority : number
+ }
+ interface TodoComment {
+>TodoComment : TodoComment
+
+ descriptor: TodoCommentDescriptor;
+>descriptor : TodoCommentDescriptor
+>TodoCommentDescriptor : TodoCommentDescriptor
+
+ message: string;
+>message : string
+
+ position: number;
+>position : number
+ }
+ class TextChange {
+>TextChange : TextChange
+
+ span: TextSpan;
+>span : TextSpan
+>TextSpan : TextSpan
+
+ newText: string;
+>newText : string
+ }
+ interface RenameLocation {
+>RenameLocation : RenameLocation
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ fileName: string;
+>fileName : string
+ }
+ interface ReferenceEntry {
+>ReferenceEntry : ReferenceEntry
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ fileName: string;
+>fileName : string
+
+ isWriteAccess: boolean;
+>isWriteAccess : boolean
+ }
+ interface NavigateToItem {
+>NavigateToItem : NavigateToItem
+
+ name: string;
+>name : string
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ matchKind: string;
+>matchKind : string
+
+ isCaseSensitive: boolean;
+>isCaseSensitive : boolean
+
+ fileName: string;
+>fileName : string
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ containerName: string;
+>containerName : string
+
+ containerKind: string;
+>containerKind : string
+ }
+ interface EditorOptions {
+>EditorOptions : EditorOptions
+
+ IndentSize: number;
+>IndentSize : number
+
+ TabSize: number;
+>TabSize : number
+
+ NewLineCharacter: string;
+>NewLineCharacter : string
+
+ ConvertTabsToSpaces: boolean;
+>ConvertTabsToSpaces : boolean
+ }
+ interface FormatCodeOptions extends EditorOptions {
+>FormatCodeOptions : FormatCodeOptions
+>EditorOptions : EditorOptions
+
+ InsertSpaceAfterCommaDelimiter: boolean;
+>InsertSpaceAfterCommaDelimiter : boolean
+
+ InsertSpaceAfterSemicolonInForStatements: boolean;
+>InsertSpaceAfterSemicolonInForStatements : boolean
+
+ InsertSpaceBeforeAndAfterBinaryOperators: boolean;
+>InsertSpaceBeforeAndAfterBinaryOperators : boolean
+
+ InsertSpaceAfterKeywordsInControlFlowStatements: boolean;
+>InsertSpaceAfterKeywordsInControlFlowStatements : boolean
+
+ InsertSpaceAfterFunctionKeywordForAnonymousFunctions: boolean;
+>InsertSpaceAfterFunctionKeywordForAnonymousFunctions : boolean
+
+ InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: boolean;
+>InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis : boolean
+
+ PlaceOpenBraceOnNewLineForFunctions: boolean;
+>PlaceOpenBraceOnNewLineForFunctions : boolean
+
+ PlaceOpenBraceOnNewLineForControlBlocks: boolean;
+>PlaceOpenBraceOnNewLineForControlBlocks : boolean
+
+ [s: string]: boolean | number | string;
+>s : string
+ }
+ interface DefinitionInfo {
+>DefinitionInfo : DefinitionInfo
+
+ fileName: string;
+>fileName : string
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ kind: string;
+>kind : string
+
+ name: string;
+>name : string
+
+ containerKind: string;
+>containerKind : string
+
+ containerName: string;
+>containerName : string
+ }
+ interface ReferencedSymbol {
+>ReferencedSymbol : ReferencedSymbol
+
+ definition: DefinitionInfo;
+>definition : DefinitionInfo
+>DefinitionInfo : DefinitionInfo
+
+ references: ReferenceEntry[];
+>references : ReferenceEntry[]
+>ReferenceEntry : ReferenceEntry
+ }
+ enum SymbolDisplayPartKind {
+>SymbolDisplayPartKind : SymbolDisplayPartKind
+
+ aliasName = 0,
+>aliasName : SymbolDisplayPartKind
+
+ className = 1,
+>className : SymbolDisplayPartKind
+
+ enumName = 2,
+>enumName : SymbolDisplayPartKind
+
+ fieldName = 3,
+>fieldName : SymbolDisplayPartKind
+
+ interfaceName = 4,
+>interfaceName : SymbolDisplayPartKind
+
+ keyword = 5,
+>keyword : SymbolDisplayPartKind
+
+ lineBreak = 6,
+>lineBreak : SymbolDisplayPartKind
+
+ numericLiteral = 7,
+>numericLiteral : SymbolDisplayPartKind
+
+ stringLiteral = 8,
+>stringLiteral : SymbolDisplayPartKind
+
+ localName = 9,
+>localName : SymbolDisplayPartKind
+
+ methodName = 10,
+>methodName : SymbolDisplayPartKind
+
+ moduleName = 11,
+>moduleName : SymbolDisplayPartKind
+
+ operator = 12,
+>operator : SymbolDisplayPartKind
+
+ parameterName = 13,
+>parameterName : SymbolDisplayPartKind
+
+ propertyName = 14,
+>propertyName : SymbolDisplayPartKind
+
+ punctuation = 15,
+>punctuation : SymbolDisplayPartKind
+
+ space = 16,
+>space : SymbolDisplayPartKind
+
+ text = 17,
+>text : SymbolDisplayPartKind
+
+ typeParameterName = 18,
+>typeParameterName : SymbolDisplayPartKind
+
+ enumMemberName = 19,
+>enumMemberName : SymbolDisplayPartKind
+
+ functionName = 20,
+>functionName : SymbolDisplayPartKind
+
+ regularExpressionLiteral = 21,
+>regularExpressionLiteral : SymbolDisplayPartKind
+ }
+ interface SymbolDisplayPart {
+>SymbolDisplayPart : SymbolDisplayPart
+
+ text: string;
+>text : string
+
+ kind: string;
+>kind : string
+ }
+ interface QuickInfo {
+>QuickInfo : QuickInfo
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ displayParts: SymbolDisplayPart[];
+>displayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ documentation: SymbolDisplayPart[];
+>documentation : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ interface RenameInfo {
+>RenameInfo : RenameInfo
+
+ canRename: boolean;
+>canRename : boolean
+
+ localizedErrorMessage: string;
+>localizedErrorMessage : string
+
+ displayName: string;
+>displayName : string
+
+ fullDisplayName: string;
+>fullDisplayName : string
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ triggerSpan: TextSpan;
+>triggerSpan : TextSpan
+>TextSpan : TextSpan
+ }
+ interface SignatureHelpParameter {
+>SignatureHelpParameter : SignatureHelpParameter
+
+ name: string;
+>name : string
+
+ documentation: SymbolDisplayPart[];
+>documentation : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ displayParts: SymbolDisplayPart[];
+>displayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ isOptional: boolean;
+>isOptional : boolean
+ }
+ /**
+ * Represents a single signature to show in signature help.
+ * The id is used for subsequent calls into the language service to ask questions about the
+ * signature help item in the context of any documents that have been updated. i.e. after
+ * an edit has happened, while signature help is still active, the host can ask important
+ * questions like 'what parameter is the user currently contained within?'.
+ */
+ interface SignatureHelpItem {
+>SignatureHelpItem : SignatureHelpItem
+
+ isVariadic: boolean;
+>isVariadic : boolean
+
+ prefixDisplayParts: SymbolDisplayPart[];
+>prefixDisplayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ suffixDisplayParts: SymbolDisplayPart[];
+>suffixDisplayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ separatorDisplayParts: SymbolDisplayPart[];
+>separatorDisplayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ parameters: SignatureHelpParameter[];
+>parameters : SignatureHelpParameter[]
+>SignatureHelpParameter : SignatureHelpParameter
+
+ documentation: SymbolDisplayPart[];
+>documentation : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ /**
+ * Represents a set of signature help items, and the preferred item that should be selected.
+ */
+ interface SignatureHelpItems {
+>SignatureHelpItems : SignatureHelpItems
+
+ items: SignatureHelpItem[];
+>items : SignatureHelpItem[]
+>SignatureHelpItem : SignatureHelpItem
+
+ applicableSpan: TextSpan;
+>applicableSpan : TextSpan
+>TextSpan : TextSpan
+
+ selectedItemIndex: number;
+>selectedItemIndex : number
+
+ argumentIndex: number;
+>argumentIndex : number
+
+ argumentCount: number;
+>argumentCount : number
+ }
+ interface CompletionInfo {
+>CompletionInfo : CompletionInfo
+
+ isMemberCompletion: boolean;
+>isMemberCompletion : boolean
+
+ isNewIdentifierLocation: boolean;
+>isNewIdentifierLocation : boolean
+
+ entries: CompletionEntry[];
+>entries : CompletionEntry[]
+>CompletionEntry : CompletionEntry
+ }
+ interface CompletionEntry {
+>CompletionEntry : CompletionEntry
+
+ name: string;
+>name : string
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ sortText: string;
+>sortText : string
+ }
+ interface CompletionEntryDetails {
+>CompletionEntryDetails : CompletionEntryDetails
+
+ name: string;
+>name : string
+
+ kind: string;
+>kind : string
+
+ kindModifiers: string;
+>kindModifiers : string
+
+ displayParts: SymbolDisplayPart[];
+>displayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ documentation: SymbolDisplayPart[];
+>documentation : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ interface OutliningSpan {
+>OutliningSpan : OutliningSpan
+
+ /** The span of the document to actually collapse. */
+ textSpan: TextSpan;
+>textSpan : TextSpan
+>TextSpan : TextSpan
+
+ /** The span of the document to display when the user hovers over the collapsed span. */
+ hintSpan: TextSpan;
+>hintSpan : TextSpan
+>TextSpan : TextSpan
+
+ /** The text to display in the editor for the collapsed region. */
+ bannerText: string;
+>bannerText : string
+
+ /**
+ * Whether or not this region should be automatically collapsed when
+ * the 'Collapse to Definitions' command is invoked.
+ */
+ autoCollapse: boolean;
+>autoCollapse : boolean
+ }
+ interface EmitOutput {
+>EmitOutput : EmitOutput
+
+ outputFiles: OutputFile[];
+>outputFiles : OutputFile[]
+>OutputFile : OutputFile
+
+ emitSkipped: boolean;
+>emitSkipped : boolean
+ }
+ const enum OutputFileType {
+>OutputFileType : OutputFileType
+
+ JavaScript = 0,
+>JavaScript : OutputFileType
+
+ SourceMap = 1,
+>SourceMap : OutputFileType
+
+ Declaration = 2,
+>Declaration : OutputFileType
+ }
+ interface OutputFile {
+>OutputFile : OutputFile
+
+ name: string;
+>name : string
+
+ writeByteOrderMark: boolean;
+>writeByteOrderMark : boolean
+
+ text: string;
+>text : string
+ }
+ const enum EndOfLineState {
+>EndOfLineState : EndOfLineState
+
+ Start = 0,
+>Start : EndOfLineState
+
+ InMultiLineCommentTrivia = 1,
+>InMultiLineCommentTrivia : EndOfLineState
+
+ InSingleQuoteStringLiteral = 2,
+>InSingleQuoteStringLiteral : EndOfLineState
+
+ InDoubleQuoteStringLiteral = 3,
+>InDoubleQuoteStringLiteral : EndOfLineState
+
+ InTemplateHeadOrNoSubstitutionTemplate = 4,
+>InTemplateHeadOrNoSubstitutionTemplate : EndOfLineState
+
+ InTemplateMiddleOrTail = 5,
+>InTemplateMiddleOrTail : EndOfLineState
+
+ InTemplateSubstitutionPosition = 6,
+>InTemplateSubstitutionPosition : EndOfLineState
+ }
+ enum TokenClass {
+>TokenClass : TokenClass
+
+ Punctuation = 0,
+>Punctuation : TokenClass
+
+ Keyword = 1,
+>Keyword : TokenClass
+
+ Operator = 2,
+>Operator : TokenClass
+
+ Comment = 3,
+>Comment : TokenClass
+
+ Whitespace = 4,
+>Whitespace : TokenClass
+
+ Identifier = 5,
+>Identifier : TokenClass
+
+ NumberLiteral = 6,
+>NumberLiteral : TokenClass
+
+ StringLiteral = 7,
+>StringLiteral : TokenClass
+
+ RegExpLiteral = 8,
+>RegExpLiteral : TokenClass
+ }
+ interface ClassificationResult {
+>ClassificationResult : ClassificationResult
+
+ finalLexState: EndOfLineState;
+>finalLexState : EndOfLineState
+>EndOfLineState : EndOfLineState
+
+ entries: ClassificationInfo[];
+>entries : ClassificationInfo[]
+>ClassificationInfo : ClassificationInfo
+ }
+ interface ClassificationInfo {
+>ClassificationInfo : ClassificationInfo
+
+ length: number;
+>length : number
+
+ classification: TokenClass;
+>classification : TokenClass
+>TokenClass : TokenClass
+ }
+ interface Classifier {
+>Classifier : Classifier
+
+ /**
+ * Gives lexical classifications of tokens on a line without any syntactic context.
+ * For instance, a token consisting of the text 'string' can be either an identifier
+ * named 'string' or the keyword 'string', however, because this classifier is not aware,
+ * it relies on certain heuristics to give acceptable results. For classifications where
+ * speed trumps accuracy, this function is preferable; however, for true accuracy, the
+ * syntactic classifier is ideal. In fact, in certain editing scenarios, combining the
+ * lexical, syntactic, and semantic classifiers may issue the best user experience.
+ *
+ * @param text The text of a line to classify.
+ * @param lexState The state of the lexical classifier at the end of the previous line.
+ * @param syntacticClassifierAbsent Whether the client is *not* using a syntactic classifier.
+ * If there is no syntactic classifier (syntacticClassifierAbsent=true),
+ * certain heuristics may be used in its place; however, if there is a
+ * syntactic classifier (syntacticClassifierAbsent=false), certain
+ * classifications which may be incorrectly categorized will be given
+ * back as Identifiers in order to allow the syntactic classifier to
+ * subsume the classification.
+ */
+ getClassificationsForLine(text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean): ClassificationResult;
+>getClassificationsForLine : (text: string, lexState: EndOfLineState, syntacticClassifierAbsent: boolean) => ClassificationResult
+>text : string
+>lexState : EndOfLineState
+>EndOfLineState : EndOfLineState
+>syntacticClassifierAbsent : boolean
+>ClassificationResult : ClassificationResult
+ }
+ /**
+ * The document registry represents a store of SourceFile objects that can be shared between
+ * multiple LanguageService instances. A LanguageService instance holds on the SourceFile (AST)
+ * of files in the context.
+ * SourceFile objects account for most of the memory usage by the language service. Sharing
+ * the same DocumentRegistry instance between different instances of LanguageService allow
+ * for more efficient memory utilization since all projects will share at least the library
+ * file (lib.d.ts).
+ *
+ * A more advanced use of the document registry is to serialize sourceFile objects to disk
+ * and re-hydrate them when needed.
+ *
+ * To create a default DocumentRegistry, use createDocumentRegistry to create one, and pass it
+ * to all subsequent createLanguageService calls.
+ */
+ interface DocumentRegistry {
+>DocumentRegistry : DocumentRegistry
+
+ /**
+ * Request a stored SourceFile with a given fileName and compilationSettings.
+ * The first call to acquire will call createLanguageServiceSourceFile to generate
+ * the SourceFile if was not found in the registry.
+ *
+ * @param fileName The name of the file requested
+ * @param compilationSettings Some compilation settings like target affects the
+ * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
+ * multiple copies of the same file for different compilation settings.
+ * @parm scriptSnapshot Text of the file. Only used if the file was not found
+ * in the registry and a new one was created.
+ * @parm version Current version of the file. Only used if the file was not found
+ * in the registry and a new one was created.
+ */
+ acquireDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile;
+>acquireDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile
+>fileName : string
+>compilationSettings : CompilerOptions
+>CompilerOptions : CompilerOptions
+>scriptSnapshot : IScriptSnapshot
+>IScriptSnapshot : IScriptSnapshot
+>version : string
+>SourceFile : SourceFile
+
+ /**
+ * Request an updated version of an already existing SourceFile with a given fileName
+ * and compilationSettings. The update will in-turn call updateLanguageServiceSourceFile
+ * to get an updated SourceFile.
+ *
+ * @param fileName The name of the file requested
+ * @param compilationSettings Some compilation settings like target affects the
+ * shape of a the resulting SourceFile. This allows the DocumentRegistry to store
+ * multiple copies of the same file for different compilation settings.
+ * @param scriptSnapshot Text of the file.
+ * @param version Current version of the file.
+ */
+ updateDocument(fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string): SourceFile;
+>updateDocument : (fileName: string, compilationSettings: CompilerOptions, scriptSnapshot: IScriptSnapshot, version: string) => SourceFile
+>fileName : string
+>compilationSettings : CompilerOptions
+>CompilerOptions : CompilerOptions
+>scriptSnapshot : IScriptSnapshot
+>IScriptSnapshot : IScriptSnapshot
+>version : string
+>SourceFile : SourceFile
+
+ /**
+ * Informs the DocumentRegistry that a file is not needed any longer.
+ *
+ * Note: It is not allowed to call release on a SourceFile that was not acquired from
+ * this registry originally.
+ *
+ * @param fileName The name of the file to be released
+ * @param compilationSettings The compilation settings used to acquire the file
+ */
+ releaseDocument(fileName: string, compilationSettings: CompilerOptions): void;
+>releaseDocument : (fileName: string, compilationSettings: CompilerOptions) => void
+>fileName : string
+>compilationSettings : CompilerOptions
+>CompilerOptions : CompilerOptions
+ }
+ class ScriptElementKind {
+>ScriptElementKind : ScriptElementKind
+
+ static unknown: string;
+>unknown : string
+
+ static warning: string;
+>warning : string
+
+ static keyword: string;
+>keyword : string
+
+ static scriptElement: string;
+>scriptElement : string
+
+ static moduleElement: string;
+>moduleElement : string
+
+ static classElement: string;
+>classElement : string
+
+ static interfaceElement: string;
+>interfaceElement : string
+
+ static typeElement: string;
+>typeElement : string
+
+ static enumElement: string;
+>enumElement : string
+
+ static variableElement: string;
+>variableElement : string
+
+ static localVariableElement: string;
+>localVariableElement : string
+
+ static functionElement: string;
+>functionElement : string
+
+ static localFunctionElement: string;
+>localFunctionElement : string
+
+ static memberFunctionElement: string;
+>memberFunctionElement : string
+
+ static memberGetAccessorElement: string;
+>memberGetAccessorElement : string
+
+ static memberSetAccessorElement: string;
+>memberSetAccessorElement : string
+
+ static memberVariableElement: string;
+>memberVariableElement : string
+
+ static constructorImplementationElement: string;
+>constructorImplementationElement : string
+
+ static callSignatureElement: string;
+>callSignatureElement : string
+
+ static indexSignatureElement: string;
+>indexSignatureElement : string
+
+ static constructSignatureElement: string;
+>constructSignatureElement : string
+
+ static parameterElement: string;
+>parameterElement : string
+
+ static typeParameterElement: string;
+>typeParameterElement : string
+
+ static primitiveType: string;
+>primitiveType : string
+
+ static label: string;
+>label : string
+
+ static alias: string;
+>alias : string
+
+ static constElement: string;
+>constElement : string
+
+ static letElement: string;
+>letElement : string
+ }
+ class ScriptElementKindModifier {
+>ScriptElementKindModifier : ScriptElementKindModifier
+
+ static none: string;
+>none : string
+
+ static publicMemberModifier: string;
+>publicMemberModifier : string
+
+ static privateMemberModifier: string;
+>privateMemberModifier : string
+
+ static protectedMemberModifier: string;
+>protectedMemberModifier : string
+
+ static exportedModifier: string;
+>exportedModifier : string
+
+ static ambientModifier: string;
+>ambientModifier : string
+
+ static staticModifier: string;
+>staticModifier : string
+ }
+ class ClassificationTypeNames {
+>ClassificationTypeNames : ClassificationTypeNames
+
+ static comment: string;
+>comment : string
+
+ static identifier: string;
+>identifier : string
+
+ static keyword: string;
+>keyword : string
+
+ static numericLiteral: string;
+>numericLiteral : string
+
+ static operator: string;
+>operator : string
+
+ static stringLiteral: string;
+>stringLiteral : string
+
+ static whiteSpace: string;
+>whiteSpace : string
+
+ static text: string;
+>text : string
+
+ static punctuation: string;
+>punctuation : string
+
+ static className: string;
+>className : string
+
+ static enumName: string;
+>enumName : string
+
+ static interfaceName: string;
+>interfaceName : string
+
+ static moduleName: string;
+>moduleName : string
+
+ static typeParameterName: string;
+>typeParameterName : string
+
+ static typeAlias: string;
+>typeAlias : string
+ }
+ interface DisplayPartsSymbolWriter extends SymbolWriter {
+>DisplayPartsSymbolWriter : DisplayPartsSymbolWriter
+>SymbolWriter : SymbolWriter
+
+ displayParts(): SymbolDisplayPart[];
+>displayParts : () => SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+ }
+ function displayPartsToString(displayParts: SymbolDisplayPart[]): string;
+>displayPartsToString : (displayParts: SymbolDisplayPart[]) => string
+>displayParts : SymbolDisplayPart[]
+>SymbolDisplayPart : SymbolDisplayPart
+
+ function getDefaultCompilerOptions(): CompilerOptions;
+>getDefaultCompilerOptions : () => CompilerOptions
+>CompilerOptions : CompilerOptions
+
+ class OperationCanceledException {
+>OperationCanceledException : OperationCanceledException
+ }
+ class CancellationTokenObject {
+>CancellationTokenObject : CancellationTokenObject
+
+ private cancellationToken;
+>cancellationToken : any
+
+ static None: CancellationTokenObject;
+>None : CancellationTokenObject
+>CancellationTokenObject : CancellationTokenObject
+
+ constructor(cancellationToken: CancellationToken);
+>cancellationToken : CancellationToken
+>CancellationToken : CancellationToken
+
+ isCancellationRequested(): boolean;
+>isCancellationRequested : () => boolean
+
+ throwIfCancellationRequested(): void;
+>throwIfCancellationRequested : () => void
+ }
+ function transpile(input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]): string;
+>transpile : (input: string, compilerOptions?: CompilerOptions, fileName?: string, diagnostics?: Diagnostic[]) => string
+>input : string
+>compilerOptions : CompilerOptions
+>CompilerOptions : CompilerOptions
+>fileName : string
+>diagnostics : Diagnostic[]
+>Diagnostic : Diagnostic
+
+ function createLanguageServiceSourceFile(fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean): SourceFile;
+>createLanguageServiceSourceFile : (fileName: string, scriptSnapshot: IScriptSnapshot, scriptTarget: ScriptTarget, version: string, setNodeParents: boolean) => SourceFile
+>fileName : string
+>scriptSnapshot : IScriptSnapshot
+>IScriptSnapshot : IScriptSnapshot
+>scriptTarget : ScriptTarget
+>ScriptTarget : ScriptTarget
+>version : string
+>setNodeParents : boolean
+>SourceFile : SourceFile
+
+ let disableIncrementalParsing: boolean;
+>disableIncrementalParsing : boolean
+
+ function updateLanguageServiceSourceFile(sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean): SourceFile;
+>updateLanguageServiceSourceFile : (sourceFile: SourceFile, scriptSnapshot: IScriptSnapshot, version: string, textChangeRange: TextChangeRange, aggressiveChecks?: boolean) => SourceFile
+>sourceFile : SourceFile
+>SourceFile : SourceFile
+>scriptSnapshot : IScriptSnapshot
+>IScriptSnapshot : IScriptSnapshot
+>version : string
+>textChangeRange : TextChangeRange
+>TextChangeRange : TextChangeRange
+>aggressiveChecks : boolean
+>SourceFile : SourceFile
+
+ function createDocumentRegistry(): DocumentRegistry;
+>createDocumentRegistry : () => DocumentRegistry
+>DocumentRegistry : DocumentRegistry
+
+ function preProcessFile(sourceText: string, readImportFiles?: boolean): PreProcessedFileInfo;
+>preProcessFile : (sourceText: string, readImportFiles?: boolean) => PreProcessedFileInfo
+>sourceText : string
+>readImportFiles : boolean
+>PreProcessedFileInfo : PreProcessedFileInfo
+
+ function createLanguageService(host: LanguageServiceHost, documentRegistry?: DocumentRegistry): LanguageService;
+>createLanguageService : (host: LanguageServiceHost, documentRegistry?: DocumentRegistry) => LanguageService
+>host : LanguageServiceHost
+>LanguageServiceHost : LanguageServiceHost
+>documentRegistry : DocumentRegistry
+>DocumentRegistry : DocumentRegistry
+>LanguageService : LanguageService
+
+ function createClassifier(): Classifier;
+>createClassifier : () => Classifier
+>Classifier : Classifier
+
+ /**
+ * Get the path of the default library file (lib.d.ts) as distributed with the typescript
+ * node package.
+ * The functionality is not supported if the ts module is consumed outside of a node module.
+ */
+ function getDefaultLibFilePath(options: CompilerOptions): string;
+>getDefaultLibFilePath : (options: CompilerOptions) => string
+>options : CompilerOptions
+>CompilerOptions : CompilerOptions
+}
+
diff --git a/tests/cases/fourslash/commentsMultiModuleMultiFile.ts b/tests/cases/fourslash/commentsMultiModuleMultiFile.ts
index 87c8abe93a2..9cbe47dd560 100644
--- a/tests/cases/fourslash/commentsMultiModuleMultiFile.ts
+++ b/tests/cases/fourslash/commentsMultiModuleMultiFile.ts
@@ -28,7 +28,7 @@
// this line triggers a semantic/syntactic error check, remove line when 788570 is fixed
edit.insert('');
-
+debugger;
goTo.marker('1');
verify.completionListContains("multiM", "module multiM", "this is multi declare module\nthi is multi module 2\nthis is multi module 3 comment");
diff --git a/tests/cases/fourslash/completionListWithAmbientDeclaration.ts b/tests/cases/fourslash/completionListWithAmbientDeclaration.ts
index 7cfac28fb24..9fb4ffef90e 100644
--- a/tests/cases/fourslash/completionListWithAmbientDeclaration.ts
+++ b/tests/cases/fourslash/completionListWithAmbientDeclaration.ts
@@ -7,7 +7,7 @@
//// declare module 'https' {
//// }
//// /*2*/
-
+debugger;
goTo.marker("1");
verify.not.completionListContains("http");
goTo.marker("2");
diff --git a/tests/cases/fourslash/fourslash.ts b/tests/cases/fourslash/fourslash.ts
index 087c43786f0..8ade18fc200 100644
--- a/tests/cases/fourslash/fourslash.ts
+++ b/tests/cases/fourslash/fourslash.ts
@@ -439,6 +439,10 @@ module FourSlashInterface {
displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[]) {
FourSlash.currentTestState.verifyQuickInfoDisplayParts(kind, kindModifiers, textSpan, displayParts, documentation);
}
+
+ public getSemanticDiagnostics(expected: string) {
+ FourSlash.currentTestState.getSemanticDiagnostics(expected);
+ }
}
export class edit {
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics1.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics1.ts
new file mode 100644
index 00000000000..05bc6727710
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics1.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// import a = b;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'import ... =' can only be used in a .ts file.",
+ "start": 0,
+ "length": 13,
+ "category": "error",
+ "code": 8002
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics10.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics10.ts
new file mode 100644
index 00000000000..84c6c45f870
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics10.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// function F() { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'type parameter declarations' can only be used in a .ts file.",
+ "start": 11,
+ "length": 1,
+ "category": "error",
+ "code": 8004
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics11.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics11.ts
new file mode 100644
index 00000000000..7dfd3c4965b
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics11.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// function F(): number { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'types' can only be used in a .ts file.",
+ "start": 14,
+ "length": 6,
+ "category": "error",
+ "code": 8010
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics12.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics12.ts
new file mode 100644
index 00000000000..88a1331ef23
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics12.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// declare var v;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'declare' can only be used in a .ts file.",
+ "start": 0,
+ "length": 7,
+ "category": "error",
+ "code": 8009
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics13.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics13.ts
new file mode 100644
index 00000000000..21a5e9cdcaa
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics13.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// var v: () => number;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'types' can only be used in a .ts file.",
+ "start": 7,
+ "length": 12,
+ "category": "error",
+ "code": 8010
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics14.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics14.ts
new file mode 100644
index 00000000000..8cd178ffec1
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics14.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// Foo();
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'type arguments' can only be used in a .ts file.",
+ "start": 4,
+ "length": 6,
+ "category": "error",
+ "code": 8011
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics15.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics15.ts
new file mode 100644
index 00000000000..d1c3a8c6e63
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics15.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// function F(public p) { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'parameter modifiers' can only be used in a .ts file.",
+ "start": 11,
+ "length": 6,
+ "category": "error",
+ "code": 8012
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics16.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics16.ts
new file mode 100644
index 00000000000..2ccac13dbf9
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics16.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// function F(p?) { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'?' can only be used in a .ts file.",
+ "start": 12,
+ "length": 1,
+ "category": "error",
+ "code": 8013
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics17.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics17.ts
new file mode 100644
index 00000000000..5e94c806c60
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics17.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// function F(a: number) { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'types' can only be used in a .ts file.",
+ "start": 14,
+ "length": 6,
+ "category": "error",
+ "code": 8010
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics18.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics18.ts
new file mode 100644
index 00000000000..a2859060cde
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics18.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// class C { v }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'property declarations' can only be used in a .ts file.",
+ "start": 10,
+ "length": 1,
+ "category": "error",
+ "code": 8014
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics19.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics19.ts
new file mode 100644
index 00000000000..34dbbc0271d
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics19.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// enum E { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'enum declarations' can only be used in a .ts file.",
+ "start": 5,
+ "length": 1,
+ "category": "error",
+ "code": 8015
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts
new file mode 100644
index 00000000000..b26d16f9017
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics2.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// export = b;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'export=' can only be used in a .ts file.",
+ "start": 0,
+ "length": 11,
+ "category": "error",
+ "code": 8003
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics20.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics20.ts
new file mode 100644
index 00000000000..790f02bac92
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics20.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// var v = undefined;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'type assertion expressions' can only be used in a .ts file.",
+ "start": 9,
+ "length": 6,
+ "category": "error",
+ "code": 8016
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics21.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics21.ts
new file mode 100644
index 00000000000..23e3274261c
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics21.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// @internal class C {}
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'decorators' can only be used in a .ts file.",
+ "start": 0,
+ "length": 9,
+ "category": "error",
+ "code": 8017
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics3.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics3.ts
new file mode 100644
index 00000000000..c7b6c6a80cf
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics3.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// class C { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'type parameter declarations' can only be used in a .ts file.",
+ "start": 8,
+ "length": 1,
+ "category": "error",
+ "code": 8004
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics4.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics4.ts
new file mode 100644
index 00000000000..f32ee5c4b68
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics4.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// public class C { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'public' can only be used in a .ts file.",
+ "start": 0,
+ "length": 6,
+ "category": "error",
+ "code": 8009
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics5.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics5.ts
new file mode 100644
index 00000000000..e405624c9b0
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics5.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// class C implements D { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'implements clauses' can only be used in a .ts file.",
+ "start": 8,
+ "length": 12,
+ "category": "error",
+ "code": 8005
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics6.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics6.ts
new file mode 100644
index 00000000000..918eb035a8b
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics6.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// interface I { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'interface declarations' can only be used in a .ts file.",
+ "start": 10,
+ "length": 1,
+ "category": "error",
+ "code": 8006
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics7.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics7.ts
new file mode 100644
index 00000000000..cdec262f699
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics7.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// module M { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'module declarations' can only be used in a .ts file.",
+ "start": 7,
+ "length": 1,
+ "category": "error",
+ "code": 8007
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics8.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics8.ts
new file mode 100644
index 00000000000..a71a2cf2bc7
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics8.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// type a = b;
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'type aliases' can only be used in a .ts file.",
+ "start": 0,
+ "length": 11,
+ "category": "error",
+ "code": 8008
+ }
+]`);
\ No newline at end of file
diff --git a/tests/cases/fourslash/getJavaScriptSemanticDiagnostics9.ts b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics9.ts
new file mode 100644
index 00000000000..4bd4ce706b9
--- /dev/null
+++ b/tests/cases/fourslash/getJavaScriptSemanticDiagnostics9.ts
@@ -0,0 +1,15 @@
+///
+
+// @allowNonTsExtensions: true
+// @Filename: a.js
+//// public function F() { }
+
+verify.getSemanticDiagnostics(`[
+ {
+ "message": "'public' can only be used in a .ts file.",
+ "start": 0,
+ "length": 6,
+ "category": "error",
+ "code": 8009
+ }
+]`);
\ No newline at end of file