Skip to content

Commit

Permalink
generateGetAccessorAndSetAccessor: Share modifier-creating code (#23311)
Browse files Browse the repository at this point in the history
  • Loading branch information
Andy authored Apr 12, 2018
1 parent 5d23cb4 commit 05c746b
Showing 1 changed file with 6 additions and 19 deletions.
25 changes: 6 additions & 19 deletions src/services/refactors/generateGetAccessorAndSetAccessor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -47,8 +47,10 @@ namespace ts.refactor.generateGetAccessorAndSetAccessor {
const { isStatic, fieldName, accessorName, type, container, declaration } = fieldInfo;

const isInClassLike = isClassLike(container);
const accessorModifiers = getAccessorModifiers(isJS, declaration, isStatic, isInClassLike);
const fieldModifiers = getFieldModifiers(isJS, isStatic, isInClassLike);
const accessorModifiers = isInClassLike
? !declaration.modifiers || getModifierFlags(declaration) & ModifierFlags.Private ? getModifiers(isJS, isStatic, SyntaxKind.PublicKeyword) : declaration.modifiers
: undefined;
const fieldModifiers = isInClassLike ? getModifiers(isJS, isStatic, SyntaxKind.PrivateKeyword) : undefined;

updateFieldDeclaration(changeTracker, file, declaration, fieldName, fieldModifiers, container);

Expand Down Expand Up @@ -82,24 +84,9 @@ namespace ts.refactor.generateGetAccessorAndSetAccessor {
return isIdentifier(fieldName) ? createPropertyAccess(leftHead, fieldName) : createElementAccess(leftHead, createLiteral(fieldName));
}

function getAccessorModifiers(isJS: boolean, declaration: AcceptedDeclaration, isStatic: boolean, isClassLike: boolean): NodeArray<Modifier> | undefined {
if (!isClassLike) return undefined;

if (!declaration.modifiers || getModifierFlags(declaration) & ModifierFlags.Private) {
const modifiers = append<Modifier>(
!isJS ? [createToken(SyntaxKind.PublicKeyword)] : undefined,
isStatic ? createToken(SyntaxKind.StaticKeyword) : undefined
);
return modifiers && createNodeArray(modifiers);
}
return declaration.modifiers;
}

function getFieldModifiers(isJS: boolean, isStatic: boolean, isClassLike: boolean): NodeArray<Modifier> | undefined {
if (!isClassLike) return undefined;

function getModifiers(isJS: boolean, isStatic: boolean, accessModifier: SyntaxKind.PublicKeyword | SyntaxKind.PrivateKeyword): NodeArray<Modifier> {
const modifiers = append<Modifier>(
!isJS ? [createToken(SyntaxKind.PrivateKeyword)] : undefined,
!isJS ? [createToken(accessModifier) as Token<SyntaxKind.PublicKeyword> | Token<SyntaxKind.PrivateKeyword>] : undefined,
isStatic ? createToken(SyntaxKind.StaticKeyword) : undefined
);
return modifiers && createNodeArray(modifiers);
Expand Down

0 comments on commit 05c746b

Please sign in to comment.