Merge branch 'master' into usePrependToSkipBuild
This commit is contained in:
commit
03fa5bd90f
|
@ -232,7 +232,7 @@ task("watch-tsserver").flags = {
|
|||
" --built": "Compile using the built version of the compiler."
|
||||
}
|
||||
|
||||
task("min", series(lkgPreBuild, buildTsc, buildServer));
|
||||
task("min", series(lkgPreBuild, parallel(buildTsc, buildServer)));
|
||||
task("min").description = "Builds only tsc and tsserver";
|
||||
task("min").flags = {
|
||||
" --built": "Compile using the built version of the compiler."
|
||||
|
|
|
@ -3715,7 +3715,7 @@ the array literal initializer expression is contextually typed by the implied ty
|
|||
|
||||
## <a name="5.3"/>5.3 Let and Const Declarations
|
||||
|
||||
Let and const declarations are exended to include optional type annotations.
|
||||
Let and const declarations are extended to include optional type annotations.
|
||||
|
||||
  *LexicalBinding:* *( Modified )*
|
||||
   *SimpleLexicalBinding*
|
||||
|
|
|
@ -35,8 +35,8 @@ function createCancellationToken(args: string[]): ServerCancellationToken {
|
|||
}
|
||||
// cancellationPipeName is a string without '*' inside that can optionally end with '*'
|
||||
// when client wants to signal cancellation it should create a named pipe with name=<cancellationPipeName>
|
||||
// server will synchronously check the presence of the pipe and treat its existance as indicator that current request should be canceled.
|
||||
// in case if client prefers to use more fine-grained schema than one name for all request it can add '*' to the end of cancelellationPipeName.
|
||||
// server will synchronously check the presence of the pipe and treat its existence as indicator that current request should be canceled.
|
||||
// in case if client prefers to use more fine-grained schema than one name for all request it can add '*' to the end of cancellationPipeName.
|
||||
// in this case pipe name will be build dynamically as <cancellationPipeName><request_seq>.
|
||||
if (cancellationPipeName.charAt(cancellationPipeName.length - 1) === "*") {
|
||||
const namePrefix = cancellationPipeName.slice(0, -1);
|
||||
|
|
|
@ -550,7 +550,7 @@ namespace ts {
|
|||
}
|
||||
}
|
||||
// We create a return control flow graph for IIFEs and constructors. For constructors
|
||||
// we use the return control flow graph in strict property intialization checks.
|
||||
// we use the return control flow graph in strict property initialization checks.
|
||||
currentReturnTarget = isIIFE || node.kind === SyntaxKind.Constructor ? createBranchLabel() : undefined;
|
||||
currentBreakTarget = undefined;
|
||||
currentContinueTarget = undefined;
|
||||
|
@ -3445,7 +3445,7 @@ namespace ts {
|
|||
// If a FunctionDeclaration is generator function and is the body of a
|
||||
// transformed async function, then this node can be transformed to a
|
||||
// down-level generator.
|
||||
// Currently we do not support transforming any other generator fucntions
|
||||
// Currently we do not support transforming any other generator functions
|
||||
// down level.
|
||||
if (node.asteriskToken) {
|
||||
transformFlags |= TransformFlags.AssertGenerator;
|
||||
|
|
|
@ -27,7 +27,7 @@ namespace ts {
|
|||
currentChangedFilePath: Path | undefined;
|
||||
/**
|
||||
* Map of file signatures, with key being file path, calculated while getting current changed file's affected files
|
||||
* These will be commited whenever the iteration through affected files of current changed file is complete
|
||||
* These will be committed whenever the iteration through affected files of current changed file is complete
|
||||
*/
|
||||
currentAffectedFilesSignatures: Map<string> | undefined;
|
||||
/**
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace ts {
|
|||
*/
|
||||
readonly referencedMap: ReadonlyMap<BuilderState.ReferencedSet> | undefined;
|
||||
/**
|
||||
* Contains the map of exported modules ReferencedSet=exorted module files from the file if module emit is enabled
|
||||
* Contains the map of exported modules ReferencedSet=exported module files from the file if module emit is enabled
|
||||
* Otherwise undefined
|
||||
*/
|
||||
readonly exportedModulesMap: Map<BuilderState.ReferencedSet> | undefined;
|
||||
|
@ -268,9 +268,9 @@ namespace ts.BuilderState {
|
|||
*/
|
||||
export function getFilesAffectedBy(state: BuilderState, programOfThisState: Program, path: Path, cancellationToken: CancellationToken | undefined, computeHash: ComputeHash, cacheToUpdateSignature?: Map<string>, exportedModulesMapCache?: ComputingExportedModulesMap): ReadonlyArray<SourceFile> {
|
||||
// Since the operation could be cancelled, the signatures are always stored in the cache
|
||||
// They will be commited once it is safe to use them
|
||||
// They will be committed once it is safe to use them
|
||||
// eg when calling this api from tsserver, if there is no cancellation of the operation
|
||||
// In the other cases the affected files signatures are commited only after the iteration through the result is complete
|
||||
// In the other cases the affected files signatures are committed only after the iteration through the result is complete
|
||||
const signatureCache = cacheToUpdateSignature || createMap();
|
||||
const sourceFile = programOfThisState.getSourceFileByPath(path);
|
||||
if (!sourceFile) {
|
||||
|
|
|
@ -3789,7 +3789,7 @@ namespace ts {
|
|||
context.approximateLength += (symbolName(propertySymbol).length + 1);
|
||||
context.enclosingDeclaration = saveEnclosingDeclaration;
|
||||
const optionalToken = propertySymbol.flags & SymbolFlags.Optional ? createToken(SyntaxKind.QuestionToken) : undefined;
|
||||
if (propertySymbol.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(propertyType).length) {
|
||||
if (propertySymbol.flags & (SymbolFlags.Function | SymbolFlags.Method) && !getPropertiesOfObjectType(propertyType).length && !isReadonlySymbol(propertySymbol)) {
|
||||
const signatures = getSignaturesOfType(propertyType, SignatureKind.Call);
|
||||
for (const signature of signatures) {
|
||||
const methodDeclaration = <MethodSignature>signatureToSignatureDeclarationHelper(signature, SyntaxKind.MethodSignature, context);
|
||||
|
@ -4791,7 +4791,7 @@ namespace ts {
|
|||
if (!isTypeAssignableTo(getLiteralTypeFromProperty(prop, TypeFlags.StringOrNumberLiteralOrUnique), omitKeyType)
|
||||
&& !(getDeclarationModifierFlagsFromSymbol(prop) & (ModifierFlags.Private | ModifierFlags.Protected))
|
||||
&& isSpreadableProperty(prop)) {
|
||||
members.set(prop.escapedName, getSpreadSymbol(prop));
|
||||
members.set(prop.escapedName, getSpreadSymbol(prop, /*readonly*/ false));
|
||||
}
|
||||
}
|
||||
const stringIndexInfo = getIndexInfoOfType(source, IndexKind.String);
|
||||
|
@ -4866,17 +4866,8 @@ namespace ts {
|
|||
function getTypeForBindingElement(declaration: BindingElement): Type | undefined {
|
||||
const pattern = declaration.parent;
|
||||
let parentType = getTypeForBindingElementParent(pattern.parent);
|
||||
// If parent has the unknown (error) type, then so does this binding element
|
||||
if (parentType === errorType) {
|
||||
return errorType;
|
||||
}
|
||||
// If no type was specified or inferred for parent,
|
||||
// infer from the initializer of the binding element if one is present.
|
||||
// Otherwise, go with the undefined type of the parent.
|
||||
if (!parentType) {
|
||||
return declaration.initializer ? checkDeclarationInitializer(declaration) : parentType;
|
||||
}
|
||||
if (isTypeAny(parentType)) {
|
||||
// If no type or an any type was inferred for parent, infer that for the binding element
|
||||
if (!parentType || isTypeAny(parentType)) {
|
||||
return parentType;
|
||||
}
|
||||
// Relax null check on ambient destructuring parameters, since the parameters have no implementation and are just documentation
|
||||
|
@ -4962,6 +4953,12 @@ namespace ts {
|
|||
return strictNullChecks && optional ? getOptionalType(type) : type;
|
||||
}
|
||||
|
||||
function isParameterOfContextuallyTypedFunction(node: Declaration) {
|
||||
return node.kind === SyntaxKind.Parameter &&
|
||||
(node.parent.kind === SyntaxKind.FunctionExpression || node.parent.kind === SyntaxKind.ArrowFunction) &&
|
||||
!!getContextualType(<Expression>node.parent);
|
||||
}
|
||||
|
||||
// Return the inferred type for a variable, parameter, or property declaration
|
||||
function getTypeForVariableLikeDeclaration(declaration: ParameterDeclaration | PropertyDeclaration | PropertySignature | VariableDeclaration | BindingElement, includeOptionality: boolean): Type | undefined {
|
||||
// A variable declared in a for..in statement is of type string, or of type keyof T when the
|
||||
|
@ -5045,8 +5042,9 @@ namespace ts {
|
|||
}
|
||||
}
|
||||
|
||||
// Use the type of the initializer expression if one is present
|
||||
if (declaration.initializer) {
|
||||
// Use the type of the initializer expression if one is present and the declaration is
|
||||
// not a parameter of a contextually typed function
|
||||
if (declaration.initializer && !isParameterOfContextuallyTypedFunction(declaration)) {
|
||||
const type = checkDeclarationInitializer(declaration);
|
||||
return addOptionality(type, isOptional);
|
||||
}
|
||||
|
@ -5057,8 +5055,9 @@ namespace ts {
|
|||
return trueType;
|
||||
}
|
||||
|
||||
// If the declaration specifies a binding pattern, use the type implied by the binding pattern
|
||||
if (isBindingPattern(declaration.name)) {
|
||||
// If the declaration specifies a binding pattern and is not a parameter of a contextually
|
||||
// typed function, use the type implied by the binding pattern
|
||||
if (isBindingPattern(declaration.name) && !isParameterOfContextuallyTypedFunction(declaration)) {
|
||||
return getTypeFromBindingPattern(declaration.name, /*includePatternInType*/ false, /*reportErrors*/ true);
|
||||
}
|
||||
|
||||
|
@ -5695,17 +5694,21 @@ namespace ts {
|
|||
}
|
||||
|
||||
function reportCircularityError(symbol: Symbol) {
|
||||
const declaration = <VariableLikeDeclaration>symbol.valueDeclaration;
|
||||
// Check if variable has type annotation that circularly references the variable itself
|
||||
if (getEffectiveTypeAnnotationNode(<VariableLikeDeclaration>symbol.valueDeclaration)) {
|
||||
if (getEffectiveTypeAnnotationNode(declaration)) {
|
||||
error(symbol.valueDeclaration, Diagnostics._0_is_referenced_directly_or_indirectly_in_its_own_type_annotation,
|
||||
symbolToString(symbol));
|
||||
return errorType;
|
||||
}
|
||||
// Otherwise variable has initializer that circularly references the variable itself
|
||||
if (noImplicitAny) {
|
||||
// Check if variable has initializer that circularly references the variable itself
|
||||
if (noImplicitAny && (declaration.kind !== SyntaxKind.Parameter || (<HasInitializer>declaration).initializer)) {
|
||||
error(symbol.valueDeclaration, Diagnostics._0_implicitly_has_type_any_because_it_does_not_have_a_type_annotation_and_is_referenced_directly_or_indirectly_in_its_own_initializer,
|
||||
symbolToString(symbol));
|
||||
}
|
||||
// Circularities could also result from parameters in function expressions that end up
|
||||
// having themselves as contextual types following type argument inference. In those cases
|
||||
// we have already reported an implicit any error so we don't report anything here.
|
||||
return anyType;
|
||||
}
|
||||
|
||||
|
@ -6315,7 +6318,7 @@ namespace ts {
|
|||
return false;
|
||||
}
|
||||
|
||||
/** A type parameter is thisless if its contraint is thisless, or if it has no constraint. */
|
||||
/** A type parameter is thisless if its constraint is thisless, or if it has no constraint. */
|
||||
function isThislessTypeParameter(node: TypeParameterDeclaration) {
|
||||
const constraint = getEffectiveConstraintOfTypeParameter(node);
|
||||
return !constraint || isThislessType(constraint);
|
||||
|
@ -9121,7 +9124,7 @@ namespace ts {
|
|||
function createTupleType(elementTypes: ReadonlyArray<Type>, minLength = elementTypes.length, hasRestElement = false, readonly = false, associatedNames?: __String[]) {
|
||||
const arity = elementTypes.length;
|
||||
if (arity === 1 && hasRestElement) {
|
||||
return createArrayType(elementTypes[0]);
|
||||
return createArrayType(elementTypes[0], readonly);
|
||||
}
|
||||
const tupleType = getTupleTypeOfArity(arity, minLength, arity > 0 && hasRestElement, readonly, associatedNames);
|
||||
return elementTypes.length ? createTypeReference(tupleType, elementTypes) : tupleType;
|
||||
|
@ -10038,10 +10041,10 @@ namespace ts {
|
|||
if (checkType.flags & TypeFlags.Any) {
|
||||
return getUnionType([instantiateType(root.trueType, combinedMapper || mapper), instantiateType(root.falseType, mapper)]);
|
||||
}
|
||||
// Return falseType for a definitely false extends check. We check an instantations of the two
|
||||
// Return falseType for a definitely false extends check. We check an instantiations of the two
|
||||
// types with type parameters mapped to the wildcard type, the most permissive instantiations
|
||||
// possible (the wildcard type is assignable to and from all types). If those are not related,
|
||||
// then no instatiations will be and we can just return the false branch type.
|
||||
// then no instantiations will be and we can just return the false branch type.
|
||||
if (!isTypeAssignableTo(getPermissiveInstantiation(checkType), getPermissiveInstantiation(inferredExtendsType))) {
|
||||
return instantiateType(root.falseType, mapper);
|
||||
}
|
||||
|
@ -10255,7 +10258,7 @@ namespace ts {
|
|||
* this function should be called in a left folding style, with left = previous result of getSpreadType
|
||||
* and right = the new element to be spread.
|
||||
*/
|
||||
function getSpreadType(left: Type, right: Type, symbol: Symbol | undefined, typeFlags: TypeFlags, objectFlags: ObjectFlags): Type {
|
||||
function getSpreadType(left: Type, right: Type, symbol: Symbol | undefined, typeFlags: TypeFlags, objectFlags: ObjectFlags, readonly: boolean): Type {
|
||||
if (left.flags & TypeFlags.Any || right.flags & TypeFlags.Any) {
|
||||
return anyType;
|
||||
}
|
||||
|
@ -10269,10 +10272,10 @@ namespace ts {
|
|||
return left;
|
||||
}
|
||||
if (left.flags & TypeFlags.Union) {
|
||||
return mapType(left, t => getSpreadType(t, right, symbol, typeFlags, objectFlags));
|
||||
return mapType(left, t => getSpreadType(t, right, symbol, typeFlags, objectFlags, readonly));
|
||||
}
|
||||
if (right.flags & TypeFlags.Union) {
|
||||
return mapType(right, t => getSpreadType(left, t, symbol, typeFlags, objectFlags));
|
||||
return mapType(right, t => getSpreadType(left, t, symbol, typeFlags, objectFlags, readonly));
|
||||
}
|
||||
if (right.flags & (TypeFlags.BooleanLike | TypeFlags.NumberLike | TypeFlags.BigIntLike | TypeFlags.StringLike | TypeFlags.EnumLike | TypeFlags.NonPrimitive | TypeFlags.Index)) {
|
||||
return left;
|
||||
|
@ -10289,7 +10292,7 @@ namespace ts {
|
|||
const types = (<IntersectionType>left).types;
|
||||
const lastLeft = types[types.length - 1];
|
||||
if (isNonGenericObjectType(lastLeft) && isNonGenericObjectType(right)) {
|
||||
return getIntersectionType(concatenate(types.slice(0, types.length - 1), [getSpreadType(lastLeft, right, symbol, typeFlags, objectFlags)]));
|
||||
return getIntersectionType(concatenate(types.slice(0, types.length - 1), [getSpreadType(lastLeft, right, symbol, typeFlags, objectFlags, readonly)]));
|
||||
}
|
||||
}
|
||||
return getIntersectionType([left, right]);
|
||||
|
@ -10314,7 +10317,7 @@ namespace ts {
|
|||
skippedPrivateMembers.set(rightProp.escapedName, true);
|
||||
}
|
||||
else if (isSpreadableProperty(rightProp)) {
|
||||
members.set(rightProp.escapedName, getSpreadSymbol(rightProp));
|
||||
members.set(rightProp.escapedName, getSpreadSymbol(rightProp, readonly));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10338,7 +10341,7 @@ namespace ts {
|
|||
}
|
||||
}
|
||||
else {
|
||||
members.set(leftProp.escapedName, getSpreadSymbol(leftProp));
|
||||
members.set(leftProp.escapedName, getSpreadSymbol(leftProp, readonly));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -10347,8 +10350,8 @@ namespace ts {
|
|||
members,
|
||||
emptyArray,
|
||||
emptyArray,
|
||||
getNonReadonlyIndexSignature(stringIndexInfo),
|
||||
getNonReadonlyIndexSignature(numberIndexInfo));
|
||||
getIndexInfoWithReadonly(stringIndexInfo, readonly),
|
||||
getIndexInfoWithReadonly(numberIndexInfo, readonly));
|
||||
spread.flags |= TypeFlags.ContainsObjectLiteral | typeFlags;
|
||||
spread.objectFlags |= ObjectFlags.ObjectLiteral | ObjectFlags.ContainsSpread | objectFlags;
|
||||
return spread;
|
||||
|
@ -10360,14 +10363,13 @@ namespace ts {
|
|||
!prop.declarations.some(decl => isClassLike(decl.parent));
|
||||
}
|
||||
|
||||
function getSpreadSymbol(prop: Symbol) {
|
||||
const isReadonly = isReadonlySymbol(prop);
|
||||
function getSpreadSymbol(prop: Symbol, readonly: boolean) {
|
||||
const isSetonlyAccessor = prop.flags & SymbolFlags.SetAccessor && !(prop.flags & SymbolFlags.GetAccessor);
|
||||
if (!isReadonly && !isSetonlyAccessor) {
|
||||
if (!isSetonlyAccessor && readonly === isReadonlySymbol(prop)) {
|
||||
return prop;
|
||||
}
|
||||
const flags = SymbolFlags.Property | (prop.flags & SymbolFlags.Optional);
|
||||
const result = createSymbol(flags, prop.escapedName);
|
||||
const result = createSymbol(flags, prop.escapedName, readonly ? CheckFlags.Readonly : 0);
|
||||
result.type = isSetonlyAccessor ? undefinedType : getTypeOfSymbol(prop);
|
||||
result.declarations = prop.declarations;
|
||||
result.nameType = prop.nameType;
|
||||
|
@ -10375,11 +10377,8 @@ namespace ts {
|
|||
return result;
|
||||
}
|
||||
|
||||
function getNonReadonlyIndexSignature(index: IndexInfo | undefined) {
|
||||
if (index && index.isReadonly) {
|
||||
return createIndexInfo(index.type, /*isReadonly*/ false, index.declaration);
|
||||
}
|
||||
return index;
|
||||
function getIndexInfoWithReadonly(info: IndexInfo | undefined, readonly: boolean) {
|
||||
return info && info.isReadonly !== readonly ? createIndexInfo(info.type, readonly, info.declaration) : info;
|
||||
}
|
||||
|
||||
function createLiteralType(flags: TypeFlags, value: string | number | PseudoBigInt, symbol: Symbol | undefined) {
|
||||
|
@ -14502,7 +14501,7 @@ namespace ts {
|
|||
// that is _too good_ in projects with complicated constraints (eg, fp-ts). In such cases, if we did not limit ourselves
|
||||
// here, we might produce more valid inferences for types, causing us to do more checks and perform more instantiations
|
||||
// (in addition to the extra stack depth here) which, in turn, can push the already close process over its limit.
|
||||
// TL;DR: If we ever become generally more memory efficienct (or our resource budget ever increases), we should just
|
||||
// TL;DR: If we ever become generally more memory efficient (or our resource budget ever increases), we should just
|
||||
// remove this `allowComplexConstraintInference` flag.
|
||||
allowComplexConstraintInference = false;
|
||||
return inferFromTypes(apparentSource, target);
|
||||
|
@ -14868,17 +14867,23 @@ namespace ts {
|
|||
case "console":
|
||||
return Diagnostics.Cannot_find_name_0_Do_you_need_to_change_your_target_library_Try_changing_the_lib_compiler_option_to_include_dom;
|
||||
case "$":
|
||||
return Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig;
|
||||
return compilerOptions.types
|
||||
? Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery_and_then_add_jquery_to_the_types_field_in_your_tsconfig
|
||||
: Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_jQuery_Try_npm_i_types_Slashjquery;
|
||||
case "describe":
|
||||
case "suite":
|
||||
case "it":
|
||||
case "test":
|
||||
return Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig;
|
||||
return compilerOptions.types
|
||||
? Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha_and_then_add_jest_or_mocha_to_the_types_field_in_your_tsconfig
|
||||
: Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_a_test_runner_Try_npm_i_types_Slashjest_or_npm_i_types_Slashmocha;
|
||||
case "process":
|
||||
case "require":
|
||||
case "Buffer":
|
||||
case "module":
|
||||
return Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig;
|
||||
return compilerOptions.types
|
||||
? Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode_and_then_add_node_to_the_types_field_in_your_tsconfig
|
||||
: Diagnostics.Cannot_find_name_0_Do_you_need_to_install_type_definitions_for_node_Try_npm_i_types_Slashnode;
|
||||
case "Map":
|
||||
case "Set":
|
||||
case "Promise":
|
||||
|
@ -17020,7 +17025,7 @@ namespace ts {
|
|||
}
|
||||
|
||||
function isInConstructorArgumentInitializer(node: Node, constructorDecl: Node): boolean {
|
||||
return !!findAncestor(node, n => n === constructorDecl ? "quit" : n.kind === SyntaxKind.Parameter);
|
||||
return !!findAncestor(node, n => isFunctionLikeDeclaration(n) ? "quit" : n.kind === SyntaxKind.Parameter && n.parent === constructorDecl);
|
||||
}
|
||||
|
||||
function checkSuperExpression(node: Node): Type {
|
||||
|
@ -17806,7 +17811,7 @@ namespace ts {
|
|||
return getContextualTypeForArgument(<CallExpression | NewExpression>parent, node);
|
||||
case SyntaxKind.TypeAssertionExpression:
|
||||
case SyntaxKind.AsExpression:
|
||||
return getTypeFromTypeNode((<AssertionExpression>parent).type);
|
||||
return isConstTypeReference((<AssertionExpression>parent).type) ? undefined : getTypeFromTypeNode((<AssertionExpression>parent).type);
|
||||
case SyntaxKind.BinaryExpression:
|
||||
return getContextualTypeForBinaryOperand(node);
|
||||
case SyntaxKind.PropertyAssignment:
|
||||
|
@ -18092,6 +18097,7 @@ namespace ts {
|
|||
const elementTypes: Type[] = [];
|
||||
const inDestructuringPattern = isAssignmentTarget(node);
|
||||
const contextualType = getApparentTypeOfContextualType(node);
|
||||
const inConstContext = isConstContext(node);
|
||||
for (let index = 0; index < elementCount; index++) {
|
||||
const e = elements[index];
|
||||
if (inDestructuringPattern && e.kind === SyntaxKind.SpreadElement) {
|
||||
|
@ -18134,7 +18140,7 @@ namespace ts {
|
|||
type.pattern = node;
|
||||
return type;
|
||||
}
|
||||
else if (tupleResult = getArrayLiteralTupleTypeIfApplicable(elementTypes, contextualType, hasRestElement, elementCount)) {
|
||||
else if (tupleResult = getArrayLiteralTupleTypeIfApplicable(elementTypes, contextualType, hasRestElement, elementCount, inConstContext)) {
|
||||
return tupleResult;
|
||||
}
|
||||
else if (forceTuple) {
|
||||
|
@ -18143,14 +18149,14 @@ namespace ts {
|
|||
}
|
||||
return createArrayType(elementTypes.length ?
|
||||
getUnionType(elementTypes, UnionReduction.Subtype) :
|
||||
strictNullChecks ? implicitNeverType : undefinedWideningType);
|
||||
strictNullChecks ? implicitNeverType : undefinedWideningType, inConstContext);
|
||||
}
|
||||
|
||||
function getArrayLiteralTupleTypeIfApplicable(elementTypes: Type[], contextualType: Type | undefined, hasRestElement: boolean, elementCount = elementTypes.length) {
|
||||
function getArrayLiteralTupleTypeIfApplicable(elementTypes: Type[], contextualType: Type | undefined, hasRestElement: boolean, elementCount = elementTypes.length, readonly = false) {
|
||||
// Infer a tuple type when the contextual type is or contains a tuple-like type
|
||||
if (contextualType && forEachType(contextualType, isTupleLikeType)) {
|
||||
if (readonly || (contextualType && forEachType(contextualType, isTupleLikeType))) {
|
||||
const minLength = elementCount - (hasRestElement ? 1 : 0);
|
||||
const pattern = contextualType.pattern;
|
||||
const pattern = contextualType && contextualType.pattern;
|
||||
// If array literal is contextually typed by a binding pattern or an assignment pattern, pad the resulting
|
||||
// tuple type with the corresponding binding or assignment element types to make the lengths equal.
|
||||
if (!hasRestElement && pattern && (pattern.kind === SyntaxKind.ArrayBindingPattern || pattern.kind === SyntaxKind.ArrayLiteralExpression)) {
|
||||
|
@ -18168,7 +18174,7 @@ namespace ts {
|
|||
}
|
||||
}
|
||||
}
|
||||
return createTupleType(elementTypes, minLength, hasRestElement);
|
||||
return createTupleType(elementTypes, minLength, hasRestElement, readonly);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18240,15 +18246,15 @@ namespace ts {
|
|||
return links.resolvedType;
|
||||
}
|
||||
|
||||
function getObjectLiteralIndexInfo(propertyNodes: NodeArray<ObjectLiteralElementLike>, offset: number, properties: Symbol[], kind: IndexKind): IndexInfo {
|
||||
function getObjectLiteralIndexInfo(node: ObjectLiteralExpression, offset: number, properties: Symbol[], kind: IndexKind): IndexInfo {
|
||||
const propTypes: Type[] = [];
|
||||
for (let i = 0; i < properties.length; i++) {
|
||||
if (kind === IndexKind.String || isNumericName(propertyNodes[i + offset].name!)) {
|
||||
if (kind === IndexKind.String || isNumericName(node.properties[i + offset].name!)) {
|
||||
propTypes.push(getTypeOfSymbol(properties[i]));
|
||||
}
|
||||
}
|
||||
const unionType = propTypes.length ? getUnionType(propTypes, UnionReduction.Subtype) : undefinedType;
|
||||
return createIndexInfo(unionType, /*isReadonly*/ false);
|
||||
return createIndexInfo(unionType, isConstContext(node));
|
||||
}
|
||||
|
||||
function getImmediateAliasedSymbol(symbol: Symbol): Symbol | undefined {
|
||||
|
@ -18276,6 +18282,8 @@ namespace ts {
|
|||
const contextualType = getApparentTypeOfContextualType(node);
|
||||
const contextualTypeHasPattern = contextualType && contextualType.pattern &&
|
||||
(contextualType.pattern.kind === SyntaxKind.ObjectBindingPattern || contextualType.pattern.kind === SyntaxKind.ObjectLiteralExpression);
|
||||
const inConstContext = isConstContext(node);
|
||||
const checkFlags = inConstContext ? CheckFlags.Readonly : 0;
|
||||
const isInJavascript = isInJSFile(node) && !isInJsonFile(node);
|
||||
const enumTag = getJSDocEnumTag(node);
|
||||
const isJSObjectLiteral = !contextualType && isInJavascript && !enumTag;
|
||||
|
@ -18310,8 +18318,8 @@ namespace ts {
|
|||
typeFlags |= type.flags;
|
||||
const nameType = computedNameType && isTypeUsableAsPropertyName(computedNameType) ? computedNameType : undefined;
|
||||
const prop = nameType ?
|
||||
createSymbol(SymbolFlags.Property | member.flags, getPropertyNameFromType(nameType), CheckFlags.Late) :
|
||||
createSymbol(SymbolFlags.Property | member.flags, member.escapedName);
|
||||
createSymbol(SymbolFlags.Property | member.flags, getPropertyNameFromType(nameType), checkFlags | CheckFlags.Late) :
|
||||
createSymbol(SymbolFlags.Property | member.flags, member.escapedName, checkFlags);
|
||||
if (nameType) {
|
||||
prop.nameType = nameType;
|
||||
}
|
||||
|
@ -18355,7 +18363,7 @@ namespace ts {
|
|||
checkExternalEmitHelpers(memberDecl, ExternalEmitHelpers.Assign);
|
||||
}
|
||||
if (propertiesArray.length > 0) {
|
||||
spread = getSpreadType(spread, createObjectLiteralType(), node.symbol, propagatedFlags, ObjectFlags.FreshLiteral);
|
||||
spread = getSpreadType(spread, createObjectLiteralType(), node.symbol, propagatedFlags, ObjectFlags.FreshLiteral, inConstContext);
|
||||
propertiesArray = [];
|
||||
propertiesTable = createSymbolTable();
|
||||
hasComputedStringProperty = false;
|
||||
|
@ -18367,7 +18375,7 @@ namespace ts {
|
|||
error(memberDecl, Diagnostics.Spread_types_may_only_be_created_from_object_types);
|
||||
return errorType;
|
||||
}
|
||||
spread = getSpreadType(spread, type, node.symbol, propagatedFlags, ObjectFlags.FreshLiteral);
|
||||
spread = getSpreadType(spread, type, node.symbol, propagatedFlags, ObjectFlags.FreshLiteral, inConstContext);
|
||||
offset = i + 1;
|
||||
continue;
|
||||
}
|
||||
|
@ -18417,7 +18425,7 @@ namespace ts {
|
|||
|
||||
if (spread !== emptyObjectType) {
|
||||
if (propertiesArray.length > 0) {
|
||||
spread = getSpreadType(spread, createObjectLiteralType(), node.symbol, propagatedFlags, ObjectFlags.FreshLiteral);
|
||||
spread = getSpreadType(spread, createObjectLiteralType(), node.symbol, propagatedFlags, ObjectFlags.FreshLiteral, inConstContext);
|
||||
}
|
||||
return spread;
|
||||
}
|
||||
|
@ -18425,8 +18433,8 @@ namespace ts {
|
|||
return createObjectLiteralType();
|
||||
|
||||
function createObjectLiteralType() {
|
||||
const stringIndexInfo = hasComputedStringProperty ? getObjectLiteralIndexInfo(node.properties, offset, propertiesArray, IndexKind.String) : undefined;
|
||||
const numberIndexInfo = hasComputedNumberProperty ? getObjectLiteralIndexInfo(node.properties, offset, propertiesArray, IndexKind.Number) : undefined;
|
||||
const stringIndexInfo = hasComputedStringProperty ? getObjectLiteralIndexInfo(node, offset, propertiesArray, IndexKind.String) : undefined;
|
||||
const numberIndexInfo = hasComputedNumberProperty ? getObjectLiteralIndexInfo(node, offset, propertiesArray, IndexKind.Number) : undefined;
|
||||
const result = createAnonymousType(node.symbol, propertiesTable, emptyArray, emptyArray, stringIndexInfo, numberIndexInfo);
|
||||
result.flags |= TypeFlags.ContainsObjectLiteral | typeFlags & TypeFlags.PropagatingFlags;
|
||||
result.objectFlags |= ObjectFlags.ObjectLiteral | freshObjectLiteralFlag;
|
||||
|
@ -18556,7 +18564,7 @@ namespace ts {
|
|||
else {
|
||||
Debug.assert(attributeDecl.kind === SyntaxKind.JsxSpreadAttribute);
|
||||
if (attributesTable.size > 0) {
|
||||
spread = getSpreadType(spread, createJsxAttributesType(), attributes.symbol, typeFlags, objectFlags);
|
||||
spread = getSpreadType(spread, createJsxAttributesType(), attributes.symbol, typeFlags, objectFlags, /*readonly*/ false);
|
||||
attributesTable = createSymbolTable();
|
||||
}
|
||||
const exprType = checkExpressionCached(attributeDecl.expression, checkMode);
|
||||
|
@ -18564,7 +18572,7 @@ namespace ts {
|
|||
hasSpreadAnyType = true;
|
||||
}
|
||||
if (isValidSpreadType(exprType)) {
|
||||
spread = getSpreadType(spread, exprType, attributes.symbol, typeFlags, objectFlags);
|
||||
spread = getSpreadType(spread, exprType, attributes.symbol, typeFlags, objectFlags, /*readonly*/ false);
|
||||
}
|
||||
else {
|
||||
typeToIntersect = typeToIntersect ? getIntersectionType([typeToIntersect, exprType]) : exprType;
|
||||
|
@ -18574,7 +18582,7 @@ namespace ts {
|
|||
|
||||
if (!hasSpreadAnyType) {
|
||||
if (attributesTable.size > 0) {
|
||||
spread = getSpreadType(spread, createJsxAttributesType(), attributes.symbol, typeFlags, objectFlags);
|
||||
spread = getSpreadType(spread, createJsxAttributesType(), attributes.symbol, typeFlags, objectFlags, /*readonly*/ false);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -18606,7 +18614,7 @@ namespace ts {
|
|||
const childPropMap = createSymbolTable();
|
||||
childPropMap.set(jsxChildrenPropertyName, childrenPropSymbol);
|
||||
spread = getSpreadType(spread, createAnonymousType(attributes.symbol, childPropMap, emptyArray, emptyArray, /*stringIndexInfo*/ undefined, /*numberIndexInfo*/ undefined),
|
||||
attributes.symbol, typeFlags, objectFlags);
|
||||
attributes.symbol, typeFlags, objectFlags, /*readonly*/ false);
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -18936,7 +18944,7 @@ namespace ts {
|
|||
// if jsx emit was not react as there wont be error being emitted
|
||||
reactSym.isReferenced = SymbolFlags.All;
|
||||
|
||||
// If react symbol is alias, mark it as refereced
|
||||
// If react symbol is alias, mark it as referenced
|
||||
if (reactSym.flags & SymbolFlags.Alias && !isConstEnumOrConstEnumOnlyModule(resolveAlias(reactSym))) {
|
||||
markAliasSymbolAsReferenced(reactSym);
|
||||
}
|
||||
|
@ -21278,7 +21286,7 @@ namespace ts {
|
|||
const anonymousSymbol = createSymbol(SymbolFlags.TypeLiteral, InternalSymbolName.Type);
|
||||
const defaultContainingObject = createAnonymousType(anonymousSymbol, memberTable, emptyArray, emptyArray, /*stringIndexInfo*/ undefined, /*numberIndexInfo*/ undefined);
|
||||
anonymousSymbol.type = defaultContainingObject;
|
||||
synthType.syntheticType = isValidSpreadType(type) ? getSpreadType(type, defaultContainingObject, anonymousSymbol, /*typeFLags*/ 0, /*objectFlags*/ 0) : defaultContainingObject;
|
||||
synthType.syntheticType = isValidSpreadType(type) ? getSpreadType(type, defaultContainingObject, anonymousSymbol, /*typeFLags*/ 0, /*objectFlags*/ 0, /*readonly*/ false) : defaultContainingObject;
|
||||
}
|
||||
else {
|
||||
synthType.syntheticType = type;
|
||||
|
@ -21330,12 +21338,39 @@ namespace ts {
|
|||
return checkAssertionWorker(node, node.type, node.expression);
|
||||
}
|
||||
|
||||
function isValidConstAssertionArgument(node: Node): boolean {
|
||||
switch (node.kind) {
|
||||
case SyntaxKind.StringLiteral:
|
||||
case SyntaxKind.NoSubstitutionTemplateLiteral:
|
||||
case SyntaxKind.NumericLiteral:
|
||||
case SyntaxKind.BigIntLiteral:
|
||||
case SyntaxKind.TrueKeyword:
|
||||
case SyntaxKind.FalseKeyword:
|
||||
case SyntaxKind.ArrayLiteralExpression:
|
||||
case SyntaxKind.ObjectLiteralExpression:
|
||||
return true;
|
||||
case SyntaxKind.ParenthesizedExpression:
|
||||
return isValidConstAssertionArgument((<ParenthesizedExpression>node).expression);
|
||||
case SyntaxKind.PrefixUnaryExpression:
|
||||
const op = (<PrefixUnaryExpression>node).operator;
|
||||
const arg = (<PrefixUnaryExpression>node).operand;
|
||||
return op === SyntaxKind.MinusToken && (arg.kind === SyntaxKind.NumericLiteral || arg.kind === SyntaxKind.BigIntLiteral) ||
|
||||
op === SyntaxKind.PlusToken && arg.kind === SyntaxKind.NumericLiteral;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
function checkAssertionWorker(errNode: Node, type: TypeNode, expression: UnaryExpression | Expression, checkMode?: CheckMode) {
|
||||
const exprType = getRegularTypeOfObjectLiteral(getBaseTypeOfLiteralType(checkExpression(expression, checkMode)));
|
||||
|
||||
let exprType = checkExpression(expression, checkMode);
|
||||
if (isConstTypeReference(type)) {
|
||||
if (!isValidConstAssertionArgument(expression)) {
|
||||
error(expression, Diagnostics.A_const_assertion_can_only_be_applied_to_a_string_number_boolean_array_or_object_literal);
|
||||
}
|
||||
return getRegularTypeOfLiteralType(exprType);
|
||||
}
|
||||
checkSourceElement(type);
|
||||
exprType = getRegularTypeOfObjectLiteral(getBaseTypeOfLiteralType(exprType));
|
||||
const targetType = getTypeFromTypeNode(type);
|
||||
|
||||
if (produceDiagnostics && targetType !== errorType) {
|
||||
const widenedType = getWidenedType(exprType);
|
||||
if (!isTypeComparableTo(targetType, widenedType)) {
|
||||
|
@ -23055,12 +23090,20 @@ namespace ts {
|
|||
return false;
|
||||
}
|
||||
|
||||
function isConstContext(node: Expression): boolean {
|
||||
const parent = node.parent;
|
||||
return isAssertionExpression(parent) && isConstTypeReference(parent.type) ||
|
||||
(isParenthesizedExpression(parent) || isArrayLiteralExpression(parent) || isSpreadElement(parent)) && isConstContext(parent) ||
|
||||
(isPropertyAssignment(parent) || isShorthandPropertyAssignment(parent)) && isConstContext(parent.parent);
|
||||
}
|
||||
|
||||
function checkExpressionForMutableLocation(node: Expression, checkMode: CheckMode | undefined, contextualType?: Type, forceTuple?: boolean): Type {
|
||||
if (arguments.length === 2) {
|
||||
contextualType = getContextualType(node);
|
||||
}
|
||||
const type = checkExpression(node, checkMode, forceTuple);
|
||||
return isTypeAssertion(node) ? type :
|
||||
return isConstContext(node) ? getRegularTypeOfLiteralType(type) :
|
||||
isTypeAssertion(node) ? type :
|
||||
getWidenedLiteralLikeTypeForContextualType(type, contextualType);
|
||||
}
|
||||
|
||||
|
@ -23124,7 +23167,7 @@ namespace ts {
|
|||
return getReturnTypeOfSignature(signature);
|
||||
}
|
||||
}
|
||||
else if (expr.kind === SyntaxKind.TypeAssertionExpression || expr.kind === SyntaxKind.AsExpression) {
|
||||
else if (isAssertionExpression(expr) && !isConstTypeReference(expr.type)) {
|
||||
return getTypeFromTypeNode((<TypeAssertion>expr).type);
|
||||
}
|
||||
// Otherwise simply call checkExpression. Ideally, the entire family of checkXXX functions
|
||||
|
@ -25680,7 +25723,7 @@ namespace ts {
|
|||
const parent = node.parent.parent;
|
||||
const parentType = getTypeForBindingElementParent(parent);
|
||||
const name = node.propertyName || node.name;
|
||||
if (!isBindingPattern(name) && parentType) {
|
||||
if (parentType && !isBindingPattern(name)) {
|
||||
const exprType = getLiteralTypeFromPropertyName(name);
|
||||
if (isTypeUsableAsPropertyName(exprType)) {
|
||||
const nameText = getPropertyNameFromType(exprType);
|
||||
|
@ -28293,7 +28336,7 @@ namespace ts {
|
|||
throwIfNonDiagnosticsProducing();
|
||||
if (sourceFile) {
|
||||
// Some global diagnostics are deferred until they are needed and
|
||||
// may not be reported in the firt call to getGlobalDiagnostics.
|
||||
// may not be reported in the first call to getGlobalDiagnostics.
|
||||
// We should catch these changes and report them.
|
||||
const previousGlobalDiagnostics = diagnostics.getGlobalDiagnostics();
|
||||
const previousGlobalDiagnosticsSize = previousGlobalDiagnostics.length;
|
||||
|
|
|
@ -1935,7 +1935,7 @@ namespace ts {
|
|||
|
||||
function directoryOfCombinedPath(fileName: string, basePath: string) {
|
||||
// Use the `getNormalizedAbsolutePath` function to avoid canonicalizing the path, as it must remain noncanonical
|
||||
// until consistient casing errors are reported
|
||||
// until consistent casing errors are reported
|
||||
return getDirectoryPath(getNormalizedAbsolutePath(fileName, basePath));
|
||||
}
|
||||
|
||||
|
|
|
@ -1027,6 +1027,10 @@
|
|||
"category": "Error",
|
||||
"code": 1354
|
||||
},
|
||||
"A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.": {
|
||||
"category": "Error",
|
||||
"code": 1355
|
||||
},
|
||||
|
||||
"Duplicate identifier '{0}'.": {
|
||||
"category": "Error",
|
||||
|
@ -2096,15 +2100,15 @@
|
|||
"category": "Error",
|
||||
"code": 2577
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.": {
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i @types/node`.": {
|
||||
"category": "Error",
|
||||
"code": 2580
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.": {
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.": {
|
||||
"category": "Error",
|
||||
"code": 2581
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.": {
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.": {
|
||||
"category": "Error",
|
||||
"code": 2582
|
||||
},
|
||||
|
@ -2140,6 +2144,18 @@
|
|||
"category": "Error",
|
||||
"code": 2590
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.": {
|
||||
"category": "Error",
|
||||
"code": 2591
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.": {
|
||||
"category": "Error",
|
||||
"code": 2592
|
||||
},
|
||||
"Cannot find name '{0}'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.": {
|
||||
"category": "Error",
|
||||
"code": 2593
|
||||
},
|
||||
"JSX element attributes type '{0}' may not be a union type.": {
|
||||
"category": "Error",
|
||||
"code": 2600
|
||||
|
|
|
@ -2979,7 +2979,7 @@ namespace ts {
|
|||
return node.emitNode = { annotatedNodes: [node] } as EmitNode;
|
||||
}
|
||||
|
||||
const sourceFile = getSourceFileOfNode(node);
|
||||
const sourceFile = getSourceFileOfNode(getParseTreeNode(getSourceFileOfNode(node)));
|
||||
getOrCreateEmitNode(sourceFile).annotatedNodes!.push(node);
|
||||
}
|
||||
|
||||
|
|
|
@ -5612,6 +5612,11 @@ namespace ts {
|
|||
return node.kind === SyntaxKind.TypeAssertionExpression;
|
||||
}
|
||||
|
||||
export function isConstTypeReference(node: Node) {
|
||||
return isTypeReferenceNode(node) && isIdentifier(node.typeName) &&
|
||||
node.typeName.escapedText === "const" && !node.typeArguments;
|
||||
}
|
||||
|
||||
export function isParenthesizedExpression(node: Node): node is ParenthesizedExpression {
|
||||
return node.kind === SyntaxKind.ParenthesizedExpression;
|
||||
}
|
||||
|
|
4
src/lib/es2017.sharedmemory.d.ts
vendored
4
src/lib/es2017.sharedmemory.d.ts
vendored
|
@ -103,7 +103,7 @@ interface Atomics {
|
|||
* Wakes up sleeping agents that are waiting on the given index of the array, returning the
|
||||
* number of agents that were awoken.
|
||||
*/
|
||||
wake(typedArray: Int32Array, index: number, count: number): number;
|
||||
notify(typedArray: Int32Array, index: number, count: number): number;
|
||||
|
||||
/**
|
||||
* Stores the bitwise XOR of a value with the value at the given position in the array,
|
||||
|
@ -115,4 +115,4 @@ interface Atomics {
|
|||
readonly [Symbol.toStringTag]: "Atomics";
|
||||
}
|
||||
|
||||
declare var Atomics: Atomics;
|
||||
declare var Atomics: Atomics;
|
||||
|
|
|
@ -904,7 +904,7 @@ namespace ts.server {
|
|||
|
||||
getPreferences(file: NormalizedPath): protocol.UserPreferences {
|
||||
const info = this.getScriptInfoForNormalizedPath(file);
|
||||
return info && info.getPreferences() || this.hostConfiguration.preferences;
|
||||
return { ...this.hostConfiguration.preferences, ...info && info.getPreferences() };
|
||||
}
|
||||
|
||||
getHostFormatCodeOptions(): FormatCodeSettings {
|
||||
|
|
|
@ -1178,8 +1178,7 @@ namespace ts.server {
|
|||
private getRenameInfo(args: protocol.FileLocationRequestArgs): RenameInfo {
|
||||
const { file, project } = this.getFileAndProject(args);
|
||||
const position = this.getPositionInFile(args, file);
|
||||
const preferences = this.getHostPreferences();
|
||||
return project.getLanguageService().getRenameInfo(file, position, { allowRenameOfImportPath: preferences.allowRenameOfImportPath });
|
||||
return project.getLanguageService().getRenameInfo(file, position, { allowRenameOfImportPath: this.getPreferences(file).allowRenameOfImportPath });
|
||||
}
|
||||
|
||||
private getProjects(args: protocol.FileRequestArgs, getScriptInfoEnsuringProjectsUptoDate?: boolean, ignoreNoProjectError?: boolean): Projects {
|
||||
|
@ -1234,12 +1233,12 @@ namespace ts.server {
|
|||
{ fileName: args.file, pos: position },
|
||||
!!args.findInStrings,
|
||||
!!args.findInComments,
|
||||
this.getHostPreferences()
|
||||
this.getPreferences(file)
|
||||
);
|
||||
if (!simplifiedResult) return locations;
|
||||
|
||||
const defaultProject = this.getDefaultProject(args);
|
||||
const renameInfo: protocol.RenameInfo = this.mapRenameInfo(defaultProject.getLanguageService().getRenameInfo(file, position, { allowRenameOfImportPath: this.getHostPreferences().allowRenameOfImportPath }), Debug.assertDefined(this.projectService.getScriptInfo(file)));
|
||||
const renameInfo: protocol.RenameInfo = this.mapRenameInfo(defaultProject.getLanguageService().getRenameInfo(file, position, { allowRenameOfImportPath: this.getPreferences(file).allowRenameOfImportPath }), Debug.assertDefined(this.projectService.getScriptInfo(file)));
|
||||
return { info: renameInfo, locs: this.toSpanGroups(locations) };
|
||||
}
|
||||
|
||||
|
|
|
@ -41,6 +41,7 @@ namespace ts.FindAllReferences {
|
|||
readonly implementations?: boolean;
|
||||
/**
|
||||
* True to opt in for enhanced renaming of shorthand properties and import/export specifiers.
|
||||
* The options controls the behavior for the whole rename operation; it cannot be changed on a per-file basis.
|
||||
* Default is false for backwards compatibility.
|
||||
*/
|
||||
readonly providePrefixAndSuffixTextForRename?: boolean;
|
||||
|
|
|
@ -400,6 +400,46 @@ namespace Foo {
|
|||
}
|
||||
}).outputText;
|
||||
});
|
||||
|
||||
// https://github.com/Microsoft/TypeScript/issues/24709
|
||||
testBaseline("issue24709", () => {
|
||||
const fs = vfs.createFromFileSystem(Harness.IO, /*caseSensitive*/ true);
|
||||
const transformed = transform(createSourceFile("source.ts", "class X { echo(x: string) { return x; } }", ScriptTarget.ES3), [transformSourceFile]);
|
||||
const transformedSourceFile = transformed.transformed[0];
|
||||
transformed.dispose();
|
||||
const host = new fakes.CompilerHost(fs);
|
||||
host.getSourceFile = () => transformedSourceFile;
|
||||
const program = createProgram(["source.ts"], {
|
||||
target: ScriptTarget.ES3,
|
||||
module: ModuleKind.None,
|
||||
noLib: true
|
||||
}, host);
|
||||
program.emit(transformedSourceFile, (_p, s, b) => host.writeFile("source.js", s, b));
|
||||
return host.readFile("source.js")!.toString();
|
||||
|
||||
function transformSourceFile(context: TransformationContext) {
|
||||
const visitor: Visitor = (node) => {
|
||||
if (isMethodDeclaration(node)) {
|
||||
return updateMethod(
|
||||
node,
|
||||
node.decorators,
|
||||
node.modifiers,
|
||||
node.asteriskToken,
|
||||
createIdentifier("foobar"),
|
||||
node.questionToken,
|
||||
node.typeParameters,
|
||||
node.parameters,
|
||||
node.type,
|
||||
node.body,
|
||||
);
|
||||
}
|
||||
return visitEachChild(node, visitor, context);
|
||||
};
|
||||
return (node: SourceFile) => visitNode(node, visitor);
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace ts.projectSystem {
|
|||
const session = createSession(createServerHost([aTs, bTs]));
|
||||
openFilesForSession([bTs], session);
|
||||
|
||||
// rename fails with allowRenameOfImportPath disabled
|
||||
const response1 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(bTs, 'a";'));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response1, {
|
||||
info: {
|
||||
|
@ -16,6 +17,7 @@ namespace ts.projectSystem {
|
|||
locs: [{ file: bTs.path, locs: [protocolRenameSpanFromSubstring(bTs.content, "./a")] }],
|
||||
});
|
||||
|
||||
// rename succeeds with allowRenameOfImportPath enabled in host
|
||||
session.getProjectService().setHostConfiguration({ preferences: { allowRenameOfImportPath: true } });
|
||||
const response2 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(bTs, 'a";'));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response2, {
|
||||
|
@ -30,6 +32,23 @@ namespace ts.projectSystem {
|
|||
},
|
||||
locs: [{ file: bTs.path, locs: [protocolRenameSpanFromSubstring(bTs.content, "./a")] }],
|
||||
});
|
||||
|
||||
// rename succeeds with allowRenameOfImportPath enabled in file
|
||||
session.getProjectService().setHostConfiguration({ preferences: { allowRenameOfImportPath: false } });
|
||||
session.getProjectService().setHostConfiguration({ file: "/b.ts", formatOptions: {}, preferences: { allowRenameOfImportPath: true } });
|
||||
const response3 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(bTs, 'a";'));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response3, {
|
||||
info: {
|
||||
canRename: true,
|
||||
fileToRename: aTs.path,
|
||||
displayName: aTs.path,
|
||||
fullDisplayName: aTs.path,
|
||||
kind: ScriptElementKind.moduleElement,
|
||||
kindModifiers: "",
|
||||
triggerSpan: protocolTextSpanFromSubstring(bTs.content, "a", { index: 1 }),
|
||||
},
|
||||
locs: [{ file: bTs.path, locs: [protocolRenameSpanFromSubstring(bTs.content, "./a")] }],
|
||||
});
|
||||
});
|
||||
|
||||
it("works with prefixText and suffixText when enabled", () => {
|
||||
|
@ -61,7 +80,7 @@ namespace ts.projectSystem {
|
|||
],
|
||||
});
|
||||
|
||||
// rename with prefixText and suffixText enabled
|
||||
// rename with prefixText and suffixText enabled in host
|
||||
session.getProjectService().setHostConfiguration({ preferences: { providePrefixAndSuffixTextForRename: true } });
|
||||
const response2 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(aTs, "x"));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response2, {
|
||||
|
@ -84,6 +103,93 @@ namespace ts.projectSystem {
|
|||
},
|
||||
],
|
||||
});
|
||||
|
||||
// rename with prefixText and suffixText enabled for file
|
||||
session.getProjectService().setHostConfiguration({ preferences: { providePrefixAndSuffixTextForRename: false } });
|
||||
session.getProjectService().setHostConfiguration({ file: "/a.ts", formatOptions: {}, preferences: { providePrefixAndSuffixTextForRename: true } });
|
||||
const response3 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(aTs, "x"));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response3, {
|
||||
info: {
|
||||
canRename: true,
|
||||
fileToRename: undefined,
|
||||
displayName: "x",
|
||||
fullDisplayName: "x",
|
||||
kind: ScriptElementKind.constElement,
|
||||
kindModifiers: ScriptElementKindModifier.none,
|
||||
triggerSpan: protocolTextSpanFromSubstring(aTs.content, "x"),
|
||||
},
|
||||
locs: [
|
||||
{
|
||||
file: aTs.path,
|
||||
locs: [
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x"),
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x", { index: 1 }, { prefixText: "x: " }),
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
|
||||
it("rename behavior is based on file of rename initiation", () => {
|
||||
const aTs: File = { path: "/a.ts", content: "const x = 1; export { x };" };
|
||||
const bTs: File = { path: "/b.ts", content: `import { x } from "./a"; const y = x + 1;` };
|
||||
const host = createServerHost([aTs, bTs]);
|
||||
const session = createSession(host);
|
||||
openFilesForSession([aTs, bTs], session);
|
||||
|
||||
// rename from file with prefixText and suffixText enabled
|
||||
session.getProjectService().setHostConfiguration({ file: "/a.ts", formatOptions: {}, preferences: { providePrefixAndSuffixTextForRename: true } });
|
||||
const response1 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(aTs, "x"));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response1, {
|
||||
info: {
|
||||
canRename: true,
|
||||
fileToRename: undefined,
|
||||
displayName: "x",
|
||||
fullDisplayName: "x",
|
||||
kind: ScriptElementKind.constElement,
|
||||
kindModifiers: ScriptElementKindModifier.none,
|
||||
triggerSpan: protocolTextSpanFromSubstring(aTs.content, "x"),
|
||||
},
|
||||
locs: [
|
||||
{
|
||||
file: aTs.path,
|
||||
locs: [
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x"),
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x", { index: 2 }, { suffixText: " as x" }),
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
|
||||
// rename from file with prefixText and suffixText disabled
|
||||
const response2 = executeSessionRequest<protocol.RenameRequest, protocol.RenameResponse>(session, protocol.CommandTypes.Rename, protocolFileLocationFromSubstring(bTs, "x"));
|
||||
assert.deepEqual<protocol.RenameResponseBody | undefined>(response2, {
|
||||
info: {
|
||||
canRename: true,
|
||||
fileToRename: undefined,
|
||||
displayName: "x",
|
||||
fullDisplayName: "x",
|
||||
kind: ScriptElementKind.alias,
|
||||
kindModifiers: ScriptElementKindModifier.none,
|
||||
triggerSpan: protocolTextSpanFromSubstring(bTs.content, "x"),
|
||||
},
|
||||
locs: [
|
||||
{
|
||||
file: bTs.path,
|
||||
locs: [
|
||||
protocolRenameSpanFromSubstring(bTs.content, "x"),
|
||||
protocolRenameSpanFromSubstring(bTs.content, "x", { index: 1 })
|
||||
]
|
||||
},
|
||||
{
|
||||
file: aTs.path,
|
||||
locs: [
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x"),
|
||||
protocolRenameSpanFromSubstring(aTs.content, "x", { index: 2 }),
|
||||
],
|
||||
},
|
||||
],
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,22 +1,22 @@
|
|||
tests/cases/compiler/anonymousModules.ts(1,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/anonymousModules.ts(1,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/anonymousModules.ts(1,8): error TS1005: ';' expected.
|
||||
tests/cases/compiler/anonymousModules.ts(4,2): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/anonymousModules.ts(4,2): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/anonymousModules.ts(4,9): error TS1005: ';' expected.
|
||||
tests/cases/compiler/anonymousModules.ts(10,2): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/anonymousModules.ts(10,2): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/anonymousModules.ts(10,9): error TS1005: ';' expected.
|
||||
|
||||
|
||||
==== tests/cases/compiler/anonymousModules.ts (6 errors) ====
|
||||
module {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
export var foo = 1;
|
||||
|
||||
module {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
export var bar = 1;
|
||||
|
@ -26,7 +26,7 @@ tests/cases/compiler/anonymousModules.ts(10,9): error TS1005: ';' expected.
|
|||
|
||||
module {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
var x = bar;
|
||||
|
|
|
@ -3401,6 +3401,7 @@ declare namespace ts {
|
|||
function isNewExpression(node: Node): node is NewExpression;
|
||||
function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression;
|
||||
function isTypeAssertion(node: Node): node is TypeAssertion;
|
||||
function isConstTypeReference(node: Node): boolean;
|
||||
function isParenthesizedExpression(node: Node): node is ParenthesizedExpression;
|
||||
function skipPartiallyEmittedExpressions(node: Expression): Expression;
|
||||
function skipPartiallyEmittedExpressions(node: Node): Node;
|
||||
|
|
|
@ -3401,6 +3401,7 @@ declare namespace ts {
|
|||
function isNewExpression(node: Node): node is NewExpression;
|
||||
function isTaggedTemplateExpression(node: Node): node is TaggedTemplateExpression;
|
||||
function isTypeAssertion(node: Node): node is TypeAssertion;
|
||||
function isConstTypeReference(node: Node): boolean;
|
||||
function isParenthesizedExpression(node: Node): node is ParenthesizedExpression;
|
||||
function skipPartiallyEmittedExpressions(node: Expression): Expression;
|
||||
function skipPartiallyEmittedExpressions(node: Node): Node;
|
||||
|
|
|
@ -1,11 +1,11 @@
|
|||
tests/cases/conformance/salsa/bug24934.js(2,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/salsa/bug24934.js(2,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/conformance/salsa/bug24934.js (1 errors) ====
|
||||
export function abc(a, b, c) { return 5; }
|
||||
module.exports = { abc };
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
==== tests/cases/conformance/salsa/use.js (0 errors) ====
|
||||
import { abc } from './bug24934';
|
||||
abc(1, 2, 3);
|
||||
|
|
79
tests/baselines/reference/constAssertions.errors.txt
Normal file
79
tests/baselines/reference/constAssertions.errors.txt
Normal file
|
@ -0,0 +1,79 @@
|
|||
tests/cases/conformance/expressions/typeAssertions/constAssertions.ts(44,32): error TS2540: Cannot assign to 'x' because it is a read-only property.
|
||||
tests/cases/conformance/expressions/typeAssertions/constAssertions.ts(61,10): error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
tests/cases/conformance/expressions/typeAssertions/constAssertions.ts(62,10): error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
tests/cases/conformance/expressions/typeAssertions/constAssertions.ts(63,10): error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
|
||||
|
||||
==== tests/cases/conformance/expressions/typeAssertions/constAssertions.ts (4 errors) ====
|
||||
let v1 = 'abc' as const;
|
||||
let v2 = `abc` as const;
|
||||
let v3 = 10 as const;
|
||||
let v4 = -10 as const;
|
||||
let v5 = +10 as const;
|
||||
let v6 = 10n as const;
|
||||
let v7 = -10n as const;
|
||||
let v8 = true as const;
|
||||
let v9 = false as const;
|
||||
|
||||
let c1 = 'abc' as const;
|
||||
let c2 = `abc` as const;
|
||||
let c3 = 10 as const;
|
||||
let c4 = -10 as const;
|
||||
let c5 = +10 as const;
|
||||
let c6 = 10n as const;
|
||||
let c7 = -10n as const;
|
||||
let c8 = true as const;
|
||||
let c9 = false as const;
|
||||
|
||||
let vv1 = v1;
|
||||
let vc1 = c1;
|
||||
|
||||
let a1 = [] as const;
|
||||
let a2 = [1, 2, 3] as const;
|
||||
let a3 = [10, 'hello', true] as const;
|
||||
let a4 = [...[1, 2, 3]] as const;
|
||||
let a5 = [1, 2, 3];
|
||||
let a6 = [...a5] as const;
|
||||
let a7 = [...a6];
|
||||
let a8 = ['abc', ...a7] as const;
|
||||
let a9 = [...a8];
|
||||
|
||||
declare let d: { [x: string]: string };
|
||||
|
||||
let o1 = { x: 10, y: 20 } as const;
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const;
|
||||
let o3 = { ...o1, ...o2 } as const;
|
||||
let o4 = { a: 1, b: 2 };
|
||||
let o5 = { ...o4 } as const;
|
||||
let o6 = { ...o5 };
|
||||
let o7 = { ...d } as const;
|
||||
let o8 = { ...o7 };
|
||||
let o9 = { x: 10, foo() { this.x = 20 } } as const; // Error
|
||||
~
|
||||
!!! error TS2540: Cannot assign to 'x' because it is a read-only property.
|
||||
|
||||
let p1 = (10) as const;
|
||||
let p2 = ((-10)) as const;
|
||||
let p3 = ([(10)]) as const;
|
||||
let p4 = [[[[10]]]] as const;
|
||||
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } } as const;
|
||||
|
||||
let q1 = <const> 10;
|
||||
let q2 = <const> 'abc';
|
||||
let q3 = <const> true;
|
||||
let q4 = <const> [1, 2, 3];
|
||||
let q5 = <const> { x: 10, y: 20 };
|
||||
|
||||
declare function id<T>(x: T): T;
|
||||
|
||||
let e1 = v1 as const; // Error
|
||||
~~
|
||||
!!! error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
let e2 = (true ? 1 : 0) as const; // Error
|
||||
~~~~~~~~~~~~~~
|
||||
!!! error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
let e3 = id(1) as const; // Error
|
||||
~~~~~
|
||||
!!! error TS1355: A 'const' assertion can only be applied to a string, number, boolean, array, or object literal.
|
||||
|
220
tests/baselines/reference/constAssertions.js
Normal file
220
tests/baselines/reference/constAssertions.js
Normal file
|
@ -0,0 +1,220 @@
|
|||
//// [constAssertions.ts]
|
||||
let v1 = 'abc' as const;
|
||||
let v2 = `abc` as const;
|
||||
let v3 = 10 as const;
|
||||
let v4 = -10 as const;
|
||||
let v5 = +10 as const;
|
||||
let v6 = 10n as const;
|
||||
let v7 = -10n as const;
|
||||
let v8 = true as const;
|
||||
let v9 = false as const;
|
||||
|
||||
let c1 = 'abc' as const;
|
||||
let c2 = `abc` as const;
|
||||
let c3 = 10 as const;
|
||||
let c4 = -10 as const;
|
||||
let c5 = +10 as const;
|
||||
let c6 = 10n as const;
|
||||
let c7 = -10n as const;
|
||||
let c8 = true as const;
|
||||
let c9 = false as const;
|
||||
|
||||
let vv1 = v1;
|
||||
let vc1 = c1;
|
||||
|
||||
let a1 = [] as const;
|
||||
let a2 = [1, 2, 3] as const;
|
||||
let a3 = [10, 'hello', true] as const;
|
||||
let a4 = [...[1, 2, 3]] as const;
|
||||
let a5 = [1, 2, 3];
|
||||
let a6 = [...a5] as const;
|
||||
let a7 = [...a6];
|
||||
let a8 = ['abc', ...a7] as const;
|
||||
let a9 = [...a8];
|
||||
|
||||
declare let d: { [x: string]: string };
|
||||
|
||||
let o1 = { x: 10, y: 20 } as const;
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const;
|
||||
let o3 = { ...o1, ...o2 } as const;
|
||||
let o4 = { a: 1, b: 2 };
|
||||
let o5 = { ...o4 } as const;
|
||||
let o6 = { ...o5 };
|
||||
let o7 = { ...d } as const;
|
||||
let o8 = { ...o7 };
|
||||
let o9 = { x: 10, foo() { this.x = 20 } } as const; // Error
|
||||
|
||||
let p1 = (10) as const;
|
||||
let p2 = ((-10)) as const;
|
||||
let p3 = ([(10)]) as const;
|
||||
let p4 = [[[[10]]]] as const;
|
||||
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } } as const;
|
||||
|
||||
let q1 = <const> 10;
|
||||
let q2 = <const> 'abc';
|
||||
let q3 = <const> true;
|
||||
let q4 = <const> [1, 2, 3];
|
||||
let q5 = <const> { x: 10, y: 20 };
|
||||
|
||||
declare function id<T>(x: T): T;
|
||||
|
||||
let e1 = v1 as const; // Error
|
||||
let e2 = (true ? 1 : 0) as const; // Error
|
||||
let e3 = id(1) as const; // Error
|
||||
|
||||
|
||||
//// [constAssertions.js]
|
||||
"use strict";
|
||||
let v1 = 'abc';
|
||||
let v2 = `abc`;
|
||||
let v3 = 10;
|
||||
let v4 = -10;
|
||||
let v5 = +10;
|
||||
let v6 = 10n;
|
||||
let v7 = -10n;
|
||||
let v8 = true;
|
||||
let v9 = false;
|
||||
let c1 = 'abc';
|
||||
let c2 = `abc`;
|
||||
let c3 = 10;
|
||||
let c4 = -10;
|
||||
let c5 = +10;
|
||||
let c6 = 10n;
|
||||
let c7 = -10n;
|
||||
let c8 = true;
|
||||
let c9 = false;
|
||||
let vv1 = v1;
|
||||
let vc1 = c1;
|
||||
let a1 = [];
|
||||
let a2 = [1, 2, 3];
|
||||
let a3 = [10, 'hello', true];
|
||||
let a4 = [...[1, 2, 3]];
|
||||
let a5 = [1, 2, 3];
|
||||
let a6 = [...a5];
|
||||
let a7 = [...a6];
|
||||
let a8 = ['abc', ...a7];
|
||||
let a9 = [...a8];
|
||||
let o1 = { x: 10, y: 20 };
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() { }, ['e' + '']: 4 };
|
||||
let o3 = { ...o1, ...o2 };
|
||||
let o4 = { a: 1, b: 2 };
|
||||
let o5 = { ...o4 };
|
||||
let o6 = { ...o5 };
|
||||
let o7 = { ...d };
|
||||
let o8 = { ...o7 };
|
||||
let o9 = { x: 10, foo() { this.x = 20; } }; // Error
|
||||
let p1 = (10);
|
||||
let p2 = ((-10));
|
||||
let p3 = ([(10)]);
|
||||
let p4 = [[[[10]]]];
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } };
|
||||
let q1 = 10;
|
||||
let q2 = 'abc';
|
||||
let q3 = true;
|
||||
let q4 = [1, 2, 3];
|
||||
let q5 = { x: 10, y: 20 };
|
||||
let e1 = v1; // Error
|
||||
let e2 = (true ? 1 : 0); // Error
|
||||
let e3 = id(1); // Error
|
||||
|
||||
|
||||
//// [constAssertions.d.ts]
|
||||
declare let v1: "abc";
|
||||
declare let v2: "abc";
|
||||
declare let v3: 10;
|
||||
declare let v4: -10;
|
||||
declare let v5: 10;
|
||||
declare let v6: 10n;
|
||||
declare let v7: -10n;
|
||||
declare let v8: true;
|
||||
declare let v9: false;
|
||||
declare let c1: "abc";
|
||||
declare let c2: "abc";
|
||||
declare let c3: 10;
|
||||
declare let c4: -10;
|
||||
declare let c5: 10;
|
||||
declare let c6: 10n;
|
||||
declare let c7: -10n;
|
||||
declare let c8: true;
|
||||
declare let c9: false;
|
||||
declare let vv1: "abc";
|
||||
declare let vc1: "abc";
|
||||
declare let a1: readonly [];
|
||||
declare let a2: readonly [1, 2, 3];
|
||||
declare let a3: readonly [10, "hello", true];
|
||||
declare let a4: readonly (1 | 2 | 3)[];
|
||||
declare let a5: number[];
|
||||
declare let a6: readonly number[];
|
||||
declare let a7: number[];
|
||||
declare let a8: readonly ["abc", ...number[]];
|
||||
declare let a9: (number | "abc")[];
|
||||
declare let d: {
|
||||
[x: string]: string;
|
||||
};
|
||||
declare let o1: {
|
||||
readonly x: 10;
|
||||
readonly y: 20;
|
||||
};
|
||||
declare let o2: {
|
||||
readonly [x: string]: 1 | 2 | 3 | (() => void) | 4;
|
||||
readonly a: 1;
|
||||
readonly 'b': 2;
|
||||
readonly ['c']: 3;
|
||||
readonly d: () => void;
|
||||
};
|
||||
declare let o3: {
|
||||
readonly a: 1;
|
||||
readonly 'b': 2;
|
||||
readonly ['c']: 3;
|
||||
readonly d: () => void;
|
||||
readonly x: 10;
|
||||
readonly y: 20;
|
||||
};
|
||||
declare let o4: {
|
||||
a: number;
|
||||
b: number;
|
||||
};
|
||||
declare let o5: {
|
||||
readonly a: number;
|
||||
readonly b: number;
|
||||
};
|
||||
declare let o6: {
|
||||
a: number;
|
||||
b: number;
|
||||
};
|
||||
declare let o7: {
|
||||
readonly [x: string]: string;
|
||||
};
|
||||
declare let o8: {
|
||||
[x: string]: string;
|
||||
};
|
||||
declare let o9: {
|
||||
readonly x: 10;
|
||||
readonly foo: () => void;
|
||||
};
|
||||
declare let p1: 10;
|
||||
declare let p2: -10;
|
||||
declare let p3: readonly [10];
|
||||
declare let p4: readonly [readonly [readonly [readonly [10]]]];
|
||||
declare let x1: {
|
||||
readonly x: 10;
|
||||
readonly y: readonly [20, 30];
|
||||
z: {
|
||||
a: {
|
||||
readonly b: 42;
|
||||
};
|
||||
};
|
||||
};
|
||||
declare let q1: 10;
|
||||
declare let q2: "abc";
|
||||
declare let q3: true;
|
||||
declare let q4: readonly [1, 2, 3];
|
||||
declare let q5: {
|
||||
readonly x: 10;
|
||||
readonly y: 20;
|
||||
};
|
||||
declare function id<T>(x: T): T;
|
||||
declare let e1: "abc";
|
||||
declare let e2: 0 | 1;
|
||||
declare let e3: 1;
|
201
tests/baselines/reference/constAssertions.symbols
Normal file
201
tests/baselines/reference/constAssertions.symbols
Normal file
|
@ -0,0 +1,201 @@
|
|||
=== tests/cases/conformance/expressions/typeAssertions/constAssertions.ts ===
|
||||
let v1 = 'abc' as const;
|
||||
>v1 : Symbol(v1, Decl(constAssertions.ts, 0, 3))
|
||||
|
||||
let v2 = `abc` as const;
|
||||
>v2 : Symbol(v2, Decl(constAssertions.ts, 1, 3))
|
||||
|
||||
let v3 = 10 as const;
|
||||
>v3 : Symbol(v3, Decl(constAssertions.ts, 2, 3))
|
||||
|
||||
let v4 = -10 as const;
|
||||
>v4 : Symbol(v4, Decl(constAssertions.ts, 3, 3))
|
||||
|
||||
let v5 = +10 as const;
|
||||
>v5 : Symbol(v5, Decl(constAssertions.ts, 4, 3))
|
||||
|
||||
let v6 = 10n as const;
|
||||
>v6 : Symbol(v6, Decl(constAssertions.ts, 5, 3))
|
||||
|
||||
let v7 = -10n as const;
|
||||
>v7 : Symbol(v7, Decl(constAssertions.ts, 6, 3))
|
||||
|
||||
let v8 = true as const;
|
||||
>v8 : Symbol(v8, Decl(constAssertions.ts, 7, 3))
|
||||
|
||||
let v9 = false as const;
|
||||
>v9 : Symbol(v9, Decl(constAssertions.ts, 8, 3))
|
||||
|
||||
let c1 = 'abc' as const;
|
||||
>c1 : Symbol(c1, Decl(constAssertions.ts, 10, 3))
|
||||
|
||||
let c2 = `abc` as const;
|
||||
>c2 : Symbol(c2, Decl(constAssertions.ts, 11, 3))
|
||||
|
||||
let c3 = 10 as const;
|
||||
>c3 : Symbol(c3, Decl(constAssertions.ts, 12, 3))
|
||||
|
||||
let c4 = -10 as const;
|
||||
>c4 : Symbol(c4, Decl(constAssertions.ts, 13, 3))
|
||||
|
||||
let c5 = +10 as const;
|
||||
>c5 : Symbol(c5, Decl(constAssertions.ts, 14, 3))
|
||||
|
||||
let c6 = 10n as const;
|
||||
>c6 : Symbol(c6, Decl(constAssertions.ts, 15, 3))
|
||||
|
||||
let c7 = -10n as const;
|
||||
>c7 : Symbol(c7, Decl(constAssertions.ts, 16, 3))
|
||||
|
||||
let c8 = true as const;
|
||||
>c8 : Symbol(c8, Decl(constAssertions.ts, 17, 3))
|
||||
|
||||
let c9 = false as const;
|
||||
>c9 : Symbol(c9, Decl(constAssertions.ts, 18, 3))
|
||||
|
||||
let vv1 = v1;
|
||||
>vv1 : Symbol(vv1, Decl(constAssertions.ts, 20, 3))
|
||||
>v1 : Symbol(v1, Decl(constAssertions.ts, 0, 3))
|
||||
|
||||
let vc1 = c1;
|
||||
>vc1 : Symbol(vc1, Decl(constAssertions.ts, 21, 3))
|
||||
>c1 : Symbol(c1, Decl(constAssertions.ts, 10, 3))
|
||||
|
||||
let a1 = [] as const;
|
||||
>a1 : Symbol(a1, Decl(constAssertions.ts, 23, 3))
|
||||
|
||||
let a2 = [1, 2, 3] as const;
|
||||
>a2 : Symbol(a2, Decl(constAssertions.ts, 24, 3))
|
||||
|
||||
let a3 = [10, 'hello', true] as const;
|
||||
>a3 : Symbol(a3, Decl(constAssertions.ts, 25, 3))
|
||||
|
||||
let a4 = [...[1, 2, 3]] as const;
|
||||
>a4 : Symbol(a4, Decl(constAssertions.ts, 26, 3))
|
||||
|
||||
let a5 = [1, 2, 3];
|
||||
>a5 : Symbol(a5, Decl(constAssertions.ts, 27, 3))
|
||||
|
||||
let a6 = [...a5] as const;
|
||||
>a6 : Symbol(a6, Decl(constAssertions.ts, 28, 3))
|
||||
>a5 : Symbol(a5, Decl(constAssertions.ts, 27, 3))
|
||||
|
||||
let a7 = [...a6];
|
||||
>a7 : Symbol(a7, Decl(constAssertions.ts, 29, 3))
|
||||
>a6 : Symbol(a6, Decl(constAssertions.ts, 28, 3))
|
||||
|
||||
let a8 = ['abc', ...a7] as const;
|
||||
>a8 : Symbol(a8, Decl(constAssertions.ts, 30, 3))
|
||||
>a7 : Symbol(a7, Decl(constAssertions.ts, 29, 3))
|
||||
|
||||
let a9 = [...a8];
|
||||
>a9 : Symbol(a9, Decl(constAssertions.ts, 31, 3))
|
||||
>a8 : Symbol(a8, Decl(constAssertions.ts, 30, 3))
|
||||
|
||||
declare let d: { [x: string]: string };
|
||||
>d : Symbol(d, Decl(constAssertions.ts, 33, 11))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 33, 18))
|
||||
|
||||
let o1 = { x: 10, y: 20 } as const;
|
||||
>o1 : Symbol(o1, Decl(constAssertions.ts, 35, 3))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 35, 10))
|
||||
>y : Symbol(y, Decl(constAssertions.ts, 35, 17))
|
||||
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const;
|
||||
>o2 : Symbol(o2, Decl(constAssertions.ts, 36, 3))
|
||||
>a : Symbol(a, Decl(constAssertions.ts, 36, 10))
|
||||
>'b' : Symbol('b', Decl(constAssertions.ts, 36, 16))
|
||||
>['c'] : Symbol(['c'], Decl(constAssertions.ts, 36, 24))
|
||||
>'c' : Symbol(['c'], Decl(constAssertions.ts, 36, 24))
|
||||
>d : Symbol(d, Decl(constAssertions.ts, 36, 34))
|
||||
>['e' + ''] : Symbol(['e' + ''], Decl(constAssertions.ts, 36, 42))
|
||||
|
||||
let o3 = { ...o1, ...o2 } as const;
|
||||
>o3 : Symbol(o3, Decl(constAssertions.ts, 37, 3))
|
||||
>o1 : Symbol(o1, Decl(constAssertions.ts, 35, 3))
|
||||
>o2 : Symbol(o2, Decl(constAssertions.ts, 36, 3))
|
||||
|
||||
let o4 = { a: 1, b: 2 };
|
||||
>o4 : Symbol(o4, Decl(constAssertions.ts, 38, 3))
|
||||
>a : Symbol(a, Decl(constAssertions.ts, 38, 10))
|
||||
>b : Symbol(b, Decl(constAssertions.ts, 38, 16))
|
||||
|
||||
let o5 = { ...o4 } as const;
|
||||
>o5 : Symbol(o5, Decl(constAssertions.ts, 39, 3))
|
||||
>o4 : Symbol(o4, Decl(constAssertions.ts, 38, 3))
|
||||
|
||||
let o6 = { ...o5 };
|
||||
>o6 : Symbol(o6, Decl(constAssertions.ts, 40, 3))
|
||||
>o5 : Symbol(o5, Decl(constAssertions.ts, 39, 3))
|
||||
|
||||
let o7 = { ...d } as const;
|
||||
>o7 : Symbol(o7, Decl(constAssertions.ts, 41, 3))
|
||||
>d : Symbol(d, Decl(constAssertions.ts, 33, 11))
|
||||
|
||||
let o8 = { ...o7 };
|
||||
>o8 : Symbol(o8, Decl(constAssertions.ts, 42, 3))
|
||||
>o7 : Symbol(o7, Decl(constAssertions.ts, 41, 3))
|
||||
|
||||
let o9 = { x: 10, foo() { this.x = 20 } } as const; // Error
|
||||
>o9 : Symbol(o9, Decl(constAssertions.ts, 43, 3))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 43, 10))
|
||||
>foo : Symbol(foo, Decl(constAssertions.ts, 43, 17))
|
||||
>this.x : Symbol(x, Decl(constAssertions.ts, 43, 10))
|
||||
>this : Symbol(__object, Decl(constAssertions.ts, 43, 8))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 43, 10))
|
||||
|
||||
let p1 = (10) as const;
|
||||
>p1 : Symbol(p1, Decl(constAssertions.ts, 45, 3))
|
||||
|
||||
let p2 = ((-10)) as const;
|
||||
>p2 : Symbol(p2, Decl(constAssertions.ts, 46, 3))
|
||||
|
||||
let p3 = ([(10)]) as const;
|
||||
>p3 : Symbol(p3, Decl(constAssertions.ts, 47, 3))
|
||||
|
||||
let p4 = [[[[10]]]] as const;
|
||||
>p4 : Symbol(p4, Decl(constAssertions.ts, 48, 3))
|
||||
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } } as const;
|
||||
>x1 : Symbol(x1, Decl(constAssertions.ts, 50, 3))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 50, 10))
|
||||
>y : Symbol(y, Decl(constAssertions.ts, 50, 17))
|
||||
>z : Symbol(z, Decl(constAssertions.ts, 50, 30))
|
||||
>a : Symbol(a, Decl(constAssertions.ts, 50, 35))
|
||||
>b : Symbol(b, Decl(constAssertions.ts, 50, 40))
|
||||
|
||||
let q1 = <const> 10;
|
||||
>q1 : Symbol(q1, Decl(constAssertions.ts, 52, 3))
|
||||
|
||||
let q2 = <const> 'abc';
|
||||
>q2 : Symbol(q2, Decl(constAssertions.ts, 53, 3))
|
||||
|
||||
let q3 = <const> true;
|
||||
>q3 : Symbol(q3, Decl(constAssertions.ts, 54, 3))
|
||||
|
||||
let q4 = <const> [1, 2, 3];
|
||||
>q4 : Symbol(q4, Decl(constAssertions.ts, 55, 3))
|
||||
|
||||
let q5 = <const> { x: 10, y: 20 };
|
||||
>q5 : Symbol(q5, Decl(constAssertions.ts, 56, 3))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 56, 18))
|
||||
>y : Symbol(y, Decl(constAssertions.ts, 56, 25))
|
||||
|
||||
declare function id<T>(x: T): T;
|
||||
>id : Symbol(id, Decl(constAssertions.ts, 56, 34))
|
||||
>T : Symbol(T, Decl(constAssertions.ts, 58, 20))
|
||||
>x : Symbol(x, Decl(constAssertions.ts, 58, 23))
|
||||
>T : Symbol(T, Decl(constAssertions.ts, 58, 20))
|
||||
>T : Symbol(T, Decl(constAssertions.ts, 58, 20))
|
||||
|
||||
let e1 = v1 as const; // Error
|
||||
>e1 : Symbol(e1, Decl(constAssertions.ts, 60, 3))
|
||||
>v1 : Symbol(v1, Decl(constAssertions.ts, 0, 3))
|
||||
|
||||
let e2 = (true ? 1 : 0) as const; // Error
|
||||
>e2 : Symbol(e2, Decl(constAssertions.ts, 61, 3))
|
||||
|
||||
let e3 = id(1) as const; // Error
|
||||
>e3 : Symbol(e3, Decl(constAssertions.ts, 62, 3))
|
||||
>id : Symbol(id, Decl(constAssertions.ts, 56, 34))
|
||||
|
356
tests/baselines/reference/constAssertions.types
Normal file
356
tests/baselines/reference/constAssertions.types
Normal file
|
@ -0,0 +1,356 @@
|
|||
=== tests/cases/conformance/expressions/typeAssertions/constAssertions.ts ===
|
||||
let v1 = 'abc' as const;
|
||||
>v1 : "abc"
|
||||
>'abc' as const : "abc"
|
||||
>'abc' : "abc"
|
||||
|
||||
let v2 = `abc` as const;
|
||||
>v2 : "abc"
|
||||
>`abc` as const : "abc"
|
||||
>`abc` : "abc"
|
||||
|
||||
let v3 = 10 as const;
|
||||
>v3 : 10
|
||||
>10 as const : 10
|
||||
>10 : 10
|
||||
|
||||
let v4 = -10 as const;
|
||||
>v4 : -10
|
||||
>-10 as const : -10
|
||||
>-10 : -10
|
||||
>10 : 10
|
||||
|
||||
let v5 = +10 as const;
|
||||
>v5 : 10
|
||||
>+10 as const : 10
|
||||
>+10 : 10
|
||||
>10 : 10
|
||||
|
||||
let v6 = 10n as const;
|
||||
>v6 : 10n
|
||||
>10n as const : 10n
|
||||
>10n : 10n
|
||||
|
||||
let v7 = -10n as const;
|
||||
>v7 : -10n
|
||||
>-10n as const : -10n
|
||||
>-10n : -10n
|
||||
>10n : 10n
|
||||
|
||||
let v8 = true as const;
|
||||
>v8 : true
|
||||
>true as const : true
|
||||
>true : true
|
||||
|
||||
let v9 = false as const;
|
||||
>v9 : false
|
||||
>false as const : false
|
||||
>false : false
|
||||
|
||||
let c1 = 'abc' as const;
|
||||
>c1 : "abc"
|
||||
>'abc' as const : "abc"
|
||||
>'abc' : "abc"
|
||||
|
||||
let c2 = `abc` as const;
|
||||
>c2 : "abc"
|
||||
>`abc` as const : "abc"
|
||||
>`abc` : "abc"
|
||||
|
||||
let c3 = 10 as const;
|
||||
>c3 : 10
|
||||
>10 as const : 10
|
||||
>10 : 10
|
||||
|
||||
let c4 = -10 as const;
|
||||
>c4 : -10
|
||||
>-10 as const : -10
|
||||
>-10 : -10
|
||||
>10 : 10
|
||||
|
||||
let c5 = +10 as const;
|
||||
>c5 : 10
|
||||
>+10 as const : 10
|
||||
>+10 : 10
|
||||
>10 : 10
|
||||
|
||||
let c6 = 10n as const;
|
||||
>c6 : 10n
|
||||
>10n as const : 10n
|
||||
>10n : 10n
|
||||
|
||||
let c7 = -10n as const;
|
||||
>c7 : -10n
|
||||
>-10n as const : -10n
|
||||
>-10n : -10n
|
||||
>10n : 10n
|
||||
|
||||
let c8 = true as const;
|
||||
>c8 : true
|
||||
>true as const : true
|
||||
>true : true
|
||||
|
||||
let c9 = false as const;
|
||||
>c9 : false
|
||||
>false as const : false
|
||||
>false : false
|
||||
|
||||
let vv1 = v1;
|
||||
>vv1 : "abc"
|
||||
>v1 : "abc"
|
||||
|
||||
let vc1 = c1;
|
||||
>vc1 : "abc"
|
||||
>c1 : "abc"
|
||||
|
||||
let a1 = [] as const;
|
||||
>a1 : readonly []
|
||||
>[] as const : readonly []
|
||||
>[] : readonly []
|
||||
|
||||
let a2 = [1, 2, 3] as const;
|
||||
>a2 : readonly [1, 2, 3]
|
||||
>[1, 2, 3] as const : readonly [1, 2, 3]
|
||||
>[1, 2, 3] : readonly [1, 2, 3]
|
||||
>1 : 1
|
||||
>2 : 2
|
||||
>3 : 3
|
||||
|
||||
let a3 = [10, 'hello', true] as const;
|
||||
>a3 : readonly [10, "hello", true]
|
||||
>[10, 'hello', true] as const : readonly [10, "hello", true]
|
||||
>[10, 'hello', true] : readonly [10, "hello", true]
|
||||
>10 : 10
|
||||
>'hello' : "hello"
|
||||
>true : true
|
||||
|
||||
let a4 = [...[1, 2, 3]] as const;
|
||||
>a4 : readonly (1 | 2 | 3)[]
|
||||
>[...[1, 2, 3]] as const : readonly (1 | 2 | 3)[]
|
||||
>[...[1, 2, 3]] : readonly (1 | 2 | 3)[]
|
||||
>...[1, 2, 3] : 1 | 2 | 3
|
||||
>[1, 2, 3] : readonly [1, 2, 3]
|
||||
>1 : 1
|
||||
>2 : 2
|
||||
>3 : 3
|
||||
|
||||
let a5 = [1, 2, 3];
|
||||
>a5 : number[]
|
||||
>[1, 2, 3] : number[]
|
||||
>1 : 1
|
||||
>2 : 2
|
||||
>3 : 3
|
||||
|
||||
let a6 = [...a5] as const;
|
||||
>a6 : readonly number[]
|
||||
>[...a5] as const : readonly number[]
|
||||
>[...a5] : readonly number[]
|
||||
>...a5 : number
|
||||
>a5 : number[]
|
||||
|
||||
let a7 = [...a6];
|
||||
>a7 : number[]
|
||||
>[...a6] : number[]
|
||||
>...a6 : number
|
||||
>a6 : readonly number[]
|
||||
|
||||
let a8 = ['abc', ...a7] as const;
|
||||
>a8 : readonly ["abc", ...number[]]
|
||||
>['abc', ...a7] as const : readonly ["abc", ...number[]]
|
||||
>['abc', ...a7] : readonly ["abc", ...number[]]
|
||||
>'abc' : "abc"
|
||||
>...a7 : number
|
||||
>a7 : number[]
|
||||
|
||||
let a9 = [...a8];
|
||||
>a9 : (number | "abc")[]
|
||||
>[...a8] : (number | "abc")[]
|
||||
>...a8 : number | "abc"
|
||||
>a8 : readonly ["abc", ...number[]]
|
||||
|
||||
declare let d: { [x: string]: string };
|
||||
>d : { [x: string]: string; }
|
||||
>x : string
|
||||
|
||||
let o1 = { x: 10, y: 20 } as const;
|
||||
>o1 : { readonly x: 10; readonly y: 20; }
|
||||
>{ x: 10, y: 20 } as const : { readonly x: 10; readonly y: 20; }
|
||||
>{ x: 10, y: 20 } : { readonly x: 10; readonly y: 20; }
|
||||
>x : 10
|
||||
>10 : 10
|
||||
>y : 20
|
||||
>20 : 20
|
||||
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const;
|
||||
>o2 : { readonly [x: string]: 1 | 2 | 3 | (() => void) | 4; readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; }
|
||||
>{ a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const : { readonly [x: string]: 1 | 2 | 3 | (() => void) | 4; readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; }
|
||||
>{ a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } : { readonly [x: string]: 1 | 2 | 3 | (() => void) | 4; readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; }
|
||||
>a : 1
|
||||
>1 : 1
|
||||
>'b' : 2
|
||||
>2 : 2
|
||||
>['c'] : 3
|
||||
>'c' : "c"
|
||||
>3 : 3
|
||||
>d : () => void
|
||||
>['e' + ''] : 4
|
||||
>'e' + '' : string
|
||||
>'e' : "e"
|
||||
>'' : ""
|
||||
>4 : 4
|
||||
|
||||
let o3 = { ...o1, ...o2 } as const;
|
||||
>o3 : { readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; readonly x: 10; readonly y: 20; }
|
||||
>{ ...o1, ...o2 } as const : { readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; readonly x: 10; readonly y: 20; }
|
||||
>{ ...o1, ...o2 } : { readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; readonly x: 10; readonly y: 20; }
|
||||
>o1 : { readonly x: 10; readonly y: 20; }
|
||||
>o2 : { readonly [x: string]: 1 | 2 | 3 | (() => void) | 4; readonly a: 1; readonly 'b': 2; readonly ['c']: 3; readonly d: () => void; }
|
||||
|
||||
let o4 = { a: 1, b: 2 };
|
||||
>o4 : { a: number; b: number; }
|
||||
>{ a: 1, b: 2 } : { a: number; b: number; }
|
||||
>a : number
|
||||
>1 : 1
|
||||
>b : number
|
||||
>2 : 2
|
||||
|
||||
let o5 = { ...o4 } as const;
|
||||
>o5 : { readonly a: number; readonly b: number; }
|
||||
>{ ...o4 } as const : { readonly a: number; readonly b: number; }
|
||||
>{ ...o4 } : { readonly a: number; readonly b: number; }
|
||||
>o4 : { a: number; b: number; }
|
||||
|
||||
let o6 = { ...o5 };
|
||||
>o6 : { a: number; b: number; }
|
||||
>{ ...o5 } : { a: number; b: number; }
|
||||
>o5 : { readonly a: number; readonly b: number; }
|
||||
|
||||
let o7 = { ...d } as const;
|
||||
>o7 : { readonly [x: string]: string; }
|
||||
>{ ...d } as const : { readonly [x: string]: string; }
|
||||
>{ ...d } : { readonly [x: string]: string; }
|
||||
>d : { [x: string]: string; }
|
||||
|
||||
let o8 = { ...o7 };
|
||||
>o8 : { [x: string]: string; }
|
||||
>{ ...o7 } : { [x: string]: string; }
|
||||
>o7 : { readonly [x: string]: string; }
|
||||
|
||||
let o9 = { x: 10, foo() { this.x = 20 } } as const; // Error
|
||||
>o9 : { readonly x: 10; readonly foo: () => void; }
|
||||
>{ x: 10, foo() { this.x = 20 } } as const : { readonly x: 10; readonly foo: () => void; }
|
||||
>{ x: 10, foo() { this.x = 20 } } : { readonly x: 10; readonly foo: () => void; }
|
||||
>x : 10
|
||||
>10 : 10
|
||||
>foo : () => void
|
||||
>this.x = 20 : 20
|
||||
>this.x : any
|
||||
>this : { readonly x: 10; readonly foo: () => void; }
|
||||
>x : any
|
||||
>20 : 20
|
||||
|
||||
let p1 = (10) as const;
|
||||
>p1 : 10
|
||||
>(10) as const : 10
|
||||
>(10) : 10
|
||||
>10 : 10
|
||||
|
||||
let p2 = ((-10)) as const;
|
||||
>p2 : -10
|
||||
>((-10)) as const : -10
|
||||
>((-10)) : -10
|
||||
>(-10) : -10
|
||||
>-10 : -10
|
||||
>10 : 10
|
||||
|
||||
let p3 = ([(10)]) as const;
|
||||
>p3 : readonly [10]
|
||||
>([(10)]) as const : readonly [10]
|
||||
>([(10)]) : readonly [10]
|
||||
>[(10)] : readonly [10]
|
||||
>(10) : 10
|
||||
>10 : 10
|
||||
|
||||
let p4 = [[[[10]]]] as const;
|
||||
>p4 : readonly [readonly [readonly [readonly [10]]]]
|
||||
>[[[[10]]]] as const : readonly [readonly [readonly [readonly [10]]]]
|
||||
>[[[[10]]]] : readonly [readonly [readonly [readonly [10]]]]
|
||||
>[[[10]]] : readonly [readonly [readonly [10]]]
|
||||
>[[10]] : readonly [readonly [10]]
|
||||
>[10] : readonly [10]
|
||||
>10 : 10
|
||||
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } } as const;
|
||||
>x1 : { readonly x: 10; readonly y: readonly [20, 30]; z: { a: { readonly b: 42; }; }; }
|
||||
>{ x: 10, y: [20, 30], z: { a: { b: 42 } } } as const : { readonly x: 10; readonly y: readonly [20, 30]; readonly z: { readonly a: { readonly b: 42; }; }; }
|
||||
>{ x: 10, y: [20, 30], z: { a: { b: 42 } } } : { readonly x: 10; readonly y: readonly [20, 30]; readonly z: { readonly a: { readonly b: 42; }; }; }
|
||||
>x : 10
|
||||
>10 : 10
|
||||
>y : readonly [20, 30]
|
||||
>[20, 30] : readonly [20, 30]
|
||||
>20 : 20
|
||||
>30 : 30
|
||||
>z : { readonly a: { readonly b: 42; }; }
|
||||
>{ a: { b: 42 } } : { readonly a: { readonly b: 42; }; }
|
||||
>a : { readonly b: 42; }
|
||||
>{ b: 42 } : { readonly b: 42; }
|
||||
>b : 42
|
||||
>42 : 42
|
||||
|
||||
let q1 = <const> 10;
|
||||
>q1 : 10
|
||||
><const> 10 : 10
|
||||
>10 : 10
|
||||
|
||||
let q2 = <const> 'abc';
|
||||
>q2 : "abc"
|
||||
><const> 'abc' : "abc"
|
||||
>'abc' : "abc"
|
||||
|
||||
let q3 = <const> true;
|
||||
>q3 : true
|
||||
><const> true : true
|
||||
>true : true
|
||||
|
||||
let q4 = <const> [1, 2, 3];
|
||||
>q4 : readonly [1, 2, 3]
|
||||
><const> [1, 2, 3] : readonly [1, 2, 3]
|
||||
>[1, 2, 3] : readonly [1, 2, 3]
|
||||
>1 : 1
|
||||
>2 : 2
|
||||
>3 : 3
|
||||
|
||||
let q5 = <const> { x: 10, y: 20 };
|
||||
>q5 : { readonly x: 10; readonly y: 20; }
|
||||
><const> { x: 10, y: 20 } : { readonly x: 10; readonly y: 20; }
|
||||
>{ x: 10, y: 20 } : { readonly x: 10; readonly y: 20; }
|
||||
>x : 10
|
||||
>10 : 10
|
||||
>y : 20
|
||||
>20 : 20
|
||||
|
||||
declare function id<T>(x: T): T;
|
||||
>id : <T>(x: T) => T
|
||||
>x : T
|
||||
|
||||
let e1 = v1 as const; // Error
|
||||
>e1 : "abc"
|
||||
>v1 as const : "abc"
|
||||
>v1 : "abc"
|
||||
|
||||
let e2 = (true ? 1 : 0) as const; // Error
|
||||
>e2 : 0 | 1
|
||||
>(true ? 1 : 0) as const : 0 | 1
|
||||
>(true ? 1 : 0) : 0 | 1
|
||||
>true ? 1 : 0 : 0 | 1
|
||||
>true : true
|
||||
>1 : 1
|
||||
>0 : 0
|
||||
|
||||
let e3 = id(1) as const; // Error
|
||||
>e3 : 1
|
||||
>id(1) as const : 1
|
||||
>id(1) : 1
|
||||
>id : <T>(x: T) => T
|
||||
>1 : 1
|
||||
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,13): error TS2503: Cannot find namespace 'module'.
|
||||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,13): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,13): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(11,19): error TS1005: ';' expected.
|
||||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(22,35): error TS1005: ')' expected.
|
||||
tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(22,39): error TS2363: The right-hand side of an arithmetic operation must be of type 'any', 'number', 'bigint' or an enum type.
|
||||
|
@ -105,7 +105,7 @@ tests/cases/compiler/constructorWithIncompleteTypeAnnotation.ts(261,1): error TS
|
|||
~~~~~~
|
||||
!!! error TS2503: Cannot find namespace 'module'.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
|
||||
|
|
|
@ -0,0 +1,42 @@
|
|||
tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts(8,29): error TS7031: Binding element 'foo' implicitly has an 'any' type.
|
||||
tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts(14,27): error TS7006: Parameter 'foo' implicitly has an 'any' type.
|
||||
tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts(27,42): error TS7031: Binding element 'foo' implicitly has an 'any' type.
|
||||
|
||||
|
||||
==== tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts (3 errors) ====
|
||||
declare function id1<T>(input: T): T;
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
declare function id3<T extends (x: { foo: any }) => any>(input: T): T;
|
||||
declare function id4<T extends (x: { foo?: number }) => any>(input: T): T;
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
|
||||
const f10 = function ({ foo = 42 }) { return foo };
|
||||
const f11 = id1(function ({ foo = 42 }) { return foo }); // Implicit any error
|
||||
~~~
|
||||
!!! error TS7031: Binding element 'foo' implicitly has an 'any' type.
|
||||
const f12 = id2(function ({ foo = 42 }) { return foo });
|
||||
const f13 = id3(function ({ foo = 42 }) { return foo });
|
||||
const f14 = id4(function ({ foo = 42 }) { return foo });
|
||||
|
||||
const f20 = function (foo = 42) { return foo };
|
||||
const f21 = id1(function (foo = 42) { return foo }); // Implicit any error
|
||||
~~~~~~~~
|
||||
!!! error TS7006: Parameter 'foo' implicitly has an 'any' type.
|
||||
const f22 = id2(function (foo = 42) { return foo });
|
||||
const f25 = id5(function (foo = 42) { return foo });
|
||||
|
||||
// Repro from #28816
|
||||
|
||||
function id<T>(input: T): T { return input }
|
||||
|
||||
function getFoo ({ foo = 42 }) {
|
||||
return foo;
|
||||
}
|
||||
|
||||
const newGetFoo = id(getFoo);
|
||||
const newGetFoo2 = id(function getFoo ({ foo = 42 }) {
|
||||
~~~
|
||||
!!! error TS7031: Binding element 'foo' implicitly has an 'any' type.
|
||||
return foo;
|
||||
});
|
||||
|
|
@ -0,0 +1,114 @@
|
|||
//// [contextuallyTypedParametersWithInitializers.ts]
|
||||
declare function id1<T>(input: T): T;
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
declare function id3<T extends (x: { foo: any }) => any>(input: T): T;
|
||||
declare function id4<T extends (x: { foo?: number }) => any>(input: T): T;
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
|
||||
const f10 = function ({ foo = 42 }) { return foo };
|
||||
const f11 = id1(function ({ foo = 42 }) { return foo }); // Implicit any error
|
||||
const f12 = id2(function ({ foo = 42 }) { return foo });
|
||||
const f13 = id3(function ({ foo = 42 }) { return foo });
|
||||
const f14 = id4(function ({ foo = 42 }) { return foo });
|
||||
|
||||
const f20 = function (foo = 42) { return foo };
|
||||
const f21 = id1(function (foo = 42) { return foo }); // Implicit any error
|
||||
const f22 = id2(function (foo = 42) { return foo });
|
||||
const f25 = id5(function (foo = 42) { return foo });
|
||||
|
||||
// Repro from #28816
|
||||
|
||||
function id<T>(input: T): T { return input }
|
||||
|
||||
function getFoo ({ foo = 42 }) {
|
||||
return foo;
|
||||
}
|
||||
|
||||
const newGetFoo = id(getFoo);
|
||||
const newGetFoo2 = id(function getFoo ({ foo = 42 }) {
|
||||
return foo;
|
||||
});
|
||||
|
||||
|
||||
//// [contextuallyTypedParametersWithInitializers.js]
|
||||
"use strict";
|
||||
var f10 = function (_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
};
|
||||
var f11 = id1(function (_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
}); // Implicit any error
|
||||
var f12 = id2(function (_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
});
|
||||
var f13 = id3(function (_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
});
|
||||
var f14 = id4(function (_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
});
|
||||
var f20 = function (foo) {
|
||||
if (foo === void 0) { foo = 42; }
|
||||
return foo;
|
||||
};
|
||||
var f21 = id1(function (foo) {
|
||||
if (foo === void 0) { foo = 42; }
|
||||
return foo;
|
||||
}); // Implicit any error
|
||||
var f22 = id2(function (foo) {
|
||||
if (foo === void 0) { foo = 42; }
|
||||
return foo;
|
||||
});
|
||||
var f25 = id5(function (foo) {
|
||||
if (foo === void 0) { foo = 42; }
|
||||
return foo;
|
||||
});
|
||||
// Repro from #28816
|
||||
function id(input) { return input; }
|
||||
function getFoo(_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
}
|
||||
var newGetFoo = id(getFoo);
|
||||
var newGetFoo2 = id(function getFoo(_a) {
|
||||
var _b = _a.foo, foo = _b === void 0 ? 42 : _b;
|
||||
return foo;
|
||||
});
|
||||
|
||||
|
||||
//// [contextuallyTypedParametersWithInitializers.d.ts]
|
||||
declare function id1<T>(input: T): T;
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
declare function id3<T extends (x: {
|
||||
foo: any;
|
||||
}) => any>(input: T): T;
|
||||
declare function id4<T extends (x: {
|
||||
foo?: number;
|
||||
}) => any>(input: T): T;
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
declare const f10: ({ foo }: {
|
||||
foo?: number | undefined;
|
||||
}) => number;
|
||||
declare const f11: ({ foo }: any) => any;
|
||||
declare const f12: ({ foo }: any) => any;
|
||||
declare const f13: ({ foo }: {
|
||||
foo: any;
|
||||
}) => any;
|
||||
declare const f14: ({ foo }: {
|
||||
foo?: number | undefined;
|
||||
}) => number;
|
||||
declare const f20: (foo?: number) => number;
|
||||
declare const f21: (foo?: any) => any;
|
||||
declare const f22: (foo?: any) => any;
|
||||
declare const f25: (foo?: number | undefined) => number;
|
||||
declare function id<T>(input: T): T;
|
||||
declare function getFoo({ foo }: {
|
||||
foo?: number | undefined;
|
||||
}): number;
|
||||
declare const newGetFoo: typeof getFoo;
|
||||
declare const newGetFoo2: ({ foo }: any) => any;
|
|
@ -0,0 +1,128 @@
|
|||
=== tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts ===
|
||||
declare function id1<T>(input: T): T;
|
||||
>id1 : Symbol(id1, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 0))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 21))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 24))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 21))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 21))
|
||||
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
>id2 : Symbol(id2, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 37))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 21))
|
||||
>x : Symbol(x, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 32))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 48))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 21))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 21))
|
||||
|
||||
declare function id3<T extends (x: { foo: any }) => any>(input: T): T;
|
||||
>id3 : Symbol(id3, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 61))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 21))
|
||||
>x : Symbol(x, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 32))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 36))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 57))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 21))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 21))
|
||||
|
||||
declare function id4<T extends (x: { foo?: number }) => any>(input: T): T;
|
||||
>id4 : Symbol(id4, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 70))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 21))
|
||||
>x : Symbol(x, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 32))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 36))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 61))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 21))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 21))
|
||||
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
>id5 : Symbol(id5, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 74))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 4, 21))
|
||||
>x : Symbol(x, Decl(contextuallyTypedParametersWithInitializers.ts, 4, 32))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 4, 52))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 4, 21))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 4, 21))
|
||||
|
||||
const f10 = function ({ foo = 42 }) { return foo };
|
||||
>f10 : Symbol(f10, Decl(contextuallyTypedParametersWithInitializers.ts, 6, 5))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 6, 23))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 6, 23))
|
||||
|
||||
const f11 = id1(function ({ foo = 42 }) { return foo }); // Implicit any error
|
||||
>f11 : Symbol(f11, Decl(contextuallyTypedParametersWithInitializers.ts, 7, 5))
|
||||
>id1 : Symbol(id1, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 0))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 7, 27))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 7, 27))
|
||||
|
||||
const f12 = id2(function ({ foo = 42 }) { return foo });
|
||||
>f12 : Symbol(f12, Decl(contextuallyTypedParametersWithInitializers.ts, 8, 5))
|
||||
>id2 : Symbol(id2, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 37))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 8, 27))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 8, 27))
|
||||
|
||||
const f13 = id3(function ({ foo = 42 }) { return foo });
|
||||
>f13 : Symbol(f13, Decl(contextuallyTypedParametersWithInitializers.ts, 9, 5))
|
||||
>id3 : Symbol(id3, Decl(contextuallyTypedParametersWithInitializers.ts, 1, 61))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 9, 27))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 9, 27))
|
||||
|
||||
const f14 = id4(function ({ foo = 42 }) { return foo });
|
||||
>f14 : Symbol(f14, Decl(contextuallyTypedParametersWithInitializers.ts, 10, 5))
|
||||
>id4 : Symbol(id4, Decl(contextuallyTypedParametersWithInitializers.ts, 2, 70))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 10, 27))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 10, 27))
|
||||
|
||||
const f20 = function (foo = 42) { return foo };
|
||||
>f20 : Symbol(f20, Decl(contextuallyTypedParametersWithInitializers.ts, 12, 5))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 12, 22))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 12, 22))
|
||||
|
||||
const f21 = id1(function (foo = 42) { return foo }); // Implicit any error
|
||||
>f21 : Symbol(f21, Decl(contextuallyTypedParametersWithInitializers.ts, 13, 5))
|
||||
>id1 : Symbol(id1, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 0))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 13, 26))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 13, 26))
|
||||
|
||||
const f22 = id2(function (foo = 42) { return foo });
|
||||
>f22 : Symbol(f22, Decl(contextuallyTypedParametersWithInitializers.ts, 14, 5))
|
||||
>id2 : Symbol(id2, Decl(contextuallyTypedParametersWithInitializers.ts, 0, 37))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 14, 26))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 14, 26))
|
||||
|
||||
const f25 = id5(function (foo = 42) { return foo });
|
||||
>f25 : Symbol(f25, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 5))
|
||||
>id5 : Symbol(id5, Decl(contextuallyTypedParametersWithInitializers.ts, 3, 74))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 26))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 26))
|
||||
|
||||
// Repro from #28816
|
||||
|
||||
function id<T>(input: T): T { return input }
|
||||
>id : Symbol(id, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 52))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 12))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 15))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 12))
|
||||
>T : Symbol(T, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 12))
|
||||
>input : Symbol(input, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 15))
|
||||
|
||||
function getFoo ({ foo = 42 }) {
|
||||
>getFoo : Symbol(getFoo, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 44))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 21, 18))
|
||||
|
||||
return foo;
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 21, 18))
|
||||
}
|
||||
|
||||
const newGetFoo = id(getFoo);
|
||||
>newGetFoo : Symbol(newGetFoo, Decl(contextuallyTypedParametersWithInitializers.ts, 25, 5))
|
||||
>id : Symbol(id, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 52))
|
||||
>getFoo : Symbol(getFoo, Decl(contextuallyTypedParametersWithInitializers.ts, 19, 44))
|
||||
|
||||
const newGetFoo2 = id(function getFoo ({ foo = 42 }) {
|
||||
>newGetFoo2 : Symbol(newGetFoo2, Decl(contextuallyTypedParametersWithInitializers.ts, 26, 5))
|
||||
>id : Symbol(id, Decl(contextuallyTypedParametersWithInitializers.ts, 15, 52))
|
||||
>getFoo : Symbol(getFoo, Decl(contextuallyTypedParametersWithInitializers.ts, 26, 22))
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 26, 40))
|
||||
|
||||
return foo;
|
||||
>foo : Symbol(foo, Decl(contextuallyTypedParametersWithInitializers.ts, 26, 40))
|
||||
|
||||
});
|
||||
|
|
@ -0,0 +1,140 @@
|
|||
=== tests/cases/compiler/contextuallyTypedParametersWithInitializers.ts ===
|
||||
declare function id1<T>(input: T): T;
|
||||
>id1 : <T>(input: T) => T
|
||||
>input : T
|
||||
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
>id2 : <T extends (x: any) => any>(input: T) => T
|
||||
>x : any
|
||||
>input : T
|
||||
|
||||
declare function id3<T extends (x: { foo: any }) => any>(input: T): T;
|
||||
>id3 : <T extends (x: { foo: any; }) => any>(input: T) => T
|
||||
>x : { foo: any; }
|
||||
>foo : any
|
||||
>input : T
|
||||
|
||||
declare function id4<T extends (x: { foo?: number }) => any>(input: T): T;
|
||||
>id4 : <T extends (x: { foo?: number | undefined; }) => any>(input: T) => T
|
||||
>x : { foo?: number | undefined; }
|
||||
>foo : number | undefined
|
||||
>input : T
|
||||
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
>id5 : <T extends (x?: number | undefined) => any>(input: T) => T
|
||||
>x : number | undefined
|
||||
>input : T
|
||||
|
||||
const f10 = function ({ foo = 42 }) { return foo };
|
||||
>f10 : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>foo : number
|
||||
>42 : 42
|
||||
>foo : number
|
||||
|
||||
const f11 = id1(function ({ foo = 42 }) { return foo }); // Implicit any error
|
||||
>f11 : ({ foo }: any) => any
|
||||
>id1(function ({ foo = 42 }) { return foo }) : ({ foo }: any) => any
|
||||
>id1 : <T>(input: T) => T
|
||||
>function ({ foo = 42 }) { return foo } : ({ foo }: any) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
>foo : any
|
||||
|
||||
const f12 = id2(function ({ foo = 42 }) { return foo });
|
||||
>f12 : ({ foo }: any) => any
|
||||
>id2(function ({ foo = 42 }) { return foo }) : ({ foo }: any) => any
|
||||
>id2 : <T extends (x: any) => any>(input: T) => T
|
||||
>function ({ foo = 42 }) { return foo } : ({ foo }: any) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
>foo : any
|
||||
|
||||
const f13 = id3(function ({ foo = 42 }) { return foo });
|
||||
>f13 : ({ foo }: { foo: any; }) => any
|
||||
>id3(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo: any; }) => any
|
||||
>id3 : <T extends (x: { foo: any; }) => any>(input: T) => T
|
||||
>function ({ foo = 42 }) { return foo } : ({ foo }: { foo: any; }) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
>foo : any
|
||||
|
||||
const f14 = id4(function ({ foo = 42 }) { return foo });
|
||||
>f14 : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>id4(function ({ foo = 42 }) { return foo }) : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>id4 : <T extends (x: { foo?: number | undefined; }) => any>(input: T) => T
|
||||
>function ({ foo = 42 }) { return foo } : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>foo : number
|
||||
>42 : 42
|
||||
>foo : number
|
||||
|
||||
const f20 = function (foo = 42) { return foo };
|
||||
>f20 : (foo?: number) => number
|
||||
>function (foo = 42) { return foo } : (foo?: number) => number
|
||||
>foo : number
|
||||
>42 : 42
|
||||
>foo : number
|
||||
|
||||
const f21 = id1(function (foo = 42) { return foo }); // Implicit any error
|
||||
>f21 : (foo?: any) => any
|
||||
>id1(function (foo = 42) { return foo }) : (foo?: any) => any
|
||||
>id1 : <T>(input: T) => T
|
||||
>function (foo = 42) { return foo } : (foo?: any) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
>foo : any
|
||||
|
||||
const f22 = id2(function (foo = 42) { return foo });
|
||||
>f22 : (foo?: any) => any
|
||||
>id2(function (foo = 42) { return foo }) : (foo?: any) => any
|
||||
>id2 : <T extends (x: any) => any>(input: T) => T
|
||||
>function (foo = 42) { return foo } : (foo?: any) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
>foo : any
|
||||
|
||||
const f25 = id5(function (foo = 42) { return foo });
|
||||
>f25 : (foo?: number | undefined) => number
|
||||
>id5(function (foo = 42) { return foo }) : (foo?: number | undefined) => number
|
||||
>id5 : <T extends (x?: number | undefined) => any>(input: T) => T
|
||||
>function (foo = 42) { return foo } : (foo?: number | undefined) => number
|
||||
>foo : number | undefined
|
||||
>42 : 42
|
||||
>foo : number
|
||||
|
||||
// Repro from #28816
|
||||
|
||||
function id<T>(input: T): T { return input }
|
||||
>id : <T>(input: T) => T
|
||||
>input : T
|
||||
>input : T
|
||||
|
||||
function getFoo ({ foo = 42 }) {
|
||||
>getFoo : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>foo : number
|
||||
>42 : 42
|
||||
|
||||
return foo;
|
||||
>foo : number
|
||||
}
|
||||
|
||||
const newGetFoo = id(getFoo);
|
||||
>newGetFoo : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>id(getFoo) : ({ foo }: { foo?: number | undefined; }) => number
|
||||
>id : <T>(input: T) => T
|
||||
>getFoo : ({ foo }: { foo?: number | undefined; }) => number
|
||||
|
||||
const newGetFoo2 = id(function getFoo ({ foo = 42 }) {
|
||||
>newGetFoo2 : ({ foo }: any) => any
|
||||
>id(function getFoo ({ foo = 42 }) { return foo;}) : ({ foo }: any) => any
|
||||
>id : <T>(input: T) => T
|
||||
>function getFoo ({ foo = 42 }) { return foo;} : ({ foo }: any) => any
|
||||
>getFoo : ({ foo }: any) => any
|
||||
>foo : any
|
||||
>42 : 42
|
||||
|
||||
return foo;
|
||||
>foo : any
|
||||
|
||||
});
|
||||
|
|
@ -1,14 +1,14 @@
|
|||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(1,1): error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(2,5): error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(3,19): error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(7,1): error TS2582: Cannot find name 'suite'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(8,5): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(1,1): error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(2,5): error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(3,19): error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(7,1): error TS2582: Cannot find name 'suite'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(8,5): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(9,9): error TS2584: Cannot find name 'console'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom'.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(9,21): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(9,21): error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(10,9): error TS2584: Cannot find name 'document'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom'.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(12,19): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(13,19): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(14,19): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(12,19): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(13,19): error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(14,19): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(16,23): error TS2583: Cannot find name 'Map'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(17,23): error TS2583: Cannot find name 'Set'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
|
||||
tests/cases/compiler/didYouMeanSuggestionErrors.ts(18,23): error TS2583: Cannot find name 'WeakMap'. Do you need to change your target library? Try changing the `lib` compiler option to es2015 or later.
|
||||
|
@ -22,40 +22,40 @@ tests/cases/compiler/didYouMeanSuggestionErrors.ts(24,18): error TS2583: Cannot
|
|||
==== tests/cases/compiler/didYouMeanSuggestionErrors.ts (19 errors) ====
|
||||
describe("my test suite", () => {
|
||||
~~~~~~~~
|
||||
!!! error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'describe'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
it("should run", () => {
|
||||
~~
|
||||
!!! error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'it'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
const a = $(".thing");
|
||||
~
|
||||
!!! error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.
|
||||
!!! error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.
|
||||
});
|
||||
});
|
||||
|
||||
suite("another suite", () => {
|
||||
~~~~~
|
||||
!!! error TS2582: Cannot find name 'suite'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'suite'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
test("everything else", () => {
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
console.log(process.env);
|
||||
~~~~~~~
|
||||
!!! error TS2584: Cannot find name 'console'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom'.
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'process'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
document.createElement("div");
|
||||
~~~~~~~~
|
||||
!!! error TS2584: Cannot find name 'document'. Do you need to change your target library? Try changing the `lib` compiler option to include 'dom'.
|
||||
|
||||
const x = require("fs");
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
const y = Buffer.from([]);
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'Buffer'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
const z = module.exports;
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
const a = new Map();
|
||||
~~~
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
tests/cases/compiler/externModule.ts(1,1): error TS2304: Cannot find name 'declare'.
|
||||
tests/cases/compiler/externModule.ts(1,9): error TS1005: ';' expected.
|
||||
tests/cases/compiler/externModule.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/externModule.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/externModule.ts(1,16): error TS1005: ';' expected.
|
||||
tests/cases/compiler/externModule.ts(3,10): error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
tests/cases/compiler/externModule.ts(4,10): error TS2391: Function implementation is missing or not immediately following the declaration.
|
||||
|
@ -21,7 +21,7 @@ tests/cases/compiler/externModule.ts(37,3): error TS2552: Cannot find name 'XDat
|
|||
~~~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
export class XDate {
|
||||
|
|
|
@ -25,10 +25,10 @@ foo((x?)=>{return x;})
|
|||
foo((x=0)=>{return x;})
|
||||
>foo((x=0)=>{return x;}) : any
|
||||
>foo : any
|
||||
>(x=0)=>{return x;} : (x?: number) => number
|
||||
>x : number
|
||||
>(x=0)=>{return x;} : (x?: any) => any
|
||||
>x : any
|
||||
>0 : 0
|
||||
>x : number
|
||||
>x : any
|
||||
|
||||
var y = x:number => x*x;
|
||||
>y : any
|
||||
|
|
|
@ -653,8 +653,8 @@ foo(
|
|||
>116 : 116
|
||||
|
||||
(a = 0) => 117,
|
||||
>(a = 0) => 117 : (a?: number) => number
|
||||
>a : number
|
||||
>(a = 0) => 117 : (a?: any) => number
|
||||
>a : any
|
||||
>0 : 0
|
||||
>117 : 117
|
||||
|
||||
|
@ -670,9 +670,9 @@ foo(
|
|||
>119 : 119
|
||||
|
||||
(a, b? = 0, ...c: number[]) => 120,
|
||||
>(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: number, ...c: number[]) => number
|
||||
>(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: any, ...c: number[]) => number
|
||||
>a : any
|
||||
>b : number
|
||||
>b : any
|
||||
>0 : 0
|
||||
>c : number[]
|
||||
>120 : 120
|
||||
|
|
|
@ -88,8 +88,8 @@
|
|||
>116 : 116
|
||||
|
||||
(a = 0) => 117,
|
||||
>(a = 0) => 117 : (a?: number) => number
|
||||
>a : number
|
||||
>(a = 0) => 117 : (a?: any) => number
|
||||
>a : any
|
||||
>0 : 0
|
||||
>117 : 117
|
||||
|
||||
|
@ -105,9 +105,9 @@
|
|||
>119 : 119
|
||||
|
||||
(a, b? = 0, ...c: number[]) => 120,
|
||||
>(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: number, ...c: number[]) => number
|
||||
>(a, b? = 0, ...c: number[]) => 120 : (a: any, b?: any, ...c: number[]) => number
|
||||
>a : any
|
||||
>b : number
|
||||
>b : any
|
||||
>0 : 0
|
||||
>c : number[]
|
||||
>120 : 120
|
||||
|
|
|
@ -50,9 +50,9 @@ tests/cases/conformance/fixSignatureCaching.ts(915,36): error TS2339: Property '
|
|||
tests/cases/conformance/fixSignatureCaching.ts(915,53): error TS2339: Property 'mobileDetectRules' does not exist on type '{}'.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(955,42): error TS2339: Property 'mobileGrade' does not exist on type '{}'.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(964,57): error TS2339: Property 'getDeviceSmallerSide' does not exist on type '{}'.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(978,16): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(978,42): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(979,37): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(978,16): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(978,42): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(979,37): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(980,23): error TS2304: Cannot find name 'define'.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(980,48): error TS2304: Cannot find name 'define'.
|
||||
tests/cases/conformance/fixSignatureCaching.ts(981,16): error TS2304: Cannot find name 'define'.
|
||||
|
@ -1143,12 +1143,12 @@ tests/cases/conformance/fixSignatureCaching.ts(983,44): error TS2339: Property '
|
|||
})((function (undefined) {
|
||||
if (typeof module !== 'undefined' && module.exports) {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
return function (factory) { module.exports = factory(); };
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
} else if (typeof define === 'function' && define.amd) {
|
||||
~~~~~~
|
||||
!!! error TS2304: Cannot find name 'define'.
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/innerModExport1.ts(5,5): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/innerModExport1.ts(5,5): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/innerModExport1.ts(5,12): error TS1005: ';' expected.
|
||||
|
||||
|
||||
|
@ -9,7 +9,7 @@ tests/cases/compiler/innerModExport1.ts(5,12): error TS1005: ';' expected.
|
|||
var non_export_var: number;
|
||||
module {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
var non_export_var = 0;
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/innerModExport2.ts(5,5): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/innerModExport2.ts(5,5): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/innerModExport2.ts(5,12): error TS1005: ';' expected.
|
||||
tests/cases/compiler/innerModExport2.ts(7,20): error TS2395: Individual declarations in merged declaration 'export_var' must be all exported or all local.
|
||||
tests/cases/compiler/innerModExport2.ts(13,9): error TS2395: Individual declarations in merged declaration 'export_var' must be all exported or all local.
|
||||
|
@ -12,7 +12,7 @@ tests/cases/compiler/innerModExport2.ts(20,7): error TS2339: Property 'NonExport
|
|||
var non_export_var: number;
|
||||
module {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
var non_export_var = 0;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(6,6): error TS17008: JSX element 'any' has no corresponding closing tag.
|
||||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(6,13): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(6,13): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(6,17): error TS1005: '}' expected.
|
||||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(8,6): error TS17008: JSX element 'any' has no corresponding closing tag.
|
||||
tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(10,6): error TS17008: JSX element 'foo' has no corresponding closing tag.
|
||||
|
@ -24,7 +24,7 @@ tests/cases/conformance/jsx/jsxAndTypeAssertion.tsx(21,1): error TS1005: '</' ex
|
|||
~~~
|
||||
!!! error TS17008: JSX element 'any' has no corresponding closing tag.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
~
|
||||
!!! error TS1005: '}' expected.
|
||||
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/metadataImportType.ts(2,6): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/metadataImportType.ts(2,6): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/metadataImportType.ts(3,15): error TS2307: Cannot find module './b'.
|
||||
|
||||
|
||||
|
@ -6,7 +6,7 @@ tests/cases/compiler/metadataImportType.ts(3,15): error TS2307: Cannot find modu
|
|||
export class A {
|
||||
@test
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
b: import('./b').B
|
||||
~~~~~
|
||||
!!! error TS2307: Cannot find module './b'.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/compiler/moduleExports1.ts(13,6): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/moduleExports1.ts(13,22): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/moduleExports1.ts(13,6): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/moduleExports1.ts(13,22): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/compiler/moduleExports1.ts (2 errors) ====
|
||||
|
@ -17,6 +17,6 @@ tests/cases/compiler/moduleExports1.ts(13,22): error TS2580: Cannot find name 'm
|
|||
|
||||
if (!module.exports) module.exports = "";
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/compiler/moduleKeywordRepeatError.ts(3,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/moduleKeywordRepeatError.ts(3,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/moduleKeywordRepeatError.ts(3,15): error TS1005: ';' expected.
|
||||
|
||||
|
||||
|
@ -7,6 +7,6 @@ tests/cases/compiler/moduleKeywordRepeatError.ts(3,15): error TS1005: ';' expect
|
|||
|
||||
module.module { }
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
|
@ -1,4 +1,4 @@
|
|||
tests/cases/conformance/jsdoc/bug26693.js(1,15): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/jsdoc/bug26693.js(1,15): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/jsdoc/bug26693.js(1,21): error TS1005: '}' expected.
|
||||
tests/cases/conformance/jsdoc/bug26693.js(2,22): error TS2307: Cannot find module 'nope'.
|
||||
|
||||
|
@ -6,7 +6,7 @@ tests/cases/conformance/jsdoc/bug26693.js(2,22): error TS2307: Cannot find modul
|
|||
==== tests/cases/conformance/jsdoc/bug26693.js (3 errors) ====
|
||||
/** @typedef {module:locale} hi */
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: '}' expected.
|
||||
import { nope } from 'nope';
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(1,14): error TS1005: '(' expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(2,3): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(2,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(2,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,3): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,15): error TS2304: Cannot find name 'name'.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,19): error TS1005: ',' expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(3,20): error TS2693: 'string' only refers to a type, but is being used as a value here.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,3): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,10): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,15): error TS2304: Cannot find name 'name'.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,20): error TS1109: Expression expected.
|
||||
tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,21): error TS2693: 'any' only refers to a type, but is being used as a value here.
|
||||
|
@ -22,12 +22,12 @@ tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,25): error TS100
|
|||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
static test(name:string)
|
||||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
~~~~
|
||||
!!! error TS2304: Cannot find name 'name'.
|
||||
~
|
||||
|
@ -38,7 +38,7 @@ tests/cases/compiler/overloadingStaticFunctionsInFunctions.ts(4,25): error TS100
|
|||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
~~~~
|
||||
!!! error TS2304: Cannot find name 'name'.
|
||||
~
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts(2,14): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts(3,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts(2,14): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts(3,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509534.ts (2 errors) ====
|
||||
"use strict";
|
||||
var config = require("../config");
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
module.exports.route = function (server) {
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
// General Login Page
|
||||
server.get(config.env.siteRoot + "/auth/login", function (req, res, next) {
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509693.ts(1,6): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509693.ts(1,22): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509693.ts(1,6): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509693.ts(1,22): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser509693.ts (2 errors) ====
|
||||
if (!module.exports) module.exports = "";
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser519458.ts(1,15): error TS2503: Cannot find namespace 'module'.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser519458.ts(1,15): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser519458.ts(1,15): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser519458.ts(1,21): error TS1005: ';' expected.
|
||||
|
||||
|
||||
|
@ -8,7 +8,7 @@ tests/cases/conformance/parser/ecmascript5/RegressionTests/parser519458.ts(1,21)
|
|||
~~~~~~
|
||||
!!! error TS2503: Cannot find namespace 'module'.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
|
|
@ -1,10 +1,10 @@
|
|||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser521128.ts(1,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser521128.ts(1,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RegressionTests/parser521128.ts(1,15): error TS1005: ';' expected.
|
||||
|
||||
|
||||
==== tests/cases/conformance/parser/ecmascript5/RegressionTests/parser521128.ts (2 errors) ====
|
||||
module.module { }
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
|
@ -1,8 +1,8 @@
|
|||
tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,9): error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts(1,9): error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.
|
||||
|
||||
|
||||
==== tests/cases/conformance/parser/ecmascript5/ErrorRecovery/parserCommaInTypeMemberList2.ts (1 errors) ====
|
||||
var s = $.extend< { workItem: any }, { workItem: any, width: string }>({ workItem: this._workItem }, {});
|
||||
~
|
||||
!!! error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery` and then add `jquery` to the types field in your tsconfig.
|
||||
!!! error TS2581: Cannot find name '$'. Do you need to install type definitions for jQuery? Try `npm i @types/jquery`.
|
||||
|
|
@ -5,8 +5,8 @@ tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(19,21): er
|
|||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(21,29): error TS2694: Namespace 'Harness' has no exported member 'Assert'.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(25,17): error TS2304: Cannot find name 'IIO'.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(41,12): error TS2304: Cannot find name 'ActiveXObject'.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(43,19): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(44,14): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(43,19): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(44,14): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(341,13): error TS2662: Cannot find name 'errorHandlerStack'. Did you mean the static member 'Runnable.errorHandlerStack'?
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(347,13): error TS2662: Cannot find name 'errorHandlerStack'. Did you mean the static member 'Runnable.errorHandlerStack'?
|
||||
tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(351,17): error TS2662: Cannot find name 'errorHandlerStack'. Did you mean the static member 'Runnable.errorHandlerStack'?
|
||||
|
@ -169,10 +169,10 @@ tests/cases/conformance/parser/ecmascript5/RealWorld/parserharness.ts(2030,32):
|
|||
eval(typescriptServiceFile);
|
||||
} else if (typeof require === "function") {
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
var vm = require('vm');
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
vm.runInThisContext(typescriptServiceFile, 'typescriptServices.js');
|
||||
} else {
|
||||
throw new Error('Unknown context');
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
tests/cases/compiler/reservedWords2.ts(1,8): error TS1109: Expression expected.
|
||||
tests/cases/compiler/reservedWords2.ts(1,14): error TS1005: '(' expected.
|
||||
tests/cases/compiler/reservedWords2.ts(1,16): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/reservedWords2.ts(1,16): error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/reservedWords2.ts(1,31): error TS1005: ')' expected.
|
||||
tests/cases/compiler/reservedWords2.ts(2,12): error TS2300: Duplicate identifier '(Missing)'.
|
||||
tests/cases/compiler/reservedWords2.ts(2,12): error TS2567: Enum declarations can only merge with namespace or other enum declarations.
|
||||
|
@ -14,7 +14,7 @@ tests/cases/compiler/reservedWords2.ts(5,9): error TS2300: Duplicate identifier
|
|||
tests/cases/compiler/reservedWords2.ts(5,9): error TS2567: Enum declarations can only merge with namespace or other enum declarations.
|
||||
tests/cases/compiler/reservedWords2.ts(5,10): error TS1003: Identifier expected.
|
||||
tests/cases/compiler/reservedWords2.ts(5,18): error TS1005: '=>' expected.
|
||||
tests/cases/compiler/reservedWords2.ts(6,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/reservedWords2.ts(6,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/reservedWords2.ts(6,8): error TS1005: ';' expected.
|
||||
tests/cases/compiler/reservedWords2.ts(7,11): error TS2300: Duplicate identifier '(Missing)'.
|
||||
tests/cases/compiler/reservedWords2.ts(7,11): error TS1005: ':' expected.
|
||||
|
@ -39,7 +39,7 @@ tests/cases/compiler/reservedWords2.ts(10,6): error TS1003: Identifier expected.
|
|||
~
|
||||
!!! error TS1005: '(' expected.
|
||||
~~~~~~~
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'require'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ')' expected.
|
||||
import * as while from "foo"
|
||||
|
@ -72,7 +72,7 @@ tests/cases/compiler/reservedWords2.ts(10,6): error TS1003: Identifier expected.
|
|||
!!! error TS1005: '=>' expected.
|
||||
module void {}
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
var {while, return} = { while: 1, return: 2 };
|
||||
|
|
|
@ -1,13 +1,13 @@
|
|||
tests/cases/compiler/staticsInAFunction.ts(1,13): error TS1005: '(' expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(2,4): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(2,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/staticsInAFunction.ts(2,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,4): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,16): error TS2304: Cannot find name 'name'.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,20): error TS1005: ',' expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(3,21): error TS2693: 'string' only refers to a type, but is being used as a value here.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,4): error TS1128: Declaration or statement expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,11): error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,16): error TS2304: Cannot find name 'name'.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,21): error TS1109: Expression expected.
|
||||
tests/cases/compiler/staticsInAFunction.ts(4,22): error TS2693: 'any' only refers to a type, but is being used as a value here.
|
||||
|
@ -22,12 +22,12 @@ tests/cases/compiler/staticsInAFunction.ts(4,26): error TS1005: ';' expected.
|
|||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
static test(name:string)
|
||||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
~~~~
|
||||
!!! error TS2304: Cannot find name 'name'.
|
||||
~
|
||||
|
@ -38,7 +38,7 @@ tests/cases/compiler/staticsInAFunction.ts(4,26): error TS1005: ';' expected.
|
|||
~~~~~~
|
||||
!!! error TS1128: Declaration or statement expected.
|
||||
~~~~
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha` and then add `jest` or `mocha` to the types field in your tsconfig.
|
||||
!!! error TS2582: Cannot find name 'test'. Do you need to install type definitions for a test runner? Try `npm i @types/jest` or `npm i @types/mocha`.
|
||||
~~~~
|
||||
!!! error TS2304: Cannot find name 'name'.
|
||||
~
|
||||
|
|
|
@ -7,7 +7,6 @@ tests/cases/compiler/superAccess2.ts(11,33): error TS1034: 'super' must be follo
|
|||
tests/cases/compiler/superAccess2.ts(11,40): error TS2336: 'super' cannot be referenced in constructor arguments.
|
||||
tests/cases/compiler/superAccess2.ts(11,40): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
tests/cases/compiler/superAccess2.ts(11,45): error TS1034: 'super' must be followed by an argument list or member access.
|
||||
tests/cases/compiler/superAccess2.ts(11,59): error TS2336: 'super' cannot be referenced in constructor arguments.
|
||||
tests/cases/compiler/superAccess2.ts(11,59): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
tests/cases/compiler/superAccess2.ts(11,64): error TS1034: 'super' must be followed by an argument list or member access.
|
||||
tests/cases/compiler/superAccess2.ts(15,19): error TS1034: 'super' must be followed by an argument list or member access.
|
||||
|
@ -16,7 +15,7 @@ tests/cases/compiler/superAccess2.ts(20,26): error TS1034: 'super' must be follo
|
|||
tests/cases/compiler/superAccess2.ts(21,15): error TS2339: Property 'x' does not exist on type 'typeof P'.
|
||||
|
||||
|
||||
==== tests/cases/compiler/superAccess2.ts (16 errors) ====
|
||||
==== tests/cases/compiler/superAccess2.ts (15 errors) ====
|
||||
class P {
|
||||
x() { }
|
||||
static y() { }
|
||||
|
@ -47,8 +46,6 @@ tests/cases/compiler/superAccess2.ts(21,15): error TS2339: Property 'x' does not
|
|||
~
|
||||
!!! error TS1034: 'super' must be followed by an argument list or member access.
|
||||
~~~~~
|
||||
!!! error TS2336: 'super' cannot be referenced in constructor arguments.
|
||||
~~~~~
|
||||
!!! error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
~
|
||||
!!! error TS1034: 'super' must be followed by an argument list or member access.
|
||||
|
|
|
@ -25,6 +25,7 @@ class Q extends P {
|
|||
>z : Symbol(Q.z, Decl(superAccess2.ts, 10, 16))
|
||||
>zz : Symbol(zz, Decl(superAccess2.ts, 10, 33))
|
||||
>zzz : Symbol(zzz, Decl(superAccess2.ts, 10, 45))
|
||||
>super : Symbol(P, Decl(superAccess2.ts, 0, 0))
|
||||
|
||||
super();
|
||||
>super : Symbol(P, Decl(superAccess2.ts, 0, 0))
|
||||
|
|
|
@ -38,7 +38,7 @@ class Q extends P {
|
|||
>zzz : () => any
|
||||
>() => super : () => any
|
||||
>super : any
|
||||
>super : any
|
||||
>super : P
|
||||
> : any
|
||||
|
||||
super();
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(1,1): error TS2304: Cannot find name 'declare'.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(1,9): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(1,21): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,1): error TS2304: Cannot find name 'declare'.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,9): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,24): error TS1005: ';' expected.
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,24): error
|
|||
~~~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ tests/cases/conformance/es6/templates/templateStringInModuleName.ts(4,24): error
|
|||
~~~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
}
|
|
@ -1,10 +1,10 @@
|
|||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(1,1): error TS2304: Cannot find name 'declare'.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(1,9): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(1,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(1,21): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,1): error TS2304: Cannot find name 'declare'.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,9): error TS1005: ';' expected.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,9): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,24): error TS1005: ';' expected.
|
||||
|
||||
|
||||
|
@ -15,7 +15,7 @@ tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,24): er
|
|||
~~~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
}
|
||||
|
@ -26,7 +26,7 @@ tests/cases/conformance/es6/templates/templateStringInModuleNameES6.ts(4,24): er
|
|||
~~~~~~
|
||||
!!! error TS1005: ';' expected.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~
|
||||
!!! error TS1005: ';' expected.
|
||||
}
|
|
@ -10,11 +10,13 @@ tests/cases/compiler/thisInConstructorParameter2.ts(5,39): error TS2333: 'this'
|
|||
~~~~
|
||||
!!! error TS2334: 'this' cannot be referenced in a static property initializer.
|
||||
|
||||
constructor(public z = this, zz = this) { }
|
||||
constructor(public z = this, zz = this, zzz = (p = this) => this) {
|
||||
~~~~
|
||||
!!! error TS2333: 'this' cannot be referenced in constructor arguments.
|
||||
~~~~
|
||||
!!! error TS2333: 'this' cannot be referenced in constructor arguments.
|
||||
zzz = (p = this) => this;
|
||||
}
|
||||
|
||||
foo(zz = this) { zz.x; }
|
||||
static bar(zz = this) { zz.y; }
|
||||
|
|
|
@ -3,7 +3,9 @@ class P {
|
|||
x = this;
|
||||
static y = this;
|
||||
|
||||
constructor(public z = this, zz = this) { }
|
||||
constructor(public z = this, zz = this, zzz = (p = this) => this) {
|
||||
zzz = (p = this) => this;
|
||||
}
|
||||
|
||||
foo(zz = this) { zz.x; }
|
||||
static bar(zz = this) { zz.y; }
|
||||
|
@ -12,11 +14,20 @@ class P {
|
|||
//// [thisInConstructorParameter2.js]
|
||||
var _this = this;
|
||||
var P = /** @class */ (function () {
|
||||
function P(z, zz) {
|
||||
function P(z, zz, zzz) {
|
||||
if (z === void 0) { z = this; }
|
||||
if (zz === void 0) { zz = this; }
|
||||
if (zzz === void 0) { zzz = function (p) {
|
||||
if (p === void 0) { p = _this; }
|
||||
return _this;
|
||||
}; }
|
||||
var _this = this;
|
||||
this.z = z;
|
||||
this.x = this;
|
||||
zzz = function (p) {
|
||||
if (p === void 0) { p = _this; }
|
||||
return _this;
|
||||
};
|
||||
}
|
||||
P.prototype.foo = function (zz) {
|
||||
if (zz === void 0) { zz = this; }
|
||||
|
|
|
@ -10,25 +10,36 @@ class P {
|
|||
>y : Symbol(P.y, Decl(thisInConstructorParameter2.ts, 1, 13))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
|
||||
constructor(public z = this, zz = this) { }
|
||||
constructor(public z = this, zz = this, zzz = (p = this) => this) {
|
||||
>z : Symbol(P.z, Decl(thisInConstructorParameter2.ts, 4, 16))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 4, 32))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>zzz : Symbol(zzz, Decl(thisInConstructorParameter2.ts, 4, 43))
|
||||
>p : Symbol(p, Decl(thisInConstructorParameter2.ts, 4, 51))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
|
||||
zzz = (p = this) => this;
|
||||
>zzz : Symbol(zzz, Decl(thisInConstructorParameter2.ts, 4, 43))
|
||||
>p : Symbol(p, Decl(thisInConstructorParameter2.ts, 5, 15))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
}
|
||||
|
||||
foo(zz = this) { zz.x; }
|
||||
>foo : Symbol(P.foo, Decl(thisInConstructorParameter2.ts, 4, 47))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 6, 8))
|
||||
>foo : Symbol(P.foo, Decl(thisInConstructorParameter2.ts, 6, 5))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 8, 8))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>zz.x : Symbol(P.x, Decl(thisInConstructorParameter2.ts, 0, 9))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 6, 8))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 8, 8))
|
||||
>x : Symbol(P.x, Decl(thisInConstructorParameter2.ts, 0, 9))
|
||||
|
||||
static bar(zz = this) { zz.y; }
|
||||
>bar : Symbol(P.bar, Decl(thisInConstructorParameter2.ts, 6, 28))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 7, 15))
|
||||
>bar : Symbol(P.bar, Decl(thisInConstructorParameter2.ts, 8, 28))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 9, 15))
|
||||
>this : Symbol(P, Decl(thisInConstructorParameter2.ts, 0, 0))
|
||||
>zz.y : Symbol(P.y, Decl(thisInConstructorParameter2.ts, 1, 13))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 7, 15))
|
||||
>zz : Symbol(zz, Decl(thisInConstructorParameter2.ts, 9, 15))
|
||||
>y : Symbol(P.y, Decl(thisInConstructorParameter2.ts, 1, 13))
|
||||
}
|
||||
|
|
|
@ -10,11 +10,25 @@ class P {
|
|||
>y : typeof P
|
||||
>this : typeof P
|
||||
|
||||
constructor(public z = this, zz = this) { }
|
||||
constructor(public z = this, zz = this, zzz = (p = this) => this) {
|
||||
>z : this
|
||||
>this : this
|
||||
>zz : this
|
||||
>this : this
|
||||
>zzz : (p?: this) => this
|
||||
>(p = this) => this : (p?: this) => this
|
||||
>p : this
|
||||
>this : this
|
||||
>this : this
|
||||
|
||||
zzz = (p = this) => this;
|
||||
>zzz = (p = this) => this : (p?: this) => this
|
||||
>zzz : (p?: this) => this
|
||||
>(p = this) => this : (p?: this) => this
|
||||
>p : this
|
||||
>this : this
|
||||
>this : this
|
||||
}
|
||||
|
||||
foo(zz = this) { zz.x; }
|
||||
>foo : (zz?: this) => void
|
||||
|
|
|
@ -0,0 +1,6 @@
|
|||
var X = /** @class */ (function () {
|
||||
function X() {
|
||||
}
|
||||
X.prototype.foobar = function (x) { return x; };
|
||||
return X;
|
||||
}());
|
|
@ -1,5 +1,5 @@
|
|||
tests/cases/compiler/typecheckIfCondition.ts(4,10): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/typecheckIfCondition.ts(4,26): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
tests/cases/compiler/typecheckIfCondition.ts(4,10): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
tests/cases/compiler/typecheckIfCondition.ts(4,26): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/compiler/typecheckIfCondition.ts (2 errors) ====
|
||||
|
@ -8,9 +8,9 @@ tests/cases/compiler/typecheckIfCondition.ts(4,26): error TS2580: Cannot find na
|
|||
{
|
||||
if (!module.exports) module.exports = "";
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
var x = null; // don't want to baseline output
|
||||
}
|
||||
|
11
tests/baselines/reference/typingsSuggestion1.errors.txt
Normal file
11
tests/baselines/reference/typingsSuggestion1.errors.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
tests/cases/conformance/typings/a.ts(1,1): error TS2591: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
|
||||
|
||||
==== tests/cases/conformance/typings/tsconfig.json (0 errors) ====
|
||||
{ "compilerOptions": {"types": []} }
|
||||
|
||||
==== tests/cases/conformance/typings/a.ts (1 errors) ====
|
||||
module.exports = 1;
|
||||
~~~~~~
|
||||
!!! error TS2591: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node` and then add `node` to the types field in your tsconfig.
|
||||
|
6
tests/baselines/reference/typingsSuggestion1.js
Normal file
6
tests/baselines/reference/typingsSuggestion1.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
//// [a.ts]
|
||||
module.exports = 1;
|
||||
|
||||
|
||||
//// [a.js]
|
||||
module.exports = 1;
|
4
tests/baselines/reference/typingsSuggestion1.symbols
Normal file
4
tests/baselines/reference/typingsSuggestion1.symbols
Normal file
|
@ -0,0 +1,4 @@
|
|||
=== tests/cases/conformance/typings/a.ts ===
|
||||
module.exports = 1;
|
||||
No type information for this code.
|
||||
No type information for this code.
|
8
tests/baselines/reference/typingsSuggestion1.types
Normal file
8
tests/baselines/reference/typingsSuggestion1.types
Normal file
|
@ -0,0 +1,8 @@
|
|||
=== tests/cases/conformance/typings/a.ts ===
|
||||
module.exports = 1;
|
||||
>module.exports = 1 : 1
|
||||
>module.exports : any
|
||||
>module : any
|
||||
>exports : any
|
||||
>1 : 1
|
||||
|
11
tests/baselines/reference/typingsSuggestion2.errors.txt
Normal file
11
tests/baselines/reference/typingsSuggestion2.errors.txt
Normal file
|
@ -0,0 +1,11 @@
|
|||
tests/cases/conformance/typings/a.ts(1,1): error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
||||
|
||||
==== tests/cases/conformance/typings/tsconfig.json (0 errors) ====
|
||||
{ "compilerOptions": {} }
|
||||
|
||||
==== tests/cases/conformance/typings/a.ts (1 errors) ====
|
||||
module.exports = 1;
|
||||
~~~~~~
|
||||
!!! error TS2580: Cannot find name 'module'. Do you need to install type definitions for node? Try `npm i @types/node`.
|
||||
|
6
tests/baselines/reference/typingsSuggestion2.js
Normal file
6
tests/baselines/reference/typingsSuggestion2.js
Normal file
|
@ -0,0 +1,6 @@
|
|||
//// [a.ts]
|
||||
module.exports = 1;
|
||||
|
||||
|
||||
//// [a.js]
|
||||
module.exports = 1;
|
4
tests/baselines/reference/typingsSuggestion2.symbols
Normal file
4
tests/baselines/reference/typingsSuggestion2.symbols
Normal file
|
@ -0,0 +1,4 @@
|
|||
=== tests/cases/conformance/typings/a.ts ===
|
||||
module.exports = 1;
|
||||
No type information for this code.
|
||||
No type information for this code.
|
8
tests/baselines/reference/typingsSuggestion2.types
Normal file
8
tests/baselines/reference/typingsSuggestion2.types
Normal file
|
@ -0,0 +1,8 @@
|
|||
=== tests/cases/conformance/typings/a.ts ===
|
||||
module.exports = 1;
|
||||
>module.exports = 1 : 1
|
||||
>module.exports : any
|
||||
>module : any
|
||||
>exports : any
|
||||
>1 : 1
|
||||
|
|
@ -759,7 +759,6 @@ node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighth
|
|||
Type 'number' is not assignable to type 'void'.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(19744,7): error TS2339: Property 'expected' does not exist on type 'Error'.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(20005,8): error TS2339: Property 'runLighthouseForConnection' does not exist on type 'Window'.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(20015,1): error TS2554: Expected 0 arguments, but got 1.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(20035,8): error TS2339: Property 'runLighthouseInWorker' does not exist on type 'Window'.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(20039,15): error TS2339: Property 'runLighthouseForConnection' does not exist on type 'Window'.
|
||||
node_modules/chrome-devtools-frontend/front_end/audits2_worker/lighthouse/lighthouse-background.js(20046,8): error TS2339: Property 'getDefaultCategories' does not exist on type 'Window'.
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
// @strict: true
|
||||
// @declaration: true
|
||||
|
||||
declare function id1<T>(input: T): T;
|
||||
declare function id2<T extends (x: any) => any>(input: T): T;
|
||||
declare function id3<T extends (x: { foo: any }) => any>(input: T): T;
|
||||
declare function id4<T extends (x: { foo?: number }) => any>(input: T): T;
|
||||
declare function id5<T extends (x?: number) => any>(input: T): T;
|
||||
|
||||
const f10 = function ({ foo = 42 }) { return foo };
|
||||
const f11 = id1(function ({ foo = 42 }) { return foo }); // Implicit any error
|
||||
const f12 = id2(function ({ foo = 42 }) { return foo });
|
||||
const f13 = id3(function ({ foo = 42 }) { return foo });
|
||||
const f14 = id4(function ({ foo = 42 }) { return foo });
|
||||
|
||||
const f20 = function (foo = 42) { return foo };
|
||||
const f21 = id1(function (foo = 42) { return foo }); // Implicit any error
|
||||
const f22 = id2(function (foo = 42) { return foo });
|
||||
const f25 = id5(function (foo = 42) { return foo });
|
||||
|
||||
// Repro from #28816
|
||||
|
||||
function id<T>(input: T): T { return input }
|
||||
|
||||
function getFoo ({ foo = 42 }) {
|
||||
return foo;
|
||||
}
|
||||
|
||||
const newGetFoo = id(getFoo);
|
||||
const newGetFoo2 = id(function getFoo ({ foo = 42 }) {
|
||||
return foo;
|
||||
});
|
|
@ -2,7 +2,9 @@ class P {
|
|||
x = this;
|
||||
static y = this;
|
||||
|
||||
constructor(public z = this, zz = this) { }
|
||||
constructor(public z = this, zz = this, zzz = (p = this) => this) {
|
||||
zzz = (p = this) => this;
|
||||
}
|
||||
|
||||
foo(zz = this) { zz.x; }
|
||||
static bar(zz = this) { zz.y; }
|
||||
|
|
|
@ -0,0 +1,67 @@
|
|||
// @strict: true
|
||||
// @declaration: true
|
||||
// @target: esnext
|
||||
|
||||
let v1 = 'abc' as const;
|
||||
let v2 = `abc` as const;
|
||||
let v3 = 10 as const;
|
||||
let v4 = -10 as const;
|
||||
let v5 = +10 as const;
|
||||
let v6 = 10n as const;
|
||||
let v7 = -10n as const;
|
||||
let v8 = true as const;
|
||||
let v9 = false as const;
|
||||
|
||||
let c1 = 'abc' as const;
|
||||
let c2 = `abc` as const;
|
||||
let c3 = 10 as const;
|
||||
let c4 = -10 as const;
|
||||
let c5 = +10 as const;
|
||||
let c6 = 10n as const;
|
||||
let c7 = -10n as const;
|
||||
let c8 = true as const;
|
||||
let c9 = false as const;
|
||||
|
||||
let vv1 = v1;
|
||||
let vc1 = c1;
|
||||
|
||||
let a1 = [] as const;
|
||||
let a2 = [1, 2, 3] as const;
|
||||
let a3 = [10, 'hello', true] as const;
|
||||
let a4 = [...[1, 2, 3]] as const;
|
||||
let a5 = [1, 2, 3];
|
||||
let a6 = [...a5] as const;
|
||||
let a7 = [...a6];
|
||||
let a8 = ['abc', ...a7] as const;
|
||||
let a9 = [...a8];
|
||||
|
||||
declare let d: { [x: string]: string };
|
||||
|
||||
let o1 = { x: 10, y: 20 } as const;
|
||||
let o2 = { a: 1, 'b': 2, ['c']: 3, d() {}, ['e' + '']: 4 } as const;
|
||||
let o3 = { ...o1, ...o2 } as const;
|
||||
let o4 = { a: 1, b: 2 };
|
||||
let o5 = { ...o4 } as const;
|
||||
let o6 = { ...o5 };
|
||||
let o7 = { ...d } as const;
|
||||
let o8 = { ...o7 };
|
||||
let o9 = { x: 10, foo() { this.x = 20 } } as const; // Error
|
||||
|
||||
let p1 = (10) as const;
|
||||
let p2 = ((-10)) as const;
|
||||
let p3 = ([(10)]) as const;
|
||||
let p4 = [[[[10]]]] as const;
|
||||
|
||||
let x1 = { x: 10, y: [20, 30], z: { a: { b: 42 } } } as const;
|
||||
|
||||
let q1 = <const> 10;
|
||||
let q2 = <const> 'abc';
|
||||
let q3 = <const> true;
|
||||
let q4 = <const> [1, 2, 3];
|
||||
let q5 = <const> { x: 10, y: 20 };
|
||||
|
||||
declare function id<T>(x: T): T;
|
||||
|
||||
let e1 = v1 as const; // Error
|
||||
let e2 = (true ? 1 : 0) as const; // Error
|
||||
let e3 = id(1) as const; // Error
|
5
tests/cases/conformance/typings/typingsSuggestion1.ts
Normal file
5
tests/cases/conformance/typings/typingsSuggestion1.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
// @filename: tsconfig.json
|
||||
{ "compilerOptions": {"types": []} }
|
||||
|
||||
// @filename: a.ts
|
||||
module.exports = 1;
|
5
tests/cases/conformance/typings/typingsSuggestion2.ts
Normal file
5
tests/cases/conformance/typings/typingsSuggestion2.ts
Normal file
|
@ -0,0 +1,5 @@
|
|||
// @filename: tsconfig.json
|
||||
{ "compilerOptions": {} }
|
||||
|
||||
// @filename: a.ts
|
||||
module.exports = 1;
|
Loading…
Reference in a new issue