Home / Function/ isReferenced() — vue Function Reference

isReferenced() — vue Function Reference

Architecture documentation for the isReferenced() function in babelUtils.ts from the vue codebase.

Entity Profile

Dependency Diagram

graph TD
  57d92963_69b1_85af_8688_7c3e9b8289da["isReferenced()"]
  fcee39ec_18fe_7a99_fb49_d33db4d055a4["babelUtils.ts"]
  57d92963_69b1_85af_8688_7c3e9b8289da -->|defined in| fcee39ec_18fe_7a99_fb49_d33db4d055a4
  762f11c0_e86f_83f8_d86f_a9c04b7e5b51["isReferencedIdentifier()"]
  762f11c0_e86f_83f8_d86f_a9c04b7e5b51 -->|calls| 57d92963_69b1_85af_8688_7c3e9b8289da
  style 57d92963_69b1_85af_8688_7c3e9b8289da fill:#6366f1,stroke:#818cf8,color:#fff

Relationship Graph

Source Code

packages/compiler-sfc/src/babelUtils.ts lines 256–423

function isReferenced(node: Node, parent: Node, grandparent?: Node): boolean {
  switch (parent.type) {
    // yes: PARENT[NODE]
    // yes: NODE.child
    // no: parent.NODE
    case 'MemberExpression':
    case 'OptionalMemberExpression':
      if (parent.property === node) {
        return !!parent.computed
      }
      return parent.object === node

    case 'JSXMemberExpression':
      return parent.object === node
    // no: let NODE = init;
    // yes: let id = NODE;
    case 'VariableDeclarator':
      return parent.init === node

    // yes: () => NODE
    // no: (NODE) => {}
    case 'ArrowFunctionExpression':
      return parent.body === node

    // no: class { #NODE; }
    // no: class { get #NODE() {} }
    // no: class { #NODE() {} }
    // no: class { fn() { return this.#NODE; } }
    case 'PrivateName':
      return false

    // no: class { NODE() {} }
    // yes: class { [NODE]() {} }
    // no: class { foo(NODE) {} }
    case 'ClassMethod':
    case 'ClassPrivateMethod':
    case 'ObjectMethod':
      if (parent.key === node) {
        return !!parent.computed
      }
      return false

    // yes: { [NODE]: "" }
    // no: { NODE: "" }
    // depends: { NODE }
    // depends: { key: NODE }
    case 'ObjectProperty':
      if (parent.key === node) {
        return !!parent.computed
      }
      // parent.value === node
      return !grandparent || grandparent.type !== 'ObjectPattern'
    // no: class { NODE = value; }
    // yes: class { [NODE] = value; }
    // yes: class { key = NODE; }
    case 'ClassProperty':
      if (parent.key === node) {
        return !!parent.computed
      }
      return true
    case 'ClassPrivateProperty':
      return parent.key !== node

    // no: class NODE {}
    // yes: class Foo extends NODE {}
    case 'ClassDeclaration':
    case 'ClassExpression':
      return parent.superClass === node

    // yes: left = NODE;
    // no: NODE = right;
    case 'AssignmentExpression':
      return parent.right === node

    // no: [NODE = foo] = [];
    // yes: [foo = NODE] = [];
    case 'AssignmentPattern':
      return parent.right === node

    // no: NODE: for (;;) {}
    case 'LabeledStatement':

Domain

Subdomains

Frequently Asked Questions

What does isReferenced() do?
isReferenced() is a function in the vue codebase, defined in packages/compiler-sfc/src/babelUtils.ts.
Where is isReferenced() defined?
isReferenced() is defined in packages/compiler-sfc/src/babelUtils.ts at line 256.
What calls isReferenced()?
isReferenced() is called by 1 function(s): isReferencedIdentifier.

Analyze Your Own Codebase

Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.

Try Supermodel Free