示例#1
0
 /**
  * Replace all references to the variable bound by this let expression, that occur within the
  * action expression, with the given expression
  *
  * @param opt The optimizer
  * @param seq the expression
  * @throws net.sf.saxon.trans.XPathException
  */
 public void replaceVariable(Optimizer opt, Expression seq) throws XPathException {
   PromotionOffer offer2 = new PromotionOffer(opt);
   offer2.action = PromotionOffer.INLINE_VARIABLE_REFERENCES;
   offer2.bindingList = new Binding[] {this};
   offer2.containingExpression = seq;
   action = doPromotion(action, offer2);
   if (offer2.accepted) {
     // there might be further references to the variable
     offer2.accepted = false;
     replaceVariable(opt, seq);
   }
   if (isIndexedVariable() && seq instanceof VariableReference) {
     Binding newBinding = ((VariableReference) seq).getBinding();
     if (newBinding instanceof Assignation) {
       ((Assignation) newBinding).setIndexedVariable();
     }
   }
 }