コード例 #1
0
 /**
  * @param function
  * @return the Definition object for the function.
  */
 private Definition getFunctionDefinition(Node function) {
   DefinitionSite definitionSite = defFinder.getDefinitionForFunction(function);
   Preconditions.checkNotNull(definitionSite);
   Definition definition = definitionSite.definition;
   Preconditions.checkState(!definitionSite.inExterns);
   Preconditions.checkState(definition.getRValue() == function);
   return definition;
 }
コード例 #2
0
    /**
     * @param function
     * @return Whether the callers to this function can be modified in any way.
     */
    boolean canModifyCallers(Node function) {
      if (NodeUtil.isVarArgsFunction(function)) {
        return false;
      }

      DefinitionSite defSite = defFinder.getDefinitionForFunction(function);
      if (defSite == null) {
        return false;
      }

      Definition definition = defSite.definition;

      // Be conservative, don't try to optimize any declaration that isn't as
      // simple function declaration or assignment.
      if (!SimpleDefinitionFinder.isSimpleFunctionDeclaration(function)) {
        return false;
      }

      return defFinder.canModifyDefinition(definition);
    }