Skip to content

Commit 5b0de48

Browse files
committed
Add helper to resolve identifiers from expressions
1 parent 99e5ba5 commit 5b0de48

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

packages/graphqlsp/src/ast/declaration.ts

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -325,3 +325,29 @@ export function getValueOfIdentifier(
325325
}
326326
}
327327
}
328+
329+
/** Resolves exressions that might not influence the target identifier */
330+
export function getIdentifierOfChainExpression(
331+
node: ts.Expression
332+
): ts.Identifier | undefined {
333+
let target: ts.Expression | undefined = node;
334+
while (target) {
335+
if (ts.isPropertyAccessExpression(target)) {
336+
target = target.name;
337+
} else if (
338+
ts.isAsExpression(target) ||
339+
ts.isSatisfiesExpression(target) ||
340+
ts.isNonNullExpression(target) ||
341+
ts.isParenthesizedExpression(target) ||
342+
ts.isExpressionWithTypeArguments(target)
343+
) {
344+
target = target.expression;
345+
} else if (ts.isCommaListExpression(target)) {
346+
target = target.elements[target.elements.length - 1];
347+
} else if (ts.isIdentifier(target)) {
348+
return target;
349+
} else {
350+
return;
351+
}
352+
}
353+
}

0 commit comments

Comments
 (0)