mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-11 10:00:13 -06:00
this in parameter initializers resolves to class
Accept baselines now that the test passes.
This commit is contained in:
parent
9fac99e692
commit
0c64b0c24e
@ -8392,7 +8392,7 @@ namespace ts {
|
||||
if (needToCaptureLexicalThis) {
|
||||
captureLexicalThis(node, container);
|
||||
}
|
||||
if (isFunctionLike(container)) {
|
||||
if (isFunctionLike(container) && !isInParameterInitializerBeforeContainingFunction(node)) {
|
||||
// If this is a function in a JS file, it might be a class method. Check if it's the RHS
|
||||
// of a x.prototype.y = function [name]() { .... }
|
||||
if (container.kind === SyntaxKind.FunctionExpression &&
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
//// [inferParameterWithMethodCallInitializer.ts]
|
||||
function getNumber(): number {
|
||||
return 1;
|
||||
}
|
||||
class Example {
|
||||
getNumber(): number {
|
||||
return 1;
|
||||
}
|
||||
doSomething(a = this.getNumber()): typeof a {
|
||||
return a;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//// [inferParameterWithMethodCallInitializer.js]
|
||||
function getNumber() {
|
||||
return 1;
|
||||
}
|
||||
var Example = (function () {
|
||||
function Example() {
|
||||
}
|
||||
Example.prototype.getNumber = function () {
|
||||
return 1;
|
||||
};
|
||||
Example.prototype.doSomething = function (a) {
|
||||
if (a === void 0) { a = this.getNumber(); }
|
||||
return a;
|
||||
};
|
||||
return Example;
|
||||
}());
|
||||
@ -0,0 +1,27 @@
|
||||
=== tests/cases/compiler/inferParameterWithMethodCallInitializer.ts ===
|
||||
function getNumber(): number {
|
||||
>getNumber : Symbol(getNumber, Decl(inferParameterWithMethodCallInitializer.ts, 0, 0))
|
||||
|
||||
return 1;
|
||||
}
|
||||
class Example {
|
||||
>Example : Symbol(Example, Decl(inferParameterWithMethodCallInitializer.ts, 2, 1))
|
||||
|
||||
getNumber(): number {
|
||||
>getNumber : Symbol(Example.getNumber, Decl(inferParameterWithMethodCallInitializer.ts, 3, 15))
|
||||
|
||||
return 1;
|
||||
}
|
||||
doSomething(a = this.getNumber()): typeof a {
|
||||
>doSomething : Symbol(Example.doSomething, Decl(inferParameterWithMethodCallInitializer.ts, 6, 5))
|
||||
>a : Symbol(a, Decl(inferParameterWithMethodCallInitializer.ts, 7, 16))
|
||||
>this.getNumber : Symbol(Example.getNumber, Decl(inferParameterWithMethodCallInitializer.ts, 3, 15))
|
||||
>this : Symbol(Example, Decl(inferParameterWithMethodCallInitializer.ts, 2, 1))
|
||||
>getNumber : Symbol(Example.getNumber, Decl(inferParameterWithMethodCallInitializer.ts, 3, 15))
|
||||
>a : Symbol(a, Decl(inferParameterWithMethodCallInitializer.ts, 7, 16))
|
||||
|
||||
return a;
|
||||
>a : Symbol(a, Decl(inferParameterWithMethodCallInitializer.ts, 7, 16))
|
||||
}
|
||||
}
|
||||
|
||||
@ -0,0 +1,30 @@
|
||||
=== tests/cases/compiler/inferParameterWithMethodCallInitializer.ts ===
|
||||
function getNumber(): number {
|
||||
>getNumber : () => number
|
||||
|
||||
return 1;
|
||||
>1 : number
|
||||
}
|
||||
class Example {
|
||||
>Example : Example
|
||||
|
||||
getNumber(): number {
|
||||
>getNumber : () => number
|
||||
|
||||
return 1;
|
||||
>1 : number
|
||||
}
|
||||
doSomething(a = this.getNumber()): typeof a {
|
||||
>doSomething : (a?: number) => number
|
||||
>a : number
|
||||
>this.getNumber() : number
|
||||
>this.getNumber : () => number
|
||||
>this : this
|
||||
>getNumber : () => number
|
||||
>a : number
|
||||
|
||||
return a;
|
||||
>a : number
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user