@@ -717,7 +717,7 @@ namespace ts {
717
717
}
718
718
// declaration is after usage
719
719
// can be legal if usage is deferred (i.e. inside function or in initializer of instance property)
720
- if (isUsedInFunctionOrInstanceProperty(usage)) {
720
+ if (isUsedInFunctionOrInstanceProperty(usage, declaration )) {
721
721
return true;
722
722
}
723
723
const sourceFiles = host.getSourceFiles();
@@ -748,8 +748,7 @@ namespace ts {
748
748
// 1. inside a function
749
749
// 2. inside an instance property initializer, a reference to a non-instance property
750
750
const container = getEnclosingBlockScopeContainer(declaration);
751
- const isInstanceProperty = declaration.kind === SyntaxKind.PropertyDeclaration && !(getModifierFlags(declaration) & ModifierFlags.Static);
752
- return isUsedInFunctionOrInstanceProperty(usage, isInstanceProperty, container);
751
+ return isUsedInFunctionOrInstanceProperty(usage, declaration, container);
753
752
754
753
function isImmediatelyUsedInInitializerOfBlockScopedVariable(declaration: VariableDeclaration, usage: Node): boolean {
755
754
const container = getEnclosingBlockScopeContainer(declaration);
@@ -778,7 +777,7 @@ namespace ts {
778
777
return false;
779
778
}
780
779
781
- function isUsedInFunctionOrInstanceProperty(usage: Node, isDeclarationInstanceProperty?: boolean , container?: Node): boolean {
780
+ function isUsedInFunctionOrInstanceProperty(usage: Node, declaration: Node , container?: Node): boolean {
782
781
let current = usage;
783
782
while (current) {
784
783
if (current === container) {
@@ -795,7 +794,8 @@ namespace ts {
795
794
(<PropertyDeclaration>current.parent).initializer === current;
796
795
797
796
if (initializerOfInstanceProperty) {
798
- return !isDeclarationInstanceProperty;
797
+ const isDeclarationInstanceProperty = declaration.kind === SyntaxKind.PropertyDeclaration && !(getModifierFlags(declaration) & ModifierFlags.Static);
798
+ return !isDeclarationInstanceProperty || getContainingClass(usage) !== getContainingClass(declaration);
799
799
}
800
800
801
801
current = current.parent;
0 commit comments