From 67b2a170345cd5f98971271c59bf275ca7053598 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Thu, 18 Feb 2016 16:19:06 -0800 Subject: [PATCH 1/3] super's containing class doesn't require base node In a class nested inside a constructor, `super` refers to the outer class' `super`, but when resolving a super call its containing class is identified as the immediately containing class. Previously, the compiler crashed, preventing the error from being reported correctly. Now it handles this disparity and correctly reports the error. --- src/compiler/checker.ts | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/compiler/checker.ts b/src/compiler/checker.ts index d829795439b..eddddb5cb2b 100644 --- a/src/compiler/checker.ts +++ b/src/compiler/checker.ts @@ -10112,8 +10112,10 @@ namespace ts { // In super call, the candidate signatures are the matching arity signatures of the base constructor function instantiated // with the type arguments specified in the extends clause. const baseTypeNode = getClassExtendsHeritageClauseElement(getContainingClass(node)); - const baseConstructors = getInstantiatedConstructorsForTypeArguments(superType, baseTypeNode.typeArguments); - return resolveCall(node, baseConstructors, candidatesOutArray); + if (baseTypeNode) { + const baseConstructors = getInstantiatedConstructorsForTypeArguments(superType, baseTypeNode.typeArguments); + return resolveCall(node, baseConstructors, candidatesOutArray); + } } return resolveUntypedCall(node); } From 974adedb952495c09abec72bc73e15df1a47cc10 Mon Sep 17 00:00:00 2001 From: Nathan Shively-Sanders Date: Thu, 18 Feb 2016 16:29:03 -0800 Subject: [PATCH 2/3] Add fourslash test --- tests/cases/fourslash/superInsideInnerClass.ts | Bin 0 -> 582 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tests/cases/fourslash/superInsideInnerClass.ts diff --git a/tests/cases/fourslash/superInsideInnerClass.ts b/tests/cases/fourslash/superInsideInnerClass.ts new file mode 100644 index 0000000000000000000000000000000000000000..77bb8fbce29c00e52a6aa042e56ca0c360fd8639 GIT binary patch literal 582 zcmbV}J8!~35QL|7r2Geq29ttEn*c?UA~aNVC%g~XgfOB)*7_c^ zJF`1?*tcX~sIGFQ`X+2$Ddr#QR}-x@Q%^OpOa-XZl3T}Z6U>2xF!c4P2hU}E@hQiF zz4~lp+g5S{vNDt$EIG_EYsN0(?wRZrcR%{_9W`!L?<#E7)205qXPE1cHGwD9KT0-Z zg7!WA-Rj1sDSa`{A^bL1sdznipg?2r0)Nf#2*;k(AzEtallmUfIe(YVT5WaK>vM@( z%@jXJL=zt;=qyfZb(rfYy?6)Bmt1q+cSELQH^m!!cYEzrAH Date: Fri, 19 Feb 2016 08:27:08 -0800 Subject: [PATCH 3/3] Switch test encoding from UTF16 to iso-8859 --- tests/cases/fourslash/superInsideInnerClass.ts | Bin 582 -> 290 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/tests/cases/fourslash/superInsideInnerClass.ts b/tests/cases/fourslash/superInsideInnerClass.ts index 77bb8fbce29c00e52a6aa042e56ca0c360fd8639..3b85179b0d83e49390a6034dcf9c8be5eb130afa 100644 GIT binary patch literal 290 zcmaKmF%N=3429<-;XgDkf&(Y3ii0}n;^bx=PAFj1JJQ}6jq$&G2GGs7G=1&YS1BdT z2umc?IYOgsoefIkh%buk#PR^-JPf2)?j44OVuWYwh}>wl%l%-h&{UoDUzdfB;x~Qkbcy?Cc4zV`Zf$Ivopz6 j(b;3ebQn*=;O74+9|@l-t*j$l|r|pKL@n_);zI#!i literal 582 zcmbV}J8!~35QL|7r2Geq29ttEn*c?UA~aNVC%g~XgfOB)*7_c^ zJF`1?*tcX~sIGFQ`X+2$Ddr#QR}-x@Q%^OpOa-XZl3T}Z6U>2xF!c4P2hU}E@hQiF zz4~lp+g5S{vNDt$EIG_EYsN0(?wRZrcR%{_9W`!L?<#E7)205qXPE1cHGwD9KT0-Z zg7!WA-Rj1sDSa`{A^bL1sdznipg?2r0)Nf#2*;k(AzEtallmUfIe(YVT5WaK>vM@( z%@jXJL=zt;=qyfZb(rfYy?6)Bmt1q+cSELQH^m!!cYEzrAH