using Microsoft.CodeAnalysis.CSharp.Syntax;
namespace Ariadne.Generator
{
public enum PassageCallKind
{
Discard,
Assign,
Declare,
Return,
}
///
/// A statement that calls a passage and does nothing else but take its value, if it has one.
///
public class PassageCall
{
public readonly PassageCallKind Kind;
public readonly InvocationExpressionSyntax Invocation;
///
/// Holds the left side of an assignment, or null.
///
public readonly ExpressionSyntax Target;
///
/// Holds the variable a declaration declares, or null.
///
public readonly VariableDeclaratorSyntax Declarator;
public PassageCall(PassageCallKind kind, InvocationExpressionSyntax invocation, ExpressionSyntax target,
VariableDeclaratorSyntax declarator)
{
Kind = kind;
Invocation = invocation;
Target = target;
Declarator = declarator;
}
}
}