walkIdentifiers() — vue Function Reference
Architecture documentation for the walkIdentifiers() function in babelUtils.ts from the vue codebase.
Entity Profile
Dependency Diagram
graph TD 484ec320_49bc_b969_d86d_edc246af3234["walkIdentifiers()"] fcee39ec_18fe_7a99_fb49_d33db4d055a4["babelUtils.ts"] 484ec320_49bc_b969_d86d_edc246af3234 -->|defined in| fcee39ec_18fe_7a99_fb49_d33db4d055a4 4dff3da5_c3f4_4303_7989_1d16ed3f091d["compileScript()"] 4dff3da5_c3f4_4303_7989_1d16ed3f091d -->|calls| 484ec320_49bc_b969_d86d_edc246af3234 8b0d9022_d61b_fac0_8496_8bd8ba5757a4["processExp()"] 8b0d9022_d61b_fac0_8496_8bd8ba5757a4 -->|calls| 484ec320_49bc_b969_d86d_edc246af3234 3c98115b_726f_620d_0dc3_3d696ff8a7c2["prefixIdentifiers()"] 3c98115b_726f_620d_0dc3_3d696ff8a7c2 -->|calls| 484ec320_49bc_b969_d86d_edc246af3234 762f11c0_e86f_83f8_d86f_a9c04b7e5b51["isReferencedIdentifier()"] 484ec320_49bc_b969_d86d_edc246af3234 -->|calls| 762f11c0_e86f_83f8_d86f_a9c04b7e5b51 203503b8_22db_80c3_4c32_90580ed9ee87["isFunctionType()"] 484ec320_49bc_b969_d86d_edc246af3234 -->|calls| 203503b8_22db_80c3_4c32_90580ed9ee87 4ae3486a_a2ce_f463_a063_296838aa8f21["walkFunctionParams()"] 484ec320_49bc_b969_d86d_edc246af3234 -->|calls| 4ae3486a_a2ce_f463_a063_296838aa8f21 3925bfcf_8d7b_d9df_653e_7cb99ac7b845["markScopeIdentifier()"] 484ec320_49bc_b969_d86d_edc246af3234 -->|calls| 3925bfcf_8d7b_d9df_653e_7cb99ac7b845 6f036a58_49cd_b26f_a233_d34bf76de66c["walkBlockDeclarations()"] 484ec320_49bc_b969_d86d_edc246af3234 -->|calls| 6f036a58_49cd_b26f_a233_d34bf76de66c style 484ec320_49bc_b969_d86d_edc246af3234 fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
packages/compiler-sfc/src/babelUtils.ts lines 15–85
export function walkIdentifiers(
root: Node,
onIdentifier: (
node: Identifier,
parent: Node,
parentStack: Node[],
isReference: boolean,
isLocal: boolean
) => void,
onNode?: (node: Node) => void
) {
const includeAll = false
const parentStack: Node[] = []
const knownIds: Record<string, number> = Object.create(null)
const rootExp =
root.type === 'Program' &&
root.body[0].type === 'ExpressionStatement' &&
root.body[0].expression
;(walk as any)(root, {
enter(node: Node & { scopeIds?: Set<string> }, parent: Node | undefined) {
parent && parentStack.push(parent)
if (
parent &&
parent.type.startsWith('TS') &&
parent.type !== 'TSAsExpression' &&
parent.type !== 'TSNonNullExpression' &&
parent.type !== 'TSTypeAssertion'
) {
return this.skip()
}
if (onNode) onNode(node)
if (node.type === 'Identifier') {
const isLocal = !!knownIds[node.name]
const isRefed = isReferencedIdentifier(node, parent!, parentStack)
if (includeAll || (isRefed && !isLocal)) {
onIdentifier(node, parent!, parentStack, isRefed, isLocal)
}
} else if (
node.type === 'ObjectProperty' &&
parent!.type === 'ObjectPattern'
) {
// mark property in destructure pattern
;(node as any).inPattern = true
} else if (isFunctionType(node)) {
// walk function expressions and add its arguments to known identifiers
// so that we don't prefix them
walkFunctionParams(node, id => markScopeIdentifier(node, id, knownIds))
} else if (node.type === 'BlockStatement') {
// #3445 record block-level local variables
walkBlockDeclarations(node, id =>
markScopeIdentifier(node, id, knownIds)
)
}
},
leave(node: Node & { scopeIds?: Set<string> }, parent: Node | undefined) {
parent && parentStack.pop()
if (node !== rootExp && node.scopeIds) {
for (const id of node.scopeIds) {
knownIds[id]--
if (knownIds[id] === 0) {
delete knownIds[id]
}
}
}
}
})
}
Domain
Subdomains
Defined In
Calls
Source
Frequently Asked Questions
What does walkIdentifiers() do?
walkIdentifiers() is a function in the vue codebase, defined in packages/compiler-sfc/src/babelUtils.ts.
Where is walkIdentifiers() defined?
walkIdentifiers() is defined in packages/compiler-sfc/src/babelUtils.ts at line 15.
What does walkIdentifiers() call?
walkIdentifiers() calls 5 function(s): isFunctionType, isReferencedIdentifier, markScopeIdentifier, walkBlockDeclarations, walkFunctionParams.
What calls walkIdentifiers()?
walkIdentifiers() is called by 3 function(s): compileScript, prefixIdentifiers, processExp.
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free