/** * 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 XPathException */ private 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()) { Binding newBinding = ((VariableReference) seq).getBinding(); if (newBinding instanceof LetExpression) { ((LetExpression) newBinding).setIndexedVariable(); } } }
/** * 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 XPathException */ private 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()) { Binding newBinding = ((VariableReference) seq).getBinding(); if (newBinding instanceof LetExpression) { ((LetExpression) newBinding).setIndexedVariable(); } } }
replaceVariable(offer.getOptimizer(), sequence); return action; ((LazyExpression) sequence).getBaseExpression() instanceof VariableReference && !((VariableReference)((LazyExpression) sequence).getBaseExpression()).getBinding().isAssignable()) { replaceVariable(offer.getOptimizer(), ((LazyExpression) sequence).getBaseExpression()); return action;
replaceVariable(offer.getOptimizer(), sequence); return action; ((LazyExpression) sequence).getBaseExpression() instanceof VariableReference && !((VariableReference)((LazyExpression) sequence).getBaseExpression()).getBinding().isAssignable()) { replaceVariable(offer.getOptimizer(), ((LazyExpression) sequence).getBaseExpression()); return action;
Binding b = ((VariableReference)sequence).getBinding(); if (b != null && !b.isAssignable()) { replaceVariable(offer.getOptimizer(), sequence); return action; ((LazyExpression) sequence).getBaseExpression() instanceof VariableReference && !((VariableReference)((LazyExpression) sequence).getBaseExpression()).getBinding().isAssignable()) { replaceVariable(offer.getOptimizer(), ((LazyExpression) sequence).getBaseExpression()); return action;
replaceVariable(getSequence()); return getAction().optimize(visitor, contextItemType);
replaceVariable(getSequence()); return getAction().optimize(visitor, contextItemType);
replaceVariable(opt, sequence); return visitor.optimize(action, contextItemType);
replaceVariable(opt, sequence); return visitor.optimize(action, contextItemType);
replaceVariable(opt, sequence); return visitor.optimize(action, contextItemType);