mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-16 15:44:16 -06:00
Recognize modifiers
This commit is contained in:
parent
324000020c
commit
0380f3f38e
@ -1308,7 +1308,7 @@ namespace ts {
|
||||
|
||||
/**
|
||||
* Resolves a qualified name and any involved aliases.
|
||||
*/
|
||||
*/
|
||||
function resolveEntityName(name: EntityNameOrEntityNameExpression, meaning: SymbolFlags, ignoreErrors?: boolean, dontResolveAlias?: boolean, location?: Node): Symbol | undefined {
|
||||
if (nodeIsMissing(name)) {
|
||||
return undefined;
|
||||
|
||||
@ -1370,7 +1370,7 @@ namespace ts {
|
||||
const missingMembers = getMissingInterfaceMembers(<InterfaceDeclaration>type.symbol.declarations[0], existingMembers, checker);
|
||||
|
||||
for (const member of missingMembers) {
|
||||
if (member.kind === SyntaxKind.PropertySignature) {
|
||||
if (member.kind === SyntaxKind.PropertySignature || member.kind === SyntaxKind.PropertyDeclaration) {
|
||||
const interfaceProperty = <PropertySignature>member;
|
||||
if (trackingAddedMembers.indexOf(interfaceProperty.name.getText()) === -1) {
|
||||
let propertyText = "";
|
||||
@ -1405,25 +1405,24 @@ namespace ts {
|
||||
* Gets members in an interface and all its base types.
|
||||
*/
|
||||
function getInterfaceMembers(declaration: InterfaceDeclaration, checker: TypeChecker): TypeElement[] {
|
||||
let result: TypeElement[] = declaration.members
|
||||
? declaration.members.filter(member => !(getModifierFlags(member) & ModifierFlags.Private))
|
||||
: [];
|
||||
const clauses = getInterfaceBaseTypeNodes(declaration);
|
||||
let result: TypeElement[] = [];
|
||||
for (let i = 0; clauses && i < clauses.length; i++) {
|
||||
const type = checker.getTypeAtLocation(clauses[i]);
|
||||
if (type && type.symbol && type.symbol.declarations) {
|
||||
result = result.concat(getInterfaceMembers(<InterfaceDeclaration>type.symbol.declarations[0], checker));
|
||||
if (clauses) {
|
||||
for (const clause of clauses) {
|
||||
const type = checker.getTypeAtLocation(clause);
|
||||
if (type && type.symbol && type.symbol.declarations) {
|
||||
result = result.concat(getInterfaceMembers(<InterfaceDeclaration>type.symbol.declarations[0], checker));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (declaration.members) {
|
||||
result = result.concat(declaration.members);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
function getMissingInterfaceMembers(declaration: InterfaceDeclaration, existingMembers: string[], checker: TypeChecker): TypeElement[] {
|
||||
const interfaceMembers = getInterfaceMembers(declaration, checker);
|
||||
|
||||
return ts.filter(interfaceMembers, member => !member.name || existingMembers.indexOf(member.name.getText()) === -1);
|
||||
|
||||
}
|
||||
|
||||
@ -7,5 +7,6 @@
|
||||
//// class C extends A {[|
|
||||
//// |]}
|
||||
|
||||
verify.codeFixAtPosition(`x: number;
|
||||
verify.codeFixAtPosition(`
|
||||
abstract x: number;
|
||||
`);
|
||||
|
||||
@ -7,5 +7,6 @@
|
||||
//// class C extends A {[|
|
||||
//// |]}
|
||||
|
||||
verify.codeFixAtPosition(`protected x: number;
|
||||
verify.codeFixAtPosition(`
|
||||
protected abstract x: number;
|
||||
`);
|
||||
|
||||
@ -7,5 +7,6 @@
|
||||
//// class C extends A {[|
|
||||
//// |]}
|
||||
|
||||
verify.codeFixAtPosition(`public x: number;
|
||||
verify.codeFixAtPosition(`
|
||||
public abstract x: number;
|
||||
`);
|
||||
@ -53,10 +53,11 @@
|
||||
|
||||
|
||||
verify.codeFixAtPosition(
|
||||
`a: number;
|
||||
b: number;
|
||||
c: number;
|
||||
d: number;
|
||||
e: number:
|
||||
`
|
||||
e: number;
|
||||
f: number;
|
||||
a: number;
|
||||
b: number;
|
||||
d: number;
|
||||
c: number;
|
||||
`);
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user