// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under MIT X11 license (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.NRefactory.CSharp.PatternMatching
{
///
/// Base class for all patterns.
///
public abstract class Pattern : AstNode
{
public override NodeType NodeType {
get { return NodeType.Pattern; }
}
protected internal virtual bool DoMatchCollection(Role role, ref AstNode other, Match match)
{
bool result = DoMatch(other, match);
other = other.NextSibling;
return result;
}
public override S AcceptVisitor(IAstVisitor visitor, T data)
{
return default(S);
}
public AstType ToType()
{
return new TypePlaceholder(this);
}
public Expression ToExpression()
{
return new ExpressionPlaceholder(this);
}
public Statement ToStatement()
{
return new StatementPlaceholder(this);
}
public BlockStatement ToBlock()
{
return new BlockStatementPlaceholder(this);
}
public VariableInitializer ToVariable()
{
return new VariablePlaceholder(this);
}
}
}