//---------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// @owner [....]
// @backupOwner [....]
//---------------------------------------------------------------------
namespace System.Data.Common.EntitySql.AST
{
using System;
using System.Diagnostics;
///
/// AST node for an aliased expression.
///
internal sealed class AliasedExpr : Node
{
private readonly Node _expr;
private readonly Identifier _alias;
///
/// Constructs an aliased expression node.
///
internal AliasedExpr(Node expr, Identifier alias)
{
Debug.Assert(expr != null, "expr != null");
Debug.Assert(alias != null, "alias != null");
if (String.IsNullOrEmpty(alias.Name))
{
throw EntityUtil.EntitySqlError(alias.ErrCtx, System.Data.Entity.Strings.InvalidEmptyIdentifier);
}
_expr = expr;
_alias = alias;
}
///
/// Constructs an aliased expression node with null alias.
///
internal AliasedExpr(Node expr)
{
Debug.Assert(expr != null, "expr != null");
_expr = expr;
}
internal Node Expr
{
get { return _expr; }
}
///
/// Returns expression alias identifier, or null if not aliased.
///
internal Identifier Alias
{
get { return _alias; }
}
}
}