This commit is contained in:
Mohamed Hegazy
2017-04-04 12:54:47 -07:00
80 changed files with 2345 additions and 657 deletions

View File

@@ -703,6 +703,7 @@ namespace ts {
function isNarrowableReference(expr: Expression): boolean {
return expr.kind === SyntaxKind.Identifier ||
expr.kind === SyntaxKind.ThisKeyword ||
expr.kind === SyntaxKind.SuperKeyword ||
expr.kind === SyntaxKind.PropertyAccessExpression && isNarrowableReference((<PropertyAccessExpression>expr).expression);
}
@@ -1910,7 +1911,9 @@ namespace ts {
// Here the current node is "foo", which is a container, but the scope of "MyType" should
// not be inside "foo". Therefore we always bind @typedef before bind the parent node,
// and skip binding this tag later when binding all the other jsdoc tags.
bindJSDocTypedefTagIfAny(node);
if (isInJavaScriptFile(node)) {
bindJSDocTypedefTagIfAny(node);
}
// First we bind declaration nodes to a symbol if possible. We'll both create a symbol
// and then potentially add the symbol to an appropriate symbol table. Possible

View File

@@ -493,6 +493,10 @@ namespace ts {
return symbol;
}
function isTransientSymbol(symbol: Symbol): symbol is TransientSymbol {
return (symbol.flags & SymbolFlags.Transient) !== 0;
}
function getExcludedSymbolFlags(flags: SymbolFlags): SymbolFlags {
let result: SymbolFlags = 0;
if (flags & SymbolFlags.BlockScopedVariable) result |= SymbolFlags.BlockScopedVariableExcludes;
@@ -717,7 +721,7 @@ namespace ts {
}
// declaration is after usage
// can be legal if usage is deferred (i.e. inside function or in initializer of instance property)
if (isUsedInFunctionOrInstanceProperty(usage)) {
if (isUsedInFunctionOrInstanceProperty(usage, declaration)) {
return true;
}
const sourceFiles = host.getSourceFiles();
@@ -748,8 +752,7 @@ namespace ts {
// 1. inside a function
// 2. inside an instance property initializer, a reference to a non-instance property
const container = getEnclosingBlockScopeContainer(declaration);
const isInstanceProperty = declaration.kind === SyntaxKind.PropertyDeclaration && !(getModifierFlags(declaration) & ModifierFlags.Static);
return isUsedInFunctionOrInstanceProperty(usage, isInstanceProperty, container);
return isUsedInFunctionOrInstanceProperty(usage, declaration, container);
function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration: VariableDeclaration, usage: Node): boolean {
const container = getEnclosingBlockScopeContainer(declaration);
@@ -778,7 +781,7 @@ namespace ts {
return false;
}
function isUsedInFunctionOrInstanceProperty(usage: Node, isDeclarationInstanceProperty?: boolean, container?: Node): boolean {
function isUsedInFunctionOrInstanceProperty(usage: Node, declaration: Node, container?: Node): boolean {
let current = usage;
while (current) {
if (current === container) {
@@ -795,7 +798,8 @@ namespace ts {
(<PropertyDeclaration>current.parent).initializer === current;
if (initializerOfInstanceProperty) {
return !isDeclarationInstanceProperty;
const isDeclarationInstanceProperty = declaration.kind === SyntaxKind.PropertyDeclaration && !(getModifierFlags(declaration) & ModifierFlags.Static);
return !isDeclarationInstanceProperty || getContainingClass(usage) !== getContainingClass(declaration);
}
current = current.parent;
@@ -1540,9 +1544,9 @@ namespace ts {
}
}
else if (name.kind === SyntaxKind.ParenthesizedExpression) {
// If the expression in parenthsizedExpression is not an entity-name (e.g. it is a call expression), it won't be able to successfully resolve the name.
// This is the case when we are trying to do any language service operation in heritage clauses. By return undefined, the getSymbolOfEntityNameOrPropertyAccessExpression
// will attempt to checkPropertyAccessExpression to resolve symbol.
// If the expression in parenthesizedExpression is not an entity-name (e.g. it is a call expression), it won't be able to successfully resolve the name.
// This is the case when we are trying to do any language service operation in heritage clauses.
// By return undefined, the getSymbolOfEntityNameOrPropertyAccessExpression will attempt to checkPropertyAccessExpression to resolve symbol.
// i.e class C extends foo()./*do language service operation here*/B {}
return isEntityNameExpression(name.expression) ?
resolveEntityName(name.expression as EntityNameOrEntityNameExpression, meaning, ignoreErrors, dontResolveAlias, location) :
@@ -1560,7 +1564,7 @@ namespace ts {
}
function resolveExternalModuleNameWorker(location: Node, moduleReferenceExpression: Expression, moduleNotFoundError: DiagnosticMessage, isForAugmentation = false): Symbol {
if (moduleReferenceExpression.kind !== SyntaxKind.StringLiteral) {
if (moduleReferenceExpression.kind !== SyntaxKind.StringLiteral && moduleReferenceExpression.kind !== SyntaxKind.NoSubstitutionTemplateLiteral) {
return;
}
@@ -3385,23 +3389,23 @@ namespace ts {
function buildParameterDisplay(p: Symbol, writer: SymbolWriter, enclosingDeclaration?: Node, flags?: TypeFormatFlags, symbolStack?: Symbol[]) {
const parameterNode = <ParameterDeclaration>p.valueDeclaration;
if (isRestParameter(parameterNode)) {
if (parameterNode ? isRestParameter(parameterNode) : isTransientSymbol(p) && p.isRestParameter) {
writePunctuation(writer, SyntaxKind.DotDotDotToken);
}
if (isBindingPattern(parameterNode.name)) {
if (parameterNode && isBindingPattern(parameterNode.name)) {
buildBindingPatternDisplay(<BindingPattern>parameterNode.name, writer, enclosingDeclaration, flags, symbolStack);
}
else {
appendSymbolNameOnly(p, writer);
}
if (isOptionalParameter(parameterNode)) {
if (parameterNode && isOptionalParameter(parameterNode)) {
writePunctuation(writer, SyntaxKind.QuestionToken);
}
writePunctuation(writer, SyntaxKind.ColonToken);
writeSpace(writer);
let type = getTypeOfSymbol(p);
if (isRequiredInitializedParameter(parameterNode)) {
if (parameterNode && isRequiredInitializedParameter(parameterNode)) {
type = includeFalsyTypes(type, TypeFlags.Undefined);
}
buildTypeDisplay(type, writer, enclosingDeclaration, flags, symbolStack);
@@ -6170,6 +6174,37 @@ namespace ts {
}
}
function containsArgumentsReference(declaration: FunctionLikeDeclaration): boolean {
const links = getNodeLinks(declaration);
if (links.containsArgumentsReference === undefined) {
if (links.flags & NodeCheckFlags.CaptureArguments) {
links.containsArgumentsReference = true;
}
else {
links.containsArgumentsReference = traverse(declaration.body);
}
}
return links.containsArgumentsReference;
function traverse(node: Node): boolean {
if (!node) return false;
switch (node.kind) {
case SyntaxKind.Identifier:
return (<Identifier>node).text === "arguments" && isPartOfExpression(node);
case SyntaxKind.PropertyDeclaration:
case SyntaxKind.MethodDeclaration:
case SyntaxKind.GetAccessor:
case SyntaxKind.SetAccessor:
return (<Declaration>node).name.kind === SyntaxKind.ComputedPropertyName
&& traverse((<Declaration>node).name);
default:
return !nodeStartsNewLexicalEnvironment(node) && !isPartOfTypeNode(node) && forEachChild(node, traverse);
}
}
}
function getSignaturesOfSymbol(symbol: Symbol): Signature[] {
if (!symbol) return emptyArray;
const result: Signature[] = [];
@@ -10347,6 +10382,8 @@ namespace ts {
getExportSymbolOfValueSymbolIfExported(getResolvedSymbol(<Identifier>source)) === getSymbolOfNode(target);
case SyntaxKind.ThisKeyword:
return target.kind === SyntaxKind.ThisKeyword;
case SyntaxKind.SuperKeyword:
return target.kind === SyntaxKind.SuperKeyword;
case SyntaxKind.PropertyAccessExpression:
return target.kind === SyntaxKind.PropertyAccessExpression &&
(<PropertyAccessExpression>source).name.text === (<PropertyAccessExpression>target).name.text &&
@@ -11483,6 +11520,7 @@ namespace ts {
switch (expr.kind) {
case SyntaxKind.Identifier:
case SyntaxKind.ThisKeyword:
case SyntaxKind.SuperKeyword:
case SyntaxKind.PropertyAccessExpression:
return narrowTypeByTruthiness(type, expr, assumeTrue);
case SyntaxKind.CallExpression:
@@ -11613,9 +11651,7 @@ namespace ts {
}
}
if (node.flags & NodeFlags.AwaitContext) {
getNodeLinks(container).flags |= NodeCheckFlags.CaptureArguments;
}
getNodeLinks(container).flags |= NodeCheckFlags.CaptureArguments;
return getTypeOfSymbol(symbol);
}
@@ -14854,6 +14890,21 @@ namespace ts {
}
}
if (signatures.length === 1) {
const declaration = signatures[0].declaration;
if (declaration && isInJavaScriptFile(declaration) && !hasJSDocParameterTags(declaration)) {
if (containsArgumentsReference(<FunctionLikeDeclaration>declaration)) {
const signatureWithRest = cloneSignature(signatures[0]);
const syntheticArgsSymbol = createSymbol(SymbolFlags.Variable, "args");
syntheticArgsSymbol.type = anyArrayType;
syntheticArgsSymbol.isRestParameter = true;
signatureWithRest.parameters = concatenate(signatureWithRest.parameters, [syntheticArgsSymbol]);
signatureWithRest.hasRestParameter = true;
signatures = [signatureWithRest];
}
}
}
const candidates = candidatesOutArray || [];
// reorderCandidates fills up the candidates array directly
reorderCandidates(signatures, candidates);

View File

@@ -1267,6 +1267,7 @@ namespace ts {
function nextTokenIsClassOrFunctionOrAsync(): boolean {
nextToken();
return token() === SyntaxKind.ClassKeyword || token() === SyntaxKind.FunctionKeyword ||
(token() === SyntaxKind.AbstractKeyword && lookAhead(nextTokenIsClassKeywordOnSameLine)) ||
(token() === SyntaxKind.AsyncKeyword && lookAhead(nextTokenIsFunctionKeywordOnSameLine));
}
@@ -4661,6 +4662,11 @@ namespace ts {
return tokenIsIdentifierOrKeyword(token()) && !scanner.hasPrecedingLineBreak();
}
function nextTokenIsClassKeywordOnSameLine() {
nextToken();
return token() === SyntaxKind.ClassKeyword && !scanner.hasPrecedingLineBreak();
}
function nextTokenIsFunctionKeywordOnSameLine() {
nextToken();
return token() === SyntaxKind.FunctionKeyword && !scanner.hasPrecedingLineBreak();
@@ -6528,7 +6534,7 @@ namespace ts {
function parseTagComments(indent: number) {
const comments: string[] = [];
let state = JSDocState.SawAsterisk;
let state = JSDocState.BeginningOfLine;
let margin: number | undefined;
function pushComment(text: string) {
if (!margin) {

View File

@@ -2870,6 +2870,7 @@ namespace ts {
/* @internal */
export interface TransientSymbol extends Symbol, SymbolLinks {
checkFlags: CheckFlags;
isRestParameter?: boolean;
}
export type SymbolTable = Map<Symbol>;
@@ -2899,7 +2900,7 @@ namespace ts {
ContextChecked = 0x00000400, // Contextual types have been assigned
AsyncMethodWithSuper = 0x00000800, // An async method that reads a value from a member of 'super'.
AsyncMethodWithSuperBinding = 0x00001000, // An async method that assigns a value to a member of 'super'.
CaptureArguments = 0x00002000, // Lexical 'arguments' used in body (for async functions)
CaptureArguments = 0x00002000, // Lexical 'arguments' used in body
EnumValuesComputed = 0x00004000, // Values for enum members have been computed, and any errors have been reported for them.
LexicalModuleMergesWithClass = 0x00008000, // Instantiated lexical module declaration is merged with a previous class declaration.
LoopWithCapturedBlockScopedBinding = 0x00010000, // Loop that contains block scoped variable captured in closure
@@ -2923,6 +2924,7 @@ namespace ts {
maybeTypePredicate?: boolean; // Cached check whether call expression might reference a type predicate
enumMemberValue?: number; // Constant value of enum member
isVisible?: boolean; // Is this node visible
containsArgumentsReference?: boolean; // Whether a function-like declaration contains an 'arguments' reference
hasReportedStatementInAmbientContext?: boolean; // Cache boolean if we report statements in ambient context
jsxFlags?: JsxFlags; // flags for knowing what kind of element/attributes we're dealing with
resolvedJsxElementAttributesType?: Type; // resolved element attributes type of a JSX openinglike element

View File

@@ -1404,17 +1404,24 @@ namespace ts {
/**
* Returns true if the node is a CallExpression to the identifier 'require' with
* exactly one argument.
* exactly one argument (of the form 'require("name")').
* This function does not test if the node is in a JavaScript file or not.
*/
export function isRequireCall(expression: Node, checkArgumentIsStringLiteral: boolean): expression is CallExpression {
// of the form 'require("name")'
const isRequire = expression.kind === SyntaxKind.CallExpression &&
(<CallExpression>expression).expression.kind === SyntaxKind.Identifier &&
(<Identifier>(<CallExpression>expression).expression).text === "require" &&
(<CallExpression>expression).arguments.length === 1;
*/
export function isRequireCall(callExpression: Node, checkArgumentIsStringLiteral: boolean): callExpression is CallExpression {
if (callExpression.kind !== SyntaxKind.CallExpression) {
return false;
}
const { expression, arguments } = callExpression as CallExpression;
return isRequire && (!checkArgumentIsStringLiteral || (<CallExpression>expression).arguments[0].kind === SyntaxKind.StringLiteral);
if (expression.kind !== SyntaxKind.Identifier || (expression as Identifier).text !== "require") {
return false;
}
if (arguments.length !== 1) {
return false;
}
const arg = arguments[0];
return !checkArgumentIsStringLiteral || arg.kind === SyntaxKind.StringLiteral || arg.kind === SyntaxKind.NoSubstitutionTemplateLiteral;
}
export function isSingleOrDoubleQuote(charCode: number) {
@@ -1588,7 +1595,7 @@ namespace ts {
return node && firstOrUndefined(getJSDocTags(node, kind));
}
function getJSDocs(node: Node): (JSDoc | JSDocTag)[] {
export function getJSDocs(node: Node): (JSDoc | JSDocTag)[] {
let cache: (JSDoc | JSDocTag)[] = node.jsDocCache;
if (!cache) {
getJSDocsWorker(node);

View File

@@ -858,7 +858,7 @@ namespace FourSlash {
}
}
public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string) {
public verifyCompletionEntryDetails(entryName: string, expectedText: string, expectedDocumentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) {
const details = this.getCompletionEntryDetails(entryName);
assert(details, "no completion entry available");
@@ -872,6 +872,14 @@ namespace FourSlash {
if (kind !== undefined) {
assert.equal(details.kind, kind, this.assertionMessageAtLastKnownMarker("completion entry kind"));
}
if (tags !== undefined) {
assert.equal(details.tags.length, tags.length, this.messageAtLastKnownMarker("QuickInfo tags"));
ts.zipWith(tags, details.tags, (expectedTag, actualTag) => {
assert.equal(expectedTag.name, actualTag.name);
assert.equal(expectedTag.text, actualTag.text, this.messageAtLastKnownMarker("QuickInfo tag " + actualTag.name));
});
}
}
public verifyReferencesAre(expectedReferences: Range[]) {
@@ -1083,7 +1091,9 @@ namespace FourSlash {
public verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: { start: number; length: number; },
displayParts: ts.SymbolDisplayPart[],
documentation: ts.SymbolDisplayPart[]) {
documentation: ts.SymbolDisplayPart[],
tags: ts.JSDocTagInfo[]
) {
const actualQuickInfo = this.languageService.getQuickInfoAtPosition(this.activeFile.fileName, this.currentCaretPosition);
assert.equal(actualQuickInfo.kind, kind, this.messageAtLastKnownMarker("QuickInfo kind"));
@@ -1091,6 +1101,11 @@ namespace FourSlash {
assert.equal(JSON.stringify(actualQuickInfo.textSpan), JSON.stringify(textSpan), this.messageAtLastKnownMarker("QuickInfo textSpan"));
assert.equal(TestState.getDisplayPartsJson(actualQuickInfo.displayParts), TestState.getDisplayPartsJson(displayParts), this.messageAtLastKnownMarker("QuickInfo displayParts"));
assert.equal(TestState.getDisplayPartsJson(actualQuickInfo.documentation), TestState.getDisplayPartsJson(documentation), this.messageAtLastKnownMarker("QuickInfo documentation"));
assert.equal(actualQuickInfo.tags.length, tags.length, this.messageAtLastKnownMarker("QuickInfo tags"));
ts.zipWith(tags, actualQuickInfo.tags, (expectedTag, actualTag) => {
assert.equal(expectedTag.name, actualTag.name);
assert.equal(expectedTag.text, actualTag.text, this.messageAtLastKnownMarker("QuickInfo tag " + actualTag.name));
});
}
public verifyRenameLocations(findInStrings: boolean, findInComments: boolean, ranges?: Range[]) {
@@ -1184,6 +1199,16 @@ namespace FourSlash {
assert.equal(ts.displayPartsToString(actualDocComment), docComment, this.assertionMessageAtLastKnownMarker("current signature help doc comment"));
}
public verifyCurrentSignatureHelpTags(tags: ts.JSDocTagInfo[]) {
const actualTags = this.getActiveSignatureHelpItem().tags;
assert.equal(actualTags.length, tags.length, this.assertionMessageAtLastKnownMarker("signature help tags"));
ts.zipWith(tags, actualTags, (expectedTag, actualTag) => {
assert.equal(expectedTag.name, actualTag.name);
assert.equal(expectedTag.text, actualTag.text, this.assertionMessageAtLastKnownMarker("signature help tag " + actualTag.name));
});
}
public verifySignatureHelpCount(expected: number) {
const help = this.languageService.getSignatureHelpItems(this.activeFile.fileName, this.currentCaretPosition);
const actual = help && help.items ? help.items.length : 0;
@@ -3514,6 +3539,10 @@ namespace FourSlashInterface {
this.state.verifyCurrentSignatureHelpDocComment(docComment);
}
public currentSignatureHelpTagsAre(tags: ts.JSDocTagInfo[]) {
this.state.verifyCurrentSignatureHelpTags(tags);
}
public signatureHelpCountIs(expected: number) {
this.state.verifySignatureHelpCount(expected);
}
@@ -3642,8 +3671,8 @@ namespace FourSlashInterface {
this.state.verifyRangesWithSameTextAreDocumentHighlights();
}
public completionEntryDetailIs(entryName: string, text: string, documentation?: string, kind?: string) {
this.state.verifyCompletionEntryDetails(entryName, text, documentation, kind);
public completionEntryDetailIs(entryName: string, text: string, documentation?: string, kind?: string, tags?: ts.JSDocTagInfo[]) {
this.state.verifyCompletionEntryDetails(entryName, text, documentation, kind, tags);
}
/**
@@ -3673,8 +3702,8 @@ namespace FourSlashInterface {
}
public verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: { start: number; length: number; },
displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[]) {
this.state.verifyQuickInfoDisplayParts(kind, kindModifiers, textSpan, displayParts, documentation);
displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[], tags: ts.JSDocTagInfo[]) {
this.state.verifyQuickInfoDisplayParts(kind, kindModifiers, textSpan, displayParts, documentation, tags);
}
public getSyntacticDiagnostics(expected: string) {

View File

@@ -807,7 +807,7 @@ namespace ts.projectSystem {
path: "/c/app.ts",
content: "let x = 1"
};
const makeProject = (f: FileOrFolder) => ({ projectFileName: f.path + ".csproj", rootFiles: [toExternalFile(f.path)], options: {} });
const makeProject = (f: FileOrFolder) => ({ projectFileName: f.path + ".csproj", rootFiles: [toExternalFile(f.path)], options: {} });
const p1 = makeProject(f1);
const p2 = makeProject(f2);
const p3 = makeProject(f3);

View File

@@ -178,7 +178,8 @@ namespace ts.server {
kindModifiers: response.body.kindModifiers,
textSpan: ts.createTextSpanFromBounds(start, end),
displayParts: [{ kind: "text", text: response.body.displayString }],
documentation: [{ kind: "text", text: response.body.documentation }]
documentation: [{ kind: "text", text: response.body.documentation }],
tags: response.body.tags
};
}

View File

@@ -1319,6 +1319,11 @@ namespace ts.server.protocol {
* Documentation associated with symbol.
*/
documentation: string;
/**
* JSDoc tags associated with symbol.
*/
tags: JSDocTagInfo[];
}
/**
@@ -1549,6 +1554,11 @@ namespace ts.server.protocol {
* Documentation strings for the symbol.
*/
documentation: SymbolDisplayPart[];
/**
* JSDoc tags for the symbol.
*/
tags: JSDocTagInfo[];
}
export interface CompletionsResponse extends Response {
@@ -1619,6 +1629,11 @@ namespace ts.server.protocol {
* The signature's documentation
*/
documentation: SymbolDisplayPart[];
/**
* The signature's JSDoc tags
*/
tags: JSDocTagInfo[];
}
/**

View File

@@ -219,7 +219,7 @@ namespace ts.server {
getCurrentRequestId(): number;
sendRequestCompletedEvent(requestId: number): void;
getServerHost(): ServerHost;
isCancellationRequested(): boolean;
isCancellationRequested(): boolean;
executeWithRequestId(requestId: number, action: () => void): void;
logError(error: Error, message: string): void;
}
@@ -1020,6 +1020,7 @@ namespace ts.server {
if (simplifiedResult) {
const displayString = ts.displayPartsToString(quickInfo.displayParts);
const docString = ts.displayPartsToString(quickInfo.documentation);
return {
kind: quickInfo.kind,
kindModifiers: quickInfo.kindModifiers,
@@ -1027,6 +1028,7 @@ namespace ts.server {
end: scriptInfo.positionToLineOffset(ts.textSpanEnd(quickInfo.textSpan)),
displayString: displayString,
documentation: docString,
tags: quickInfo.tags || []
};
}
else {

View File

@@ -293,13 +293,14 @@ namespace ts.Completions {
const symbol = forEach(symbols, s => getCompletionEntryDisplayNameForSymbol(typeChecker, s, compilerOptions.target, /*performCharacterChecks*/ false, location) === entryName ? s : undefined);
if (symbol) {
const { displayParts, documentation, symbolKind } = SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, location, location, SemanticMeaning.All);
const { displayParts, documentation, symbolKind, tags } = SymbolDisplay.getSymbolDisplayPartsDocumentationAndSymbolKind(typeChecker, symbol, sourceFile, location, location, SemanticMeaning.All);
return {
name: entryName,
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
kind: symbolKind,
displayParts,
documentation
documentation,
tags
};
}
}
@@ -312,7 +313,8 @@ namespace ts.Completions {
kind: ScriptElementKind.keyword,
kindModifiers: ScriptElementKindModifier.none,
displayParts: [displayPart(entryName, SymbolDisplayPartKind.keyword)],
documentation: undefined
documentation: undefined,
tags: undefined
};
}

View File

@@ -70,6 +70,28 @@ namespace ts.JsDoc {
return documentationComment;
}
export function getJsDocTagsFromDeclarations(declarations: Declaration[]) {
// Only collect doc comments from duplicate declarations once.
const tags: JSDocTagInfo[] = [];
forEachUnique(declarations, declaration => {
const jsDocs = getJSDocs(declaration);
if (!jsDocs) {
return;
}
for (const doc of jsDocs) {
const tagsForDoc = (doc as JSDoc).tags;
if (tagsForDoc) {
tags.push(...tagsForDoc.filter(tag => tag.kind === SyntaxKind.JSDocTag).map(jsDocTag => {
return {
name: jsDocTag.tagName.text,
text: jsDocTag.comment
}; }));
}
}
});
return tags;
}
/**
* Iterates through 'array' by index and performs the callback on each element of array until the callback
* returns a truthy value, then returns that value.

View File

@@ -302,6 +302,10 @@ namespace ts {
// symbol has no doc comment, then the empty string will be returned.
documentationComment: SymbolDisplayPart[];
// Undefined is used to indicate the value has not been computed. If, after computing, the
// symbol has no JSDoc tags, then the empty array will be returned.
tags: JSDocTagInfo[];
constructor(flags: SymbolFlags, name: string) {
this.flags = flags;
this.name = name;
@@ -326,6 +330,14 @@ namespace ts {
return this.documentationComment;
}
getJsDocTags(): JSDocTagInfo[] {
if (this.tags === undefined) {
this.tags = JsDoc.getJsDocTagsFromDeclarations(this.declarations);
}
return this.tags;
}
}
class TokenObject<TKind extends SyntaxKind> extends TokenOrIdentifierObject implements Token<TKind> {
@@ -415,6 +427,10 @@ namespace ts {
// symbol has no doc comment, then the empty string will be returned.
documentationComment: SymbolDisplayPart[];
// Undefined is used to indicate the value has not been computed. If, after computing, the
// symbol has no doc comment, then the empty array will be returned.
jsDocTags: JSDocTagInfo[];
constructor(checker: TypeChecker) {
this.checker = checker;
}
@@ -438,6 +454,14 @@ namespace ts {
return this.documentationComment;
}
getJsDocTags(): JSDocTagInfo[] {
if (this.jsDocTags === undefined) {
this.jsDocTags = this.declaration ? JsDoc.getJsDocTagsFromDeclarations([this.declaration]) : [];
}
return this.jsDocTags;
}
}
class SourceFileObject extends NodeObject implements SourceFile {
@@ -1360,7 +1384,8 @@ namespace ts {
kindModifiers: ScriptElementKindModifier.none,
textSpan: createTextSpan(node.getStart(), node.getWidth()),
displayParts: typeToDisplayParts(typeChecker, type, getContainerNode(node)),
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined
documentation: type.symbol ? type.symbol.getDocumentationComment() : undefined,
tags: type.symbol ? type.symbol.getJsDocTags() : undefined
};
}
}
@@ -1374,7 +1399,8 @@ namespace ts {
kindModifiers: SymbolDisplay.getSymbolModifiers(symbol),
textSpan: createTextSpan(node.getStart(), node.getWidth()),
displayParts: displayPartsDocumentationsAndKind.displayParts,
documentation: displayPartsDocumentationsAndKind.documentation
documentation: displayPartsDocumentationsAndKind.documentation,
tags: displayPartsDocumentationsAndKind.tags
};
}

View File

@@ -606,7 +606,8 @@ namespace ts.SignatureHelp {
suffixDisplayParts,
separatorDisplayParts: [punctuationPart(SyntaxKind.CommaToken), spacePart()],
parameters: signatureHelpParameters,
documentation: candidateSignature.getDocumentationComment()
documentation: candidateSignature.getDocumentationComment(),
tags: candidateSignature.getJsDocTags()
};
});

View File

@@ -93,6 +93,7 @@ namespace ts.SymbolDisplay {
const displayParts: SymbolDisplayPart[] = [];
let documentation: SymbolDisplayPart[];
let tags: JSDocTagInfo[];
const symbolFlags = symbol.flags;
let symbolKind = getSymbolKindOfConstructorPropertyMethodAccessorFunctionOrVar(typeChecker, symbol, location);
let hasAddedSymbolInfo: boolean;
@@ -418,6 +419,7 @@ namespace ts.SymbolDisplay {
if (!documentation) {
documentation = symbol.getDocumentationComment();
tags = symbol.getJsDocTags();
if (documentation.length === 0 && symbol.flags & SymbolFlags.Property) {
// For some special property access expressions like `exports.foo = foo` or `module.exports.foo = foo`
// there documentation comments might be attached to the right hand side symbol of their declarations.
@@ -434,6 +436,7 @@ namespace ts.SymbolDisplay {
}
documentation = rhsSymbol.getDocumentationComment();
tags = rhsSymbol.getJsDocTags();
if (documentation.length > 0) {
break;
}
@@ -442,7 +445,7 @@ namespace ts.SymbolDisplay {
}
}
return { displayParts, documentation, symbolKind };
return { displayParts, documentation, symbolKind, tags };
function addNewLineIfDisplayPartsExist() {
if (displayParts.length) {
@@ -500,6 +503,7 @@ namespace ts.SymbolDisplay {
displayParts.push(punctuationPart(SyntaxKind.CloseParenToken));
}
documentation = signature.getDocumentationComment();
tags = signature.getJsDocTags();
}
function writeTypeParametersOfSymbol(symbol: Symbol, enclosingDeclaration: Node) {

View File

@@ -27,6 +27,7 @@ namespace ts {
getName(): string;
getDeclarations(): Declaration[];
getDocumentationComment(): SymbolDisplayPart[];
getJsDocTags(): JSDocTagInfo[];
}
export interface Type {
@@ -49,6 +50,7 @@ namespace ts {
getParameters(): Symbol[];
getReturnType(): Type;
getDocumentationComment(): SymbolDisplayPart[];
getJsDocTags(): JSDocTagInfo[];
}
export interface SourceFile {
@@ -519,12 +521,18 @@ namespace ts {
kind: string; // A ScriptElementKind
}
export interface JSDocTagInfo {
name: string;
text?: string;
}
export interface QuickInfo {
kind: string;
kindModifiers: string;
textSpan: TextSpan;
displayParts: SymbolDisplayPart[];
documentation: SymbolDisplayPart[];
tags: JSDocTagInfo[];
}
export interface RenameInfo {
@@ -558,6 +566,7 @@ namespace ts {
separatorDisplayParts: SymbolDisplayPart[];
parameters: SignatureHelpParameter[];
documentation: SymbolDisplayPart[];
tags: JSDocTagInfo[];
}
/**
@@ -601,6 +610,7 @@ namespace ts {
kindModifiers: string; // see ScriptElementKindModifier, comma separated
displayParts: SymbolDisplayPart[];
documentation: SymbolDisplayPart[];
tags: JSDocTagInfo[];
}
export interface OutliningSpan {

View File

@@ -1,12 +1,9 @@
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractManyKeywords.ts(1,25): error TS1005: ';' expected.
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractManyKeywords.ts(3,1): error TS1128: Declaration or statement expected.
tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractManyKeywords.ts(4,17): error TS1005: '=' expected.
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractManyKeywords.ts (3 errors) ====
==== tests/cases/conformance/classes/classDeclarations/classAbstractKeyword/classAbstractManyKeywords.ts (2 errors) ====
export default abstract class A {}
~~~~~
!!! error TS1005: ';' expected.
export abstract class B {}
default abstract class C {}
~~~~~~~

View File

@@ -7,12 +7,12 @@ import abstract class D {}
//// [classAbstractManyKeywords.js]
"use strict";
exports.__esModule = true;
exports["default"] = abstract;
var A = (function () {
function A() {
}
return A;
}());
exports["default"] = A;
var B = (function () {
function B() {
}
@@ -24,7 +24,6 @@ var C = (function () {
}
return C;
}());
var abstract = ;
var D = (function () {
function D() {
}

View File

@@ -0,0 +1,37 @@
//// [controlFlowSuperPropertyAccess.ts]
class B {
protected m?(): void;
}
class C extends B {
body() {
super.m && super.m();
}
}
//// [controlFlowSuperPropertyAccess.js]
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var B = (function () {
function B() {
}
return B;
}());
var C = (function (_super) {
__extends(C, _super);
function C() {
return _super !== null && _super.apply(this, arguments) || this;
}
C.prototype.body = function () {
_super.prototype.m && _super.prototype.m.call(this);
};
return C;
}(B));

View File

@@ -0,0 +1,24 @@
=== tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts ===
class B {
>B : Symbol(B, Decl(controlFlowSuperPropertyAccess.ts, 0, 0))
protected m?(): void;
>m : Symbol(B.m, Decl(controlFlowSuperPropertyAccess.ts, 0, 9))
}
class C extends B {
>C : Symbol(C, Decl(controlFlowSuperPropertyAccess.ts, 2, 1))
>B : Symbol(B, Decl(controlFlowSuperPropertyAccess.ts, 0, 0))
body() {
>body : Symbol(C.body, Decl(controlFlowSuperPropertyAccess.ts, 3, 19))
super.m && super.m();
>super.m : Symbol(B.m, Decl(controlFlowSuperPropertyAccess.ts, 0, 9))
>super : Symbol(B, Decl(controlFlowSuperPropertyAccess.ts, 0, 0))
>m : Symbol(B.m, Decl(controlFlowSuperPropertyAccess.ts, 0, 9))
>super.m : Symbol(B.m, Decl(controlFlowSuperPropertyAccess.ts, 0, 9))
>super : Symbol(B, Decl(controlFlowSuperPropertyAccess.ts, 0, 0))
>m : Symbol(B.m, Decl(controlFlowSuperPropertyAccess.ts, 0, 9))
}
}

View File

@@ -0,0 +1,26 @@
=== tests/cases/conformance/controlFlow/controlFlowSuperPropertyAccess.ts ===
class B {
>B : B
protected m?(): void;
>m : (() => void) | undefined
}
class C extends B {
>C : C
>B : B
body() {
>body : () => void
super.m && super.m();
>super.m && super.m() : void | undefined
>super.m : (() => void) | undefined
>super : B
>m : (() => void) | undefined
>super.m() : void
>super.m : () => void
>super : B
>m : () => void
}
}

View File

@@ -1,11 +1,4 @@
//// [emitClassDeclarationWithPropertyAccessInHeritageClause1.ts]
interface I {}
interface CTor {
new (hour: number, minute: number): I
}
var x: {
B : CTor
};
class B {}
function foo() {
return {B: B};
@@ -23,7 +16,6 @@ var __extends = (this && this.__extends) || (function () {
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
var x;
var B = (function () {
function B() {
}

View File

@@ -1,36 +1,17 @@
=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts ===
interface I {}
>I : Symbol(I, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0))
interface CTor {
>CTor : Symbol(CTor, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 14))
new (hour: number, minute: number): I
>hour : Symbol(hour, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 9))
>minute : Symbol(minute, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 22))
>I : Symbol(I, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0))
}
var x: {
>x : Symbol(x, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 4, 3))
B : CTor
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 4, 8))
>CTor : Symbol(CTor, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 14))
};
class B {}
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 6, 2))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0))
function foo() {
>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 7, 10))
>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 10))
return {B: B};
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 6, 2))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0))
}
class C extends (foo()).B {}
>C : Symbol(C, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 10, 1))
>(foo()).B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12))
>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 7, 10))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12))
>C : Symbol(C, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 3, 1))
>(foo()).B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12))
>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 10))
>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12))

View File

@@ -1,23 +1,4 @@
=== tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts ===
interface I {}
>I : I
interface CTor {
>CTor : CTor
new (hour: number, minute: number): I
>hour : number
>minute : number
>I : I
}
var x: {
>x : { B: CTor; }
B : CTor
>B : CTor
>CTor : CTor
};
class B {}
>B : B

View File

@@ -0,0 +1,21 @@
//// [tests/cases/compiler/exportDefaultAbstractClass.ts] ////
//// [a.ts]
export default abstract class A {}
//// [b.ts]
import A from './a'
//// [a.js]
"use strict";
exports.__esModule = true;
var A = (function () {
function A() {
}
return A;
}());
exports["default"] = A;
//// [b.js]
"use strict";
exports.__esModule = true;

View File

@@ -0,0 +1,8 @@
=== tests/cases/compiler/a.ts ===
export default abstract class A {}
>A : Symbol(A, Decl(a.ts, 0, 0))
=== tests/cases/compiler/b.ts ===
import A from './a'
>A : Symbol(A, Decl(b.ts, 0, 6))

View File

@@ -0,0 +1,8 @@
=== tests/cases/compiler/a.ts ===
export default abstract class A {}
>A : A
=== tests/cases/compiler/b.ts ===
import A from './a'
>A : typeof A

View File

@@ -0,0 +1,671 @@
[
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 981
},
"quickInfo": {
"kind": "constructor",
"kindModifiers": "",
"textSpan": {
"start": 981,
"length": 3
},
"displayParts": [
{
"text": "constructor",
"kind": "keyword"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": "value",
"kind": "parameterName"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "number",
"kind": "keyword"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
}
],
"documentation": [
{
"text": "This is the constructor.",
"kind": "text"
}
],
"tags": [
{
"name": "myjsdoctag",
"text": "this is a comment"
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 985
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 989
},
"quickInfo": {
"kind": "class",
"kindModifiers": "",
"textSpan": {
"start": 989,
"length": 3
},
"displayParts": [
{
"text": "class",
"kind": "keyword"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
}
],
"documentation": [
{
"text": "This is class Foo.",
"kind": "text"
}
],
"tags": [
{
"name": "mytag",
"text": "comment1 comment2"
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 993
},
"quickInfo": {
"kind": "method",
"kindModifiers": "static",
"textSpan": {
"start": 993,
"length": 7
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "method",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "method1",
"kind": "methodName"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "void",
"kind": "keyword"
}
],
"documentation": [
{
"text": "method1 documentation",
"kind": "text"
}
],
"tags": [
{
"name": "mytag",
"text": "comment1 comment2"
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1001
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1008
},
"quickInfo": {
"kind": "method",
"kindModifiers": "",
"textSpan": {
"start": 1008,
"length": 7
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "method",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "method2",
"kind": "methodName"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "void",
"kind": "keyword"
}
],
"documentation": [],
"tags": [
{
"name": "mytag",
"text": ""
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1016
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1023
},
"quickInfo": {
"kind": "method",
"kindModifiers": "",
"textSpan": {
"start": 1023,
"length": 7
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "method",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "method3",
"kind": "methodName"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "number",
"kind": "keyword"
}
],
"documentation": [],
"tags": []
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1031
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1038
},
"quickInfo": {
"kind": "method",
"kindModifiers": "",
"textSpan": {
"start": 1038,
"length": 7
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "method",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "method4",
"kind": "methodName"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": "foo",
"kind": "parameterName"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "string",
"kind": "keyword"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "number",
"kind": "keyword"
}
],
"documentation": [],
"tags": [
{
"name": "mytag",
"text": ""
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1053
},
"quickInfo": {
"kind": "property",
"kindModifiers": "",
"textSpan": {
"start": 1053,
"length": 9
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "property",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "property1",
"kind": "propertyName"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "string",
"kind": "keyword"
}
],
"documentation": [],
"tags": [
{
"name": "mytag",
"text": "comment1 comment2"
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1068
},
"quickInfo": {
"kind": "property",
"kindModifiers": "",
"textSpan": {
"start": 1068,
"length": 9
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "property",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "property2",
"kind": "propertyName"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "number",
"kind": "keyword"
}
],
"documentation": [],
"tags": [
{
"name": "mytag1",
"text": "some comments\nsome more comments about mytag1"
},
{
"name": "mytag2",
"text": "here all the comments are on a new line"
},
{
"name": "mytag3",
"text": ""
},
{
"name": "mytag",
"text": ""
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1083
},
"quickInfo": {
"kind": "method",
"kindModifiers": "",
"textSpan": {
"start": 1083,
"length": 7
},
"displayParts": [
{
"text": "(",
"kind": "punctuation"
},
{
"text": "method",
"kind": "text"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "Foo",
"kind": "className"
},
{
"text": ".",
"kind": "punctuation"
},
{
"text": "method5",
"kind": "methodName"
},
{
"text": "(",
"kind": "punctuation"
},
{
"text": ")",
"kind": "punctuation"
},
{
"text": ":",
"kind": "punctuation"
},
{
"text": " ",
"kind": "space"
},
{
"text": "void",
"kind": "keyword"
}
],
"documentation": [],
"tags": [
{
"name": "mytag",
"text": ""
}
]
}
},
{
"marker": {
"fileName": "/tests/cases/fourslash/jsDocTags.ts",
"position": 1104
},
"quickInfo": {
"kind": "",
"kindModifiers": "",
"textSpan": {
"start": 1098,
"length": 6
},
"displayParts": [
{
"text": "any",
"kind": "keyword"
}
]
}
}
]

View File

@@ -0,0 +1,19 @@
//// [jsdocInTypeScript.ts]
// JSDoc typedef tags are not bound TypeScript files.
/** @typedef {function} T */
declare const x: T;
class T {
prop: number;
}
x.prop;
//// [jsdocInTypeScript.js]
var T = (function () {
function T() {
}
return T;
}());
x.prop;

View File

@@ -0,0 +1,19 @@
=== tests/cases/compiler/jsdocInTypeScript.ts ===
// JSDoc typedef tags are not bound TypeScript files.
/** @typedef {function} T */
declare const x: T;
>x : Symbol(x, Decl(jsdocInTypeScript.ts, 2, 13))
>T : Symbol(T, Decl(jsdocInTypeScript.ts, 2, 19))
class T {
>T : Symbol(T, Decl(jsdocInTypeScript.ts, 2, 19))
prop: number;
>prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9))
}
x.prop;
>x.prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9))
>x : Symbol(x, Decl(jsdocInTypeScript.ts, 2, 13))
>prop : Symbol(T.prop, Decl(jsdocInTypeScript.ts, 4, 9))

View File

@@ -0,0 +1,19 @@
=== tests/cases/compiler/jsdocInTypeScript.ts ===
// JSDoc typedef tags are not bound TypeScript files.
/** @typedef {function} T */
declare const x: T;
>x : T
>T : T
class T {
>T : T
prop: number;
>prop : number
}
x.prop;
>x.prop : number
>x : T
>prop : number

View File

@@ -73,7 +73,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -122,7 +123,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -223,7 +225,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -272,7 +275,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -321,7 +325,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -398,7 +403,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -447,7 +453,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -508,7 +515,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -66,7 +67,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -115,7 +117,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -164,7 +167,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -193,7 +197,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -53,7 +53,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -110,7 +111,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -167,7 +169,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -224,7 +227,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -281,7 +285,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -338,7 +343,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -395,7 +401,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -452,7 +459,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -509,7 +517,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -566,7 +575,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -623,7 +633,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -680,7 +691,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -737,7 +749,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -794,7 +807,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -851,7 +865,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -908,7 +923,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -965,7 +981,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1022,7 +1039,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1079,7 +1097,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1136,7 +1155,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1193,7 +1213,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1250,7 +1271,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1307,7 +1329,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1364,7 +1387,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1405,7 +1429,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1462,7 +1487,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1491,7 +1517,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1548,7 +1575,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1589,7 +1617,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1646,7 +1675,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1675,7 +1705,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1732,7 +1763,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -45,7 +45,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -86,7 +87,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -135,7 +137,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -184,7 +187,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -213,7 +217,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -306,7 +311,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -399,7 +405,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -492,7 +499,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -533,7 +541,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -626,7 +635,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -667,7 +677,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -760,7 +771,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -809,7 +821,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -838,7 +851,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -931,7 +945,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1024,7 +1039,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1117,7 +1133,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1210,7 +1227,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1251,7 +1269,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1344,7 +1363,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1385,7 +1405,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1478,7 +1499,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1519,7 +1541,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1612,7 +1635,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1661,7 +1685,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1690,7 +1715,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -61,7 +61,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -126,7 +127,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -191,7 +193,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -256,7 +259,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -321,7 +325,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -386,7 +391,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -451,7 +457,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -516,7 +523,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -581,7 +589,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -646,7 +655,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -711,7 +721,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -776,7 +787,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -817,7 +829,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -882,7 +895,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -911,7 +925,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -976,7 +991,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -53,7 +53,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -110,7 +111,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -167,7 +169,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -224,7 +227,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -281,7 +285,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -338,7 +343,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -395,7 +401,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -452,7 +459,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -509,7 +517,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -566,7 +575,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -623,7 +633,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -680,7 +691,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -721,7 +733,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -778,7 +791,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -807,7 +821,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -864,7 +879,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -78,7 +79,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -119,7 +121,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -160,7 +163,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -201,7 +205,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -250,7 +255,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -291,7 +297,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -352,7 +359,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -413,7 +421,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -474,7 +483,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -535,7 +545,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -680,7 +691,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -825,7 +837,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -970,7 +983,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1075,7 +1089,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1180,7 +1195,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -86,7 +87,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -147,7 +149,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -208,7 +211,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -249,7 +253,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -278,7 +283,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -319,7 +325,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -348,7 +355,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -409,7 +417,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -450,7 +459,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -479,7 +489,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -540,7 +551,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -581,7 +593,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -610,7 +623,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -671,7 +685,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -708,7 +723,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -769,7 +785,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -830,7 +847,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -891,7 +909,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -932,7 +951,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -969,7 +989,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1010,7 +1031,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1047,7 +1069,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1108,7 +1131,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1149,7 +1173,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1186,7 +1211,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1247,7 +1273,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1288,7 +1315,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1325,7 +1353,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1386,7 +1415,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -90,7 +91,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -155,7 +157,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -220,7 +223,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -261,7 +265,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -290,7 +295,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -331,7 +337,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -360,7 +367,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -425,7 +433,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -466,7 +475,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -495,7 +505,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -560,7 +571,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -601,7 +613,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -630,7 +643,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -695,7 +709,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -732,7 +747,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -797,7 +813,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -862,7 +879,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -927,7 +945,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -968,7 +987,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1005,7 +1025,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1046,7 +1067,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1083,7 +1105,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1148,7 +1171,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1189,7 +1213,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1226,7 +1251,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1291,7 +1317,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1332,7 +1359,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1369,7 +1397,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1434,7 +1463,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -90,7 +91,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -155,7 +157,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -220,7 +223,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -261,7 +265,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -290,7 +295,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -331,7 +337,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -360,7 +367,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -425,7 +433,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -466,7 +475,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -495,7 +505,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -560,7 +571,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -601,7 +613,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -630,7 +643,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -695,7 +709,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -732,7 +747,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -797,7 +813,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -862,7 +879,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -927,7 +945,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -968,7 +987,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1005,7 +1025,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1046,7 +1067,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1083,7 +1105,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1148,7 +1171,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1189,7 +1213,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1226,7 +1251,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1291,7 +1317,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1332,7 +1359,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1369,7 +1397,8 @@
"kind": "enumName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1434,7 +1463,8 @@
"kind": "numericLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -53,7 +53,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -82,7 +83,8 @@
"kind": "aliasName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -139,7 +141,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -196,7 +199,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -225,7 +229,8 @@
"kind": "aliasName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -282,7 +287,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -66,7 +67,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -115,7 +117,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -164,7 +167,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -193,7 +197,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -242,7 +247,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -271,7 +277,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -300,7 +307,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -337,7 +345,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -378,7 +387,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -435,7 +445,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -492,7 +503,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -521,7 +533,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -558,7 +571,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -615,7 +629,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -644,7 +659,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -681,7 +697,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -153,7 +153,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -246,7 +247,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -339,7 +341,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -432,7 +435,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -525,7 +529,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -618,7 +623,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -711,7 +717,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -804,7 +811,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -961,7 +969,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1054,7 +1063,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1147,7 +1157,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1240,7 +1251,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1333,7 +1345,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1426,7 +1439,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -57,7 +57,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -114,7 +115,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -171,7 +173,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -232,7 +235,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -289,7 +293,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -346,7 +351,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -66,7 +67,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -95,7 +97,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -53,7 +53,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -118,7 +119,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -159,7 +161,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -216,7 +219,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -257,7 +261,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -322,7 +327,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -387,7 +393,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -428,7 +435,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -501,7 +509,8 @@
"kind": "interfaceName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -78,7 +79,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -119,7 +121,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -160,7 +163,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -201,7 +205,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -250,7 +255,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -291,7 +297,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -352,7 +359,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -413,7 +421,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -474,7 +483,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -535,7 +545,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -680,7 +691,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -825,7 +837,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -970,7 +983,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1075,7 +1089,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1180,7 +1195,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -65,7 +65,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -130,7 +131,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -195,7 +197,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -264,7 +267,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -333,7 +337,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -402,7 +407,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -467,7 +473,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -532,7 +539,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -597,7 +605,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -666,7 +675,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -45,7 +45,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -210,7 +211,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -311,7 +313,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -412,7 +415,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -513,7 +517,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -614,7 +619,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -715,7 +721,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -816,7 +823,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -917,7 +925,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1082,7 +1091,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1183,7 +1193,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1284,7 +1295,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1385,7 +1397,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1486,7 +1499,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1587,7 +1601,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1636,7 +1651,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -66,7 +67,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -115,7 +117,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -164,7 +167,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -193,7 +197,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -242,7 +247,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -271,7 +277,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -300,7 +307,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -337,7 +345,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -378,7 +387,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -435,7 +445,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -492,7 +503,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -521,7 +533,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -558,7 +571,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -615,7 +629,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -644,7 +659,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -681,7 +697,8 @@
"kind": "moduleName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -153,7 +153,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -202,7 +203,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -251,7 +253,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -300,7 +303,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -357,7 +361,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -406,7 +411,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -455,7 +461,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -504,7 +511,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -561,7 +569,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -25,7 +25,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -70,7 +71,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -99,7 +101,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -140,7 +143,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -185,7 +189,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -234,7 +239,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -102,7 +103,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -191,7 +193,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -240,7 +243,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -305,7 +309,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -434,7 +439,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -579,7 +585,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -628,7 +635,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -773,7 +781,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -822,7 +831,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -887,7 +897,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -936,7 +947,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -989,7 +1001,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1078,7 +1091,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1127,7 +1141,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1168,7 +1183,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1221,7 +1237,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1350,7 +1367,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1419,7 +1437,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1512,7 +1531,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1553,7 +1573,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1670,7 +1691,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1747,7 +1769,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1840,7 +1863,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2025,7 +2049,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2226,7 +2251,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2267,7 +2293,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2344,7 +2371,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2545,7 +2573,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2622,7 +2651,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2715,7 +2745,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2792,7 +2823,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2857,7 +2889,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2982,7 +3015,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3035,7 +3069,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3084,7 +3119,8 @@
"kind": "className"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3153,7 +3189,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3218,7 +3255,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3407,7 +3445,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3460,7 +3499,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3513,7 +3553,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -73,7 +73,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -174,7 +175,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -223,7 +225,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -324,7 +327,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -373,7 +377,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -450,7 +455,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -543,7 +549,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -660,7 +667,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -725,7 +733,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -842,7 +851,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -907,7 +917,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -984,7 +995,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -69,7 +69,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -142,7 +143,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -215,7 +217,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -102,7 +103,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -231,7 +233,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -280,7 +283,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -409,7 +413,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -458,7 +463,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -523,7 +529,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -652,7 +659,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -773,7 +781,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -822,7 +831,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -943,7 +953,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -992,7 +1003,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1057,7 +1069,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1178,7 +1191,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1307,7 +1321,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1452,7 +1467,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1501,7 +1517,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1646,7 +1663,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1695,7 +1713,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1760,7 +1779,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1905,7 +1925,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1958,7 +1979,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1999,7 +2021,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2124,7 +2147,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2241,7 +2265,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2294,7 +2319,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2423,7 +2449,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2492,7 +2519,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2585,7 +2613,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2626,7 +2655,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2783,7 +2813,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2824,7 +2855,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -2901,7 +2933,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3058,7 +3091,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3135,7 +3169,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3228,7 +3263,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3385,7 +3421,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3534,7 +3571,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3575,7 +3613,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3652,7 +3691,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3801,7 +3841,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3878,7 +3919,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -3971,7 +4013,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4120,7 +4163,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4305,7 +4349,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4506,7 +4551,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4547,7 +4593,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4624,7 +4671,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4825,7 +4873,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4902,7 +4951,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -4995,7 +5045,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5196,7 +5247,8 @@
"kind": "typeParameterName"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5261,7 +5313,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5330,7 +5383,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5371,7 +5425,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5544,7 +5599,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5597,7 +5653,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5650,7 +5707,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5815,7 +5873,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5868,7 +5927,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5921,7 +5981,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -5986,7 +6047,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -6175,7 +6237,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -6228,7 +6291,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -6281,7 +6345,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -61,7 +61,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -134,7 +135,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -207,7 +209,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -288,7 +291,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -377,7 +381,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -466,7 +471,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -86,7 +87,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -127,7 +129,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -168,7 +171,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -217,7 +221,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -278,7 +283,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -339,7 +345,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -400,7 +407,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -461,7 +469,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -606,7 +615,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -751,7 +761,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -896,7 +907,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1001,7 +1013,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1106,7 +1119,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -86,7 +87,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -127,7 +129,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -168,7 +171,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -217,7 +221,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -278,7 +283,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -339,7 +345,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -400,7 +407,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -461,7 +469,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -606,7 +615,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -751,7 +761,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -896,7 +907,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1001,7 +1013,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1106,7 +1119,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -86,7 +87,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -127,7 +129,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -168,7 +171,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -217,7 +221,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -278,7 +283,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -339,7 +345,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -400,7 +407,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -461,7 +469,8 @@
"kind": "keyword"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -606,7 +615,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -751,7 +761,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -896,7 +907,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1001,7 +1013,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -1106,7 +1119,8 @@
"kind": "punctuation"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -37,7 +37,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -78,7 +79,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
},
{
@@ -135,7 +137,8 @@
"kind": "stringLiteral"
}
],
"documentation": []
"documentation": [],
"tags": []
}
}
]

View File

@@ -0,0 +1,26 @@
//// [scopeCheckClassProperty.ts]
class C {
constructor() {
new A().p; // ok
}
public x = new A().p; // should also be ok
}
class A {
public p = '';
}
//// [scopeCheckClassProperty.js]
var C = (function () {
function C() {
this.x = new A().p; // should also be ok
new A().p; // ok
}
return C;
}());
var A = (function () {
function A() {
this.p = '';
}
return A;
}());

View File

@@ -0,0 +1,23 @@
=== tests/cases/compiler/scopeCheckClassProperty.ts ===
class C {
>C : Symbol(C, Decl(scopeCheckClassProperty.ts, 0, 0))
constructor() {
new A().p; // ok
>new A().p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9))
>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1))
>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9))
}
public x = new A().p; // should also be ok
>x : Symbol(C.x, Decl(scopeCheckClassProperty.ts, 3, 3))
>new A().p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9))
>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1))
>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9))
}
class A {
>A : Symbol(A, Decl(scopeCheckClassProperty.ts, 5, 1))
public p = '';
>p : Symbol(A.p, Decl(scopeCheckClassProperty.ts, 6, 9))
}

View File

@@ -0,0 +1,26 @@
=== tests/cases/compiler/scopeCheckClassProperty.ts ===
class C {
>C : C
constructor() {
new A().p; // ok
>new A().p : string
>new A() : A
>A : typeof A
>p : string
}
public x = new A().p; // should also be ok
>x : string
>new A().p : string
>new A() : A
>A : typeof A
>p : string
}
class A {
>A : A
public p = '';
>p : string
>'' : ""
}

View File

@@ -0,0 +1,5 @@
// @filename: a.ts
export default abstract class A {}
// @filename: b.ts
import A from './a'

View File

@@ -0,0 +1,9 @@
// JSDoc typedef tags are not bound TypeScript files.
/** @typedef {function} T */
declare const x: T;
class T {
prop: number;
}
x.prop;

View File

@@ -0,0 +1,9 @@
class C {
constructor() {
new A().p; // ok
}
public x = new A().p; // should also be ok
}
class A {
public p = '';
}

View File

@@ -0,0 +1,9 @@
// @strictNullChecks: true
class B {
protected m?(): void;
}
class C extends B {
body() {
super.m && super.m();
}
}

View File

@@ -1,10 +1,3 @@
interface I {}
interface CTor {
new (hour: number, minute: number): I
}
var x: {
B : CTor
};
class B {}
function foo() {
return {B: B};

View File

@@ -1,12 +1,5 @@
/// <reference path="fourslash.ts" />
//// interface I {}
//// interface CTor {
//// new (hour: number, minute: number): I
//// }
//// var x: {
//// B : CTor
//// };
//// class B {}
//// function foo() {
//// return {[|B|]: B};
@@ -14,7 +7,7 @@
//// class C extends (foo()).[|B|] {}
//// class C1 extends foo().[|B|] {}
const [def, ref1, ref2] = test.ranges();
verify.referencesOf(ref1, [def, ref1, ref2]);
verify.referencesOf(ref2, [def, ref1, ref2]);
verify.referencesOf(def, [def, ref1, ref2]);
const ranges = test.ranges();
for (const range of ranges) {
verify.referencesOf(range, ranges);
}

View File

@@ -208,6 +208,7 @@ declare namespace FourSlashInterface {
currentParameterSpanIs(parameter: string): void;
currentParameterHelpArgumentDocCommentIs(docComment: string): void;
currentSignatureHelpDocCommentIs(docComment: string): void;
currentSignatureHelpTagsAre(tags: ts.JSDocTagInfo[]): void;
signatureHelpCountIs(expected: number): void;
signatureHelpArgumentCountIs(expected: number): void;
signatureHelpCurrentArgumentListIsVariadic(expected: boolean);
@@ -269,7 +270,7 @@ declare namespace FourSlashInterface {
verifyQuickInfoDisplayParts(kind: string, kindModifiers: string, textSpan: {
start: number;
length: number;
}, displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[]): void;
}, displayParts: ts.SymbolDisplayPart[], documentation: ts.SymbolDisplayPart[], tags: ts.JSDocTagInfo[]): void;
getSyntacticDiagnostics(expected: string): void;
getSemanticDiagnostics(expected: string): void;
ProjectInfo(expected: string[]): void;

View File

@@ -1,12 +1,5 @@
/// <reference path='fourslash.ts' />
//// interface I {}
//// interface CTor {
//// new (hour: number, minute: number): I
//// }
//// var x: {
//// B : CTor
//// };
//// class B {}
//// function foo() {
//// return {/*refB*/B: B};

View File

@@ -0,0 +1,12 @@
///<reference path="fourslash.ts" />
// @allowJs: true
// @Filename: a.js
//// exports.x = 0;
// @Filename: consumer.js
//// var a = require(`./a`);
//// a./**/;
goTo.marker();
verify.completionListContains("x");

View File

@@ -19,4 +19,5 @@ verify.verifyQuickInfoDisplayParts('function',
{"text": " ", "kind": "space"},
{"text": "void", "kind": "keyword"}
],
[{"text": "first line of the comment\n\nthird line ", "kind": "text"}]);
[{"text": "first line of the comment\n\nthird line ", "kind": "text"}],
[]);

View File

@@ -0,0 +1,75 @@
///<reference path="fourslash.ts" />
//// /**
//// * This is class Foo.
//// * @mytag comment1 comment2
//// */
//// class Foo {
//// /**
//// * This is the constructor.
//// * @myjsdoctag this is a comment
//// */
//// constructor(value: number) {}
//// /**
//// * method1 documentation
//// * @mytag comment1 comment2
//// */
//// static method1() {}
//// /**
//// * @mytag
//// */
//// method2() {}
//// /**
//// * @mytag comment1 comment2
//// */
//// property1: string;
//// /**
//// * @mytag1 some comments
//// * some more comments about mytag1
//// * @mytag2
//// * here all the comments are on a new line
//// * @mytag3
//// * @mytag
//// */
//// property2: number;
//// /**
//// * @returns {number} a value
//// */
//// method3(): number { return 3; }
//// /**
//// * @param {string} foo A value.
//// * @returns {number} Another value
//// * @mytag
//// */
//// method4(foo: string): number { return 3; }
//// /** @mytag */
//// method5() {}
//// /** method documentation
//// * @mytag a JSDoc tag
//// */
//// newMethod() {}
//// }
//// var foo = new /*1*/Foo(/*10*/4);
//// /*2*/Foo./*3*/method1(/*11*/);
//// foo./*4*/method2(/*12*/);
//// foo./*5*/method3(/*13*/);
//// foo./*6*/method4();
//// foo./*7*/property1;
//// foo./*8*/property2;
//// foo./*9*/method5();
//// foo.newMet/*14*/
verify.baselineQuickInfo();
goTo.marker("10");
verify.currentSignatureHelpTagsAre([{name: "myjsdoctag", text:"this is a comment"}])
goTo.marker("11");
verify.currentSignatureHelpTagsAre([{name: "mytag", text:"comment1 comment2"}])
goTo.marker("12");
verify.currentSignatureHelpTagsAre([{name: "mytag", text:""}])
goTo.marker("13");
verify.currentSignatureHelpTagsAre([])
goTo.marker('14');
verify.completionEntryDetailIs("newMethod", "(method) Foo.newMethod(): void", "method documentation", "method", [{name: "mytag", text: "a JSDoc tag"}]);

View File

@@ -30,7 +30,7 @@ function verifyImport(name: string, assigningDisplay:ts.SymbolDisplayPart[], opt
verify.verifyQuickInfoDisplayParts("alias", optionalParentName ? "export" : "", { start: test.markerByName(marker.toString()).position, length: name.length },
[{ text: "import", kind: "keyword" }, { text: " ", kind: "space" }].concat(moduleNameDisplay).concat(
{ text: " ", kind: "space" }, { text: "=", kind: "operator" }, { text: " ", kind: "space" }).concat(assigningDisplay),
[]);
[], []);
}
var moduleMDisplay = [{ text: "m", kind: "moduleName" }];

View File

@@ -1,12 +1,5 @@
/// <reference path="fourslash.ts" />
//// interface I {}
//// interface CTor {
//// new (hour: number, minute: number): I
//// }
//// var x: {
//// B : CTor
//// };
//// class B {}
//// function foo() {
//// return {[|B|]: B};

View File

@@ -0,0 +1,17 @@
/// <reference path='fourslash.ts'/>
// @checkJs: true
// @allowJs: true
// @Filename: main.js
////function fnTest() { arguments; }
////fnTest(/*1*/);
////fnTest(1, 2, 3);
goTo.marker('1');
verify.signatureHelpCountIs(1);
verify.currentSignatureParameterCountIs(1);
verify.currentSignatureHelpIs('fnTest(...args: any[]): void');
verify.currentParameterHelpArgumentNameIs('args');
verify.currentParameterSpanIs("...args: any[]");
verify.numberOfErrorsInCurrentFile(0);

View File

@@ -28,13 +28,23 @@
"check-separator",
"check-type"
],
"typedef-whitespace": [true, {
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
}],
"typedef-whitespace": [
true,
{
"call-signature": "nospace",
"index-signature": "nospace",
"parameter": "nospace",
"property-declaration": "nospace",
"variable-declaration": "nospace"
},
{
"call-signature": "onespace",
"index-signature": "onespace",
"parameter": "onespace",
"property-declaration": "onespace",
"variable-declaration": "onespace"
}
],
"next-line": [true,
"check-catch",
"check-else"