Xamarin Public Jenkins (auto-signing) e79aa3c0ed Imported Upstream version 4.6.0.125
Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
2016-08-03 10:59:49 +00:00

34 lines
1.0 KiB
C#

using System;
using System.Collections.Generic;
using System.Text;
namespace System.Data.Linq.SqlClient {
/// <summary>
/// Walk a tree and return the set of unique aliases it consumes.
/// </summary>
class SqlGatherConsumedAliases {
internal static HashSet<SqlAlias> Gather(SqlNode node) {
Gatherer g = new Gatherer();
g.Visit(node);
return g.Consumed;
}
private class Gatherer : SqlVisitor {
internal HashSet<SqlAlias> Consumed = new HashSet<SqlAlias>();
internal void VisitAliasConsumed(SqlAlias a) {
Consumed.Add(a);
}
internal override SqlExpression VisitColumn(SqlColumn col) {
VisitAliasConsumed(col.Alias);
VisitExpression(col.Expression);
return col;
}
internal override SqlExpression VisitColumnRef(SqlColumnRef cref) {
VisitAliasConsumed(cref.Column.Alias);
return cref;
}
}
}
}