mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-05-19 10:41:56 -05:00
Merge branch 'master' into release-2.1
This commit is contained in:
@@ -466,9 +466,7 @@ namespace ts {
|
||||
// other kinds of value declarations take precedence over modules
|
||||
target.valueDeclaration = source.valueDeclaration;
|
||||
}
|
||||
forEach(source.declarations, node => {
|
||||
target.declarations.push(node);
|
||||
});
|
||||
addRange(target.declarations, source.declarations);
|
||||
if (source.members) {
|
||||
if (!target.members) target.members = createMap<Symbol>();
|
||||
mergeSymbolTable(target.members, source.members);
|
||||
@@ -1100,7 +1098,7 @@ namespace ts {
|
||||
}
|
||||
|
||||
function getDeclarationOfAliasSymbol(symbol: Symbol): Declaration | undefined {
|
||||
return forEach(symbol.declarations, d => isAliasSymbolDeclaration(d) ? d : undefined);
|
||||
return find<Declaration>(symbol.declarations, isAliasSymbolDeclaration);
|
||||
}
|
||||
|
||||
function getTargetOfImportEqualsDeclaration(node: ImportEqualsDeclaration): Symbol {
|
||||
|
||||
@@ -1024,8 +1024,11 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
// Return the result if we have an immediate super() call on the last statement.
|
||||
if (superCallExpression && statementOffset === ctorStatements.length - 1) {
|
||||
// Return the result if we have an immediate super() call on the last statement,
|
||||
// but only if the constructor itself doesn't use 'this' elsewhere.
|
||||
if (superCallExpression
|
||||
&& statementOffset === ctorStatements.length - 1
|
||||
&& !(ctor.transformFlags & (TransformFlags.ContainsLexicalThis | TransformFlags.ContainsCapturedLexicalThis))) {
|
||||
const returnStatement = createReturn(superCallExpression);
|
||||
|
||||
if (superCallExpression.kind !== SyntaxKind.BinaryExpression
|
||||
|
||||
@@ -23,6 +23,7 @@ namespace ts.JsDoc {
|
||||
"lends",
|
||||
"link",
|
||||
"memberOf",
|
||||
"method",
|
||||
"name",
|
||||
"namespace",
|
||||
"param",
|
||||
|
||||
@@ -616,9 +616,8 @@ namespace ts {
|
||||
else {
|
||||
declarations.push(functionDeclaration);
|
||||
}
|
||||
|
||||
forEachChild(node, visit);
|
||||
}
|
||||
forEachChild(node, visit);
|
||||
break;
|
||||
|
||||
case SyntaxKind.ClassDeclaration:
|
||||
|
||||
@@ -116,7 +116,8 @@ var Base = (function () {
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
return _super.call(this, function () { return _this; }) || this;
|
||||
var _this = _super.call(this, function () { return _this; }) || this;
|
||||
return _this;
|
||||
}
|
||||
return Derived;
|
||||
}(Base));
|
||||
@@ -157,7 +158,8 @@ var M2;
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
return _super.call(this, function () { return _this; }) || this;
|
||||
var _this = _super.call(this, function () { return _this; }) || this;
|
||||
return _this;
|
||||
}
|
||||
return Derived;
|
||||
}(Base));
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/compiler/captureSuperPropertyAccessInSuperCall01.ts(9,24): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/captureSuperPropertyAccessInSuperCall01.ts (1 errors) ====
|
||||
class A {
|
||||
constructor(f: () => string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(() => { return super.blah(); })
|
||||
~~~~~
|
||||
!!! error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
//// [captureSuperPropertyAccessInSuperCall01.ts]
|
||||
class A {
|
||||
constructor(f: () => string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(() => { return super.blah(); })
|
||||
}
|
||||
}
|
||||
|
||||
//// [captureSuperPropertyAccessInSuperCall01.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var A = (function () {
|
||||
function A(f) {
|
||||
}
|
||||
A.prototype.blah = function () { return ""; };
|
||||
return A;
|
||||
}());
|
||||
var B = (function (_super) {
|
||||
__extends(B, _super);
|
||||
function B() {
|
||||
var _this = _super.call(this, function () { return _super.blah.call(_this); }) || this;
|
||||
return _this;
|
||||
}
|
||||
return B;
|
||||
}(A));
|
||||
@@ -22,7 +22,8 @@ var A = (function () {
|
||||
var B = (function (_super) {
|
||||
__extends(B, _super);
|
||||
function B() {
|
||||
return _super.call(this, { test: function () { return _this.someMethod(); } }) || this;
|
||||
var _this = _super.call(this, { test: function () { return _this.someMethod(); } }) || this;
|
||||
return _this;
|
||||
}
|
||||
B.prototype.someMethod = function () { };
|
||||
return B;
|
||||
|
||||
@@ -25,7 +25,8 @@ var Based = (function () {
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
return _super.call(this, this.x) || this;
|
||||
var _this = _super.call(this, _this.x) || this;
|
||||
return _this;
|
||||
}
|
||||
return Derived;
|
||||
}(Based));
|
||||
|
||||
@@ -23,7 +23,8 @@ var Base = (function () {
|
||||
var Super = (function (_super) {
|
||||
__extends(Super, _super);
|
||||
function Super() {
|
||||
return _super.call(this, (function () { return _this; })) || this;
|
||||
var _this = _super.call(this, (function () { return _this; })) || this;
|
||||
return _this;
|
||||
}
|
||||
return Super;
|
||||
}(Base));
|
||||
|
||||
@@ -42,7 +42,8 @@ var Base = (function () {
|
||||
var Derived = (function (_super) {
|
||||
__extends(Derived, _super);
|
||||
function Derived() {
|
||||
return _super.call(this, _this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return Derived;
|
||||
}(Base));
|
||||
|
||||
@@ -24,7 +24,8 @@ var Base = (function () {
|
||||
var D = (function (_super) {
|
||||
__extends(D, _super);
|
||||
function D() {
|
||||
return _super.call(this, function () { _this._t; }) || this;
|
||||
var _this = _super.call(this, function () { _this._t; }) || this;
|
||||
return _this;
|
||||
}
|
||||
return D;
|
||||
}(Base));
|
||||
|
||||
@@ -24,7 +24,8 @@ var Base = (function () {
|
||||
var D = (function (_super) {
|
||||
__extends(D, _super);
|
||||
function D() {
|
||||
return _super.call(this, this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return D;
|
||||
}(Base));
|
||||
|
||||
@@ -0,0 +1,17 @@
|
||||
tests/cases/compiler/superPropertyAccessInSuperCall01.ts(9,9): error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
|
||||
|
||||
==== tests/cases/compiler/superPropertyAccessInSuperCall01.ts (1 errors) ====
|
||||
class A {
|
||||
constructor(f: string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(super.blah())
|
||||
~~~~~
|
||||
!!! error TS17011: 'super' must be called before accessing a property of 'super' in the constructor of a derived class.
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
//// [superPropertyAccessInSuperCall01.ts]
|
||||
class A {
|
||||
constructor(f: string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(super.blah())
|
||||
}
|
||||
}
|
||||
|
||||
//// [superPropertyAccessInSuperCall01.js]
|
||||
var __extends = (this && this.__extends) || function (d, b) {
|
||||
for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];
|
||||
function __() { this.constructor = d; }
|
||||
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
|
||||
};
|
||||
var A = (function () {
|
||||
function A(f) {
|
||||
}
|
||||
A.prototype.blah = function () { return ""; };
|
||||
return A;
|
||||
}());
|
||||
var B = (function (_super) {
|
||||
__extends(B, _super);
|
||||
function B() {
|
||||
var _this = _super.call(this, _super.blah.call(_this)) || this;
|
||||
return _this;
|
||||
}
|
||||
return B;
|
||||
}(A));
|
||||
@@ -40,7 +40,8 @@ var C1 = (function (_super) {
|
||||
var C2 = (function (_super) {
|
||||
__extends(C2, _super);
|
||||
function C2() {
|
||||
return _super.call(this, _super.x.call(_this)) || this;
|
||||
var _this = _super.call(this, _super.x.call(_this)) || this;
|
||||
return _this;
|
||||
}
|
||||
return C2;
|
||||
}(B));
|
||||
|
||||
@@ -70,7 +70,8 @@ var ClassWithNoInitializer = (function (_super) {
|
||||
__extends(ClassWithNoInitializer, _super);
|
||||
//'this' in optional super call
|
||||
function ClassWithNoInitializer() {
|
||||
return _super.call(this, _this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return ClassWithNoInitializer;
|
||||
}(BaseErrClass));
|
||||
|
||||
@@ -71,7 +71,8 @@ var ClassWithNoInitializer = (function (_super) {
|
||||
__extends(ClassWithNoInitializer, _super);
|
||||
//'this' in optional super call
|
||||
function ClassWithNoInitializer() {
|
||||
return _super.call(this, _this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return ClassWithNoInitializer;
|
||||
}(BaseErrClass));
|
||||
|
||||
@@ -36,7 +36,8 @@ var Base = (function () {
|
||||
var Foo = (function (_super) {
|
||||
__extends(Foo, _super);
|
||||
function Foo() {
|
||||
return _super.call(this, _this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return Foo;
|
||||
}(Base));
|
||||
|
||||
@@ -33,7 +33,8 @@ var Base = (function () {
|
||||
var Foo = (function (_super) {
|
||||
__extends(Foo, _super);
|
||||
function Foo() {
|
||||
return _super.call(this, _this) || this;
|
||||
var _this = _super.call(this, _this) || this;
|
||||
return _this;
|
||||
}
|
||||
return Foo;
|
||||
}(Base));
|
||||
|
||||
@@ -24,7 +24,8 @@ var Base = (function () {
|
||||
var Super = (function (_super) {
|
||||
__extends(Super, _super);
|
||||
function Super() {
|
||||
return _super.call(this, (function () { return _this; })()) || this;
|
||||
var _this = _super.call(this, (function () { return _this; })()) || this;
|
||||
return _this;
|
||||
}
|
||||
return Super;
|
||||
}(Base));
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
class A {
|
||||
constructor(f: () => string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(() => { return super.blah(); })
|
||||
}
|
||||
}
|
||||
11
tests/cases/compiler/superPropertyAccessInSuperCall01.ts
Normal file
11
tests/cases/compiler/superPropertyAccessInSuperCall01.ts
Normal file
@@ -0,0 +1,11 @@
|
||||
class A {
|
||||
constructor(f: string) {
|
||||
}
|
||||
public blah(): string { return ""; }
|
||||
}
|
||||
|
||||
class B extends A {
|
||||
constructor() {
|
||||
super(super.blah())
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ goTo.marker('1');
|
||||
verify.completionListContains("constructor");
|
||||
verify.completionListContains("param");
|
||||
verify.completionListContains("type");
|
||||
verify.completionListContains("method");
|
||||
|
||||
goTo.marker('2');
|
||||
verify.completionListContains("constructor");
|
||||
|
||||
19
tests/cases/fourslash/navigateToIIFE.ts
Normal file
19
tests/cases/fourslash/navigateToIIFE.ts
Normal file
@@ -0,0 +1,19 @@
|
||||
/// <reference path="fourslash.ts" />
|
||||
|
||||
// @Filename: file1.ts
|
||||
/////*1*/(function () {
|
||||
//// "use strict";
|
||||
//// function onResume() {
|
||||
//// };
|
||||
////} )();
|
||||
// @Filename: file2.ts
|
||||
/////*2*/class EventManager {
|
||||
//// public onResume(name: string) { }
|
||||
////}
|
||||
////class MyOtherEventManager {
|
||||
//// public onResume(name: string) { }
|
||||
////}
|
||||
verify.navigationItemsListCount(3, "onResume");
|
||||
verify.navigationItemsListCount(1, "onResume", undefined, test.marker("1").fileName);
|
||||
verify.navigationItemsListContains("onResume", "function", "onResume", "exact", test.marker("1").fileName);
|
||||
verify.navigationItemsListCount(2, "onResume", undefined, test.marker("2").fileName);
|
||||
Reference in New Issue
Block a user