From 758e1ff8b7ee7b87f0d0e55b2e2a446d70eec6d8 Mon Sep 17 00:00:00 2001 From: Arthur Ozga Date: Wed, 15 Mar 2017 09:06:59 -0700 Subject: [PATCH] temp --- src/compiler/checker.ts | 11 ++--------- src/services/codefixes/helpers.ts | 2 +- .../codeFixUndeclaredIndexSignatureNumericLiteral.ts | 2 +- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index df4bfbb845..bc718e4c1d 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -2293,25 +2293,18 @@ namespace ts { } if (objectFlags & ObjectFlags.ClassOrInterface) { Debug.assert(!!(type.flags & TypeFlags.Object)); + // TODO: Detect whether class is named and fail if not. const name = getNameOfSymbol(type.symbol); // TODO: handle type arguments. - // TODO: handle anonymous classes. return createTypeReferenceNode(name, /*typeParameters*/undefined); } if (type.flags & TypeFlags.TypeParameter) { - const constraint = createTypeNode(getConstraintFromTypeParameter(type)) as TypeNode; - const defaultParameter = createTypeNode(getDefaultFromTypeParameter(type)) as TypeNode; - if(constraint || defaultParameter) { - // Type parameters in type position can't have constraints or defaults. - encounteredError = true; - return undefined; - } // TODO: get qualified name when necessary instead of string. const name = symbolToString(type.symbol); + // Ignore constraint/default when creating a usage (as opposed to declaration) of a type parameter. return createTypeReferenceNode(name, /*typeArguments*/ undefined); } - // accessible type aliasSymbol // TODO: move back up later on? if (checkAlias && type.aliasSymbol) { const name = getNameOfSymbol(type.aliasSymbol); diff --git a/src/services/codefixes/helpers.ts b/src/services/codefixes/helpers.ts index da579cccb1..37ea8bab1a 100644 --- a/src/services/codefixes/helpers.ts +++ b/src/services/codefixes/helpers.ts @@ -225,7 +225,7 @@ namespace ts.codefix { function createParameterDeclarationFromSymbol(parameterSymbol: Symbol, enclosingDeclaration: ClassLikeDeclaration, checker: TypeChecker) { const parameterDeclaration = parameterSymbol.getDeclarations()[0] as ParameterDeclaration; - const parameterType = checker.getWidenedType(checker.getTypeOfSymbolAtLocation(parameterSymbol, enclosingDeclaration)); + const parameterType = checker.getTypeOfSymbolAtLocation(parameterSymbol, enclosingDeclaration); const parameterTypeNode = checker.createTypeNode(parameterType); // TODO: deep cloning of decorators/any node. const parameterNode = createParameter( diff --git a/tests/cases/fourslash/codeFixUndeclaredIndexSignatureNumericLiteral.ts b/tests/cases/fourslash/codeFixUndeclaredIndexSignatureNumericLiteral.ts index 2e49a8184e..0a2b0ee799 100644 --- a/tests/cases/fourslash/codeFixUndeclaredIndexSignatureNumericLiteral.ts +++ b/tests/cases/fourslash/codeFixUndeclaredIndexSignatureNumericLiteral.ts @@ -8,7 +8,7 @@ verify.rangeAfterCodeFix(` class A { - [name: string]: number; + [x: string]: number; constructor() { this.x = 10;