From 7a66161790a8e6e77d6da2b5b687357f3220d435 Mon Sep 17 00:00:00 2001 From: Kanchalai Tanglertsampan Date: Wed, 29 Mar 2017 13:57:51 -0700 Subject: [PATCH] Address code review of PR 14692 --- src/compiler/checker.ts | 6 ++-- ...tionWithPropertyAccessInHeritageClause1.js | 8 ----- ...ithPropertyAccessInHeritageClause1.symbols | 35 +++++-------------- ...nWithPropertyAccessInHeritageClause1.types | 19 ---------- ...tionWithPropertyAccessInHeritageClause1.ts | 7 ---- ...rPropertyAccessExpressionHeritageClause.ts | 15 +++----- ...nPropertyAccessExpressionHeritageClause.ts | 7 ---- ...ePropertyAccessExpressionHeritageClause.ts | 7 ---- 8 files changed, 15 insertions(+), 89 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index 45c5fe0afa..de11521548 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -1540,9 +1540,9 @@ namespace ts { } } else if (name.kind === SyntaxKind.ParenthesizedExpression) { - // If the expression in parenthsizedExpression is not an entity-name (e.g. it is a call expression), it won't be able to successfully resolve the name. - // This is the case when we are trying to do any language service operation in heritage clauses. By return undefined, the getSymbolOfEntityNameOrPropertyAccessExpression - // will attempt to checkPropertyAccessExpression to resolve symbol. + // If the expression in parenthesizedExpression is not an entity-name (e.g. it is a call expression), it won't be able to successfully resolve the name. + // This is the case when we are trying to do any language service operation in heritage clauses. + // By return undefined, the getSymbolOfEntityNameOrPropertyAccessExpression will attempt to checkPropertyAccessExpression to resolve symbol. // i.e class C extends foo()./*do language service operation here*/B {} return isEntityNameExpression(name.expression) ? resolveEntityName(name.expression as EntityNameOrEntityNameExpression, meaning, ignoreErrors, dontResolveAlias, location) : diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.js b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.js index 0c2f79bec0..817a03f974 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.js +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.js @@ -1,11 +1,4 @@ //// [emitClassDeclarationWithPropertyAccessInHeritageClause1.ts] -interface I {} -interface CTor { - new (hour: number, minute: number): I -} -var x: { - B : CTor -}; class B {} function foo() { return {B: B}; @@ -23,7 +16,6 @@ var __extends = (this && this.__extends) || (function () { d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); }; })(); -var x; var B = (function () { function B() { } diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.symbols b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.symbols index f5f4f6ff87..d2c5d24a7b 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.symbols +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.symbols @@ -1,36 +1,17 @@ === tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts === -interface I {} ->I : Symbol(I, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0)) - -interface CTor { ->CTor : Symbol(CTor, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 14)) - - new (hour: number, minute: number): I ->hour : Symbol(hour, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 9)) ->minute : Symbol(minute, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 22)) ->I : Symbol(I, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0)) -} -var x: { ->x : Symbol(x, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 4, 3)) - - B : CTor ->B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 4, 8)) ->CTor : Symbol(CTor, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 14)) - -}; class B {} ->B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 6, 2)) +>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0)) function foo() { ->foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 7, 10)) +>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 10)) return {B: B}; ->B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12)) ->B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 6, 2)) +>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12)) +>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 0)) } class C extends (foo()).B {} ->C : Symbol(C, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 10, 1)) ->(foo()).B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12)) ->foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 7, 10)) ->B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 9, 12)) +>C : Symbol(C, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 3, 1)) +>(foo()).B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12)) +>foo : Symbol(foo, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 0, 10)) +>B : Symbol(B, Decl(emitClassDeclarationWithPropertyAccessInHeritageClause1.ts, 2, 12)) diff --git a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.types b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.types index 0747772ef6..c91fae28c7 100644 --- a/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.types +++ b/tests/baselines/reference/emitClassDeclarationWithPropertyAccessInHeritageClause1.types @@ -1,23 +1,4 @@ === tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts === -interface I {} ->I : I - -interface CTor { ->CTor : CTor - - new (hour: number, minute: number): I ->hour : number ->minute : number ->I : I -} -var x: { ->x : { B: CTor; } - - B : CTor ->B : CTor ->CTor : CTor - -}; class B {} >B : B diff --git a/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts b/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts index e22bd2351c..5d18229ea0 100644 --- a/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts +++ b/tests/cases/conformance/es6/classDeclaration/emitClassDeclarationWithPropertyAccessInHeritageClause1.ts @@ -1,10 +1,3 @@ -interface I {} -interface CTor { - new (hour: number, minute: number): I -} -var x: { - B : CTor -}; class B {} function foo() { return {B: B}; diff --git a/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts b/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts index 57fa235479..2a0b6a5762 100644 --- a/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts +++ b/tests/cases/fourslash/findAllReferPropertyAccessExpressionHeritageClause.ts @@ -1,12 +1,5 @@ /// -//// interface I {} -//// interface CTor { -//// new (hour: number, minute: number): I -//// } -//// var x: { -//// B : CTor -//// }; //// class B {} //// function foo() { //// return {[|B|]: B}; @@ -14,7 +7,7 @@ //// class C extends (foo()).[|B|] {} //// class C1 extends foo().[|B|] {} -const [def, ref1, ref2] = test.ranges(); -verify.referencesOf(ref1, [def, ref1, ref2]); -verify.referencesOf(ref2, [def, ref1, ref2]); -verify.referencesOf(def, [def, ref1, ref2]); \ No newline at end of file +const ranges = test.ranges(); +for (const range of ranges) { + verify.referencesOf(range, ranges); +} \ No newline at end of file diff --git a/tests/cases/fourslash/gotoDefinitionPropertyAccessExpressionHeritageClause.ts b/tests/cases/fourslash/gotoDefinitionPropertyAccessExpressionHeritageClause.ts index d998c545fb..d46ea7c842 100644 --- a/tests/cases/fourslash/gotoDefinitionPropertyAccessExpressionHeritageClause.ts +++ b/tests/cases/fourslash/gotoDefinitionPropertyAccessExpressionHeritageClause.ts @@ -1,12 +1,5 @@ /// -//// interface I {} -//// interface CTor { -//// new (hour: number, minute: number): I -//// } -//// var x: { -//// B : CTor -//// }; //// class B {} //// function foo() { //// return {/*refB*/B: B}; diff --git a/tests/cases/fourslash/renamePropertyAccessExpressionHeritageClause.ts b/tests/cases/fourslash/renamePropertyAccessExpressionHeritageClause.ts index 477008e7a3..04b741a4b9 100644 --- a/tests/cases/fourslash/renamePropertyAccessExpressionHeritageClause.ts +++ b/tests/cases/fourslash/renamePropertyAccessExpressionHeritageClause.ts @@ -1,12 +1,5 @@ /// -//// interface I {} -//// interface CTor { -//// new (hour: number, minute: number): I -//// } -//// var x: { -//// B : CTor -//// }; //// class B {} //// function foo() { //// return {[|B|]: B};