using Microsoft.CodeAnalysis;
using Semmle.Extraction.Kinds;
namespace Semmle.Extraction.CSharp.Entities
{
///
/// Holds all information required to create an Expression entity.
///
internal interface IExpressionInfo
{
Context Context { get; }
///
/// The type of the expression.
///
AnnotatedTypeSymbol? Type { get; }
///
/// The location of the expression.
///
Location Location { get; }
///
/// The kind of the expression.
///
ExprKind Kind { get; }
///
/// The parent of the expression.
///
IExpressionParentEntity Parent { get; }
///
/// The child index of the expression.
///
int Child { get; }
///
/// Holds if this is an implicit expression.
///
bool IsCompilerGenerated { get; }
///
/// Gets a string representation of the value.
/// null is encoded as the string "null".
/// If the expression does not have a value, then this
/// is null.
///
string? ExprValue { get; }
NullableFlowState FlowState { get; }
}
}