Skip to content

Commit

Permalink
Add helper to resolve identifiers from expressions
Browse files Browse the repository at this point in the history
  • Loading branch information
kitten committed Aug 22, 2024
1 parent 99e5ba5 commit b249940
Showing 1 changed file with 26 additions and 0 deletions.
26 changes: 26 additions & 0 deletions packages/graphqlsp/src/ast/declaration.ts
Original file line number Diff line number Diff line change
Expand Up @@ -325,3 +325,29 @@ export function getValueOfIdentifier(
}
}
}

/** Resolves exressions that might not influence the target identifier */
export function getIdentifierOfChainExpression(
node: ts.Expression
): ts.Identifier | undefined {
let target: ts.Expression | undefined = node;
while (target) {
if (ts.isPropertyAccessExpression(target)) {
target = target.name;
} else if (ts.isAsExpression(target)) {
target = target.expression;
} else if (ts.isSatisfiesExpression(target)) {
target = target.expression;
} else if (ts.isNonNullExpression(target)) {
target = target.expression;
} else if (ts.isParenthesizedExpression(target)) {
target = target.expression;
} else if (ts.isCommaListExpression(target)) {
target = target.elements[target.elements.length - 1];
} else if (ts.isIdentifier(target)) {
return target;
} else {
return;
}
}
}

0 comments on commit b249940

Please sign in to comment.