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
