import cpp

class ExprStmt_ extends ExprStmt {
  override string toString() { result = "ExprStmt: " + getExpr().toString() }
}

from Loop l, string s, Element e
where
  s = "getCondition()" and
  e = l.getCondition()
  or
  s = "getStmt()" and
  e = l.getStmt()
  or
  s = "(ForStmt).getInitialization()" and
  e = l.(ForStmt).getInitialization()
  or
  s = "(ForStmt).getUpdate()" and
  e = l.(ForStmt).getUpdate()
  or
  s = "(ForStmt).getAnIterationVariable()" and
  e = l.(ForStmt).getAnIterationVariable()
  or
  s = "(RangeBasedForStmt).getVariable()" and
  e = l.(RangeBasedForStmt).getVariable()
  or
  s = "(RangeBasedForStmt).getUpdate()" and
  e = l.(RangeBasedForStmt).getUpdate()
  or
  s = "(RangeBasedForStmt).getEnclosingFunction().getATemplateArgument()" and
  e = l.(RangeBasedForStmt).getEnclosingFunction().getATemplateArgument()
select l, s, e
