当前位置: 首页>>代码示例>>Java>>正文


Java Visitor类代码示例

本文整理汇总了Java中com.google.javascript.jscomp.NodeUtil.Visitor的典型用法代码示例。如果您正苦于以下问题:Java Visitor类的具体用法?Java Visitor怎么用?Java Visitor使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Visitor类属于com.google.javascript.jscomp.NodeUtil包,在下文中一共展示了Visitor类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: replaceTypeVariablesWithUnknown

import com.google.javascript.jscomp.NodeUtil.Visitor; //导入依赖的package包/类
private Node replaceTypeVariablesWithUnknown(JSDocInfo functionJsdoc, Node typeAst) {
  final List<String> typeVars = functionJsdoc.getTemplateTypeNames();
  if (typeVars.isEmpty()) {
    return typeAst;
  }
  NodeUtil.visitPreOrder(typeAst, new Visitor(){
    @Override
    public void visit(Node n) {
      if (n.isString() && n.getParent() != null && typeVars.contains(n.getString())) {
        n.replaceWith(new Node(Token.QMARK));
      }
    }
  });
  return typeAst;
}
 
开发者ID:google,项目名称:closure-compiler,代码行数:16,代码来源:EarlyEs6ToEs3Converter.java

示例2: maybeAddUsage

import com.google.javascript.jscomp.NodeUtil.Visitor; //导入依赖的package包/类
private void maybeAddUsage(
    final NodeTraversal t,
    final Node n,
    Node rootTypeNode,
    final boolean markStrongUsages,
    Predicate<Node> pred) {
  Visitor visitor =
      new Visitor() {
        @Override
        public void visit(Node typeNode) {
          if (typeNode.isString()) {
            String typeString = typeNode.getString();
            if (mode == Mode.SINGLE_FILE && !typeString.contains(".")) {
              // If using a single-name type, it's probably something like Error, which we
              // don't have externs for.
              weakUsages.add(typeString);
              return;
            }
            String rootName = Splitter.on('.').split(typeString).iterator().next();
            Var var = t.getScope().getVar(rootName);
            if (var == null || (var.isGlobal() && !var.isExtern())) {
              if (markStrongUsages) {
                usages.put(typeString, n);
              } else {
                // If we're not adding strong usages here, add weak usages for the prefixes of the
                // namespace, like we do for GETPROP nodes. Otherwise we get an extra require
                // warning for cases like:
                //
                //     goog.require('foo.bar.SomeService');
                //
                //     /** @constructor @extends {foo.bar.SomeService.Handler} */
                //     var MyHandler = function() {};
                addWeakUsagesOfAllPrefixes(typeString);
              }
            } else {
              // Even if the root namespace is in externs, add weak usages because the full
              // namespace may still be goog.provided.
              addWeakUsagesOfAllPrefixes(typeString);
            }
          }
        }
      };

  NodeUtil.visitPreOrder(rootTypeNode, visitor, pred);
}
 
开发者ID:google,项目名称:closure-compiler,代码行数:46,代码来源:CheckMissingAndExtraRequires.java

示例3: verifyScopeChangesHaveBeenRecorded

import com.google.javascript.jscomp.NodeUtil.Visitor; //导入依赖的package包/类
/** Checks that the scope roots marked as changed have indeed changed */
private void verifyScopeChangesHaveBeenRecorded(String passName, Node root) {
  final String passNameMsg = passName.isEmpty() ? "" : passName + ": ";

  // Gather all the scope nodes that existed when the snapshot was taken.
  final Set<Node> snapshotScopeNodes = new HashSet<>();
  NodeUtil.visitPreOrder(
      clonesByCurrent.get(root),
      new Visitor() {
        @Override
        public void visit(Node oldNode) {
          if (NodeUtil.isChangeScopeRoot(oldNode)) {
            snapshotScopeNodes.add(oldNode);
          }
        }
      },
      Predicates.<Node>alwaysTrue());

  NodeUtil.visitPreOrder(
      root,
      new Visitor() {
        @Override
        public void visit(Node n) {
          if (n.isRoot()) {
            verifyRoot(n);
          } else if (NodeUtil.isChangeScopeRoot(n)) {
            Node clone = clonesByCurrent.get(n);
            // Remove any scope nodes that still exist.
            snapshotScopeNodes.remove(clone);
            verifyNode(passNameMsg, n);
            if (clone == null) {
              verifyNewNode(passNameMsg, n);
            } else {
              verifyNodeChange(passNameMsg, n, clone);
            }
          }
        }
      },
      Predicates.<Node>alwaysTrue());

  // Only actually deleted snapshot scope nodes should remain.
  verifyDeletedScopeNodes(passNameMsg, snapshotScopeNodes);
}
 
开发者ID:google,项目名称:closure-compiler,代码行数:44,代码来源:ChangeVerifier.java


注:本文中的com.google.javascript.jscomp.NodeUtil.Visitor类示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。