mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-09 16:39:46 -05:00
Merge branch 'fix11857' of https://github.com/RyanCavanaugh/TypeScript into RyanCavanaugh-fix11857
This commit is contained in:
@@ -16852,9 +16852,10 @@ namespace ts {
|
||||
// in a JS file
|
||||
// Note:JS inferred classes might come from a variable declaration instead of a function declaration.
|
||||
// In this case, using getResolvedSymbol directly is required to avoid losing the members from the declaration.
|
||||
const funcSymbol = node.expression.kind === SyntaxKind.Identifier ?
|
||||
getResolvedSymbol(node.expression as Identifier) :
|
||||
checkExpression(node.expression).symbol;
|
||||
let funcSymbol = checkExpression(node.expression).symbol;
|
||||
if (!funcSymbol && node.expression.kind === SyntaxKind.Identifier) {
|
||||
funcSymbol = getResolvedSymbol(node.expression as Identifier);
|
||||
}
|
||||
const type = funcSymbol && getJavaScriptClassType(funcSymbol);
|
||||
if (type) {
|
||||
return type;
|
||||
|
||||
21
tests/cases/fourslash/indirectClassInstantiation.ts
Normal file
21
tests/cases/fourslash/indirectClassInstantiation.ts
Normal file
@@ -0,0 +1,21 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
// @allowJs: true
|
||||
// @Filename: something.js
|
||||
//// function TestObj(){
|
||||
//// this.property = "value";
|
||||
//// }
|
||||
//// var constructor = TestObj;
|
||||
//// var instance = new constructor();
|
||||
//// instance./*a*/
|
||||
//// var class2 = function() { };
|
||||
//// class2.prototype.blah = function() { };
|
||||
//// var inst2 = new class2();
|
||||
//// inst2.blah/*b*/;
|
||||
|
||||
goTo.marker('a');
|
||||
verify.completionListContains('property');
|
||||
edit.backspace();
|
||||
|
||||
goTo.marker('b');
|
||||
verify.quickInfoIs('(property) class2.blah: () => void');
|
||||
Reference in New Issue
Block a user