newtests/lsp/documentHighlight/__fixtures__/classInheritance.js (26 lines of code) (raw):
// @flow
class A {
static bar = 1;
bar(): void { }
}
class B extends A { }
class C1 extends B {
bar(): void { }
}
class C2 extends B {
bar(): void {
super.bar();
}
}
new A().bar();
new B().bar();
new C1().bar();
new C2().bar();
class Foo<T> {
bar(): void { }
}
new Foo().bar();
// Even though this is a `C1` instance at runtime, and so it calls `C1`'s `bar` implementation, it
// is typed as an `A` instance so other uses of `C1`'s `bar` are not returned.
(new C1(): A).bar();
class HasNoBar { }
// $FlowFixMe
new HasNoBar().bar();
A.bar;
B.bar;