2024-06-03 17:39:57 +03:00
|
|
|
|
using PascalABCCompiler.SyntaxTree;
|
|
|
|
|
|
|
|
|
|
|
|
namespace SyntaxVisitors.Async
|
|
|
|
|
|
{
|
|
|
|
|
|
internal class MainVisitor :BaseChangeVisitor
|
|
|
|
|
|
{
|
2024-06-12 16:14:38 +03:00
|
|
|
|
// Визитор, который проверяет, есть ли хоть
|
|
|
|
|
|
// один await в асинхронном методе
|
|
|
|
|
|
public static bool HasAwait = false;
|
2024-06-03 17:39:57 +03:00
|
|
|
|
public static MainVisitor New
|
|
|
|
|
|
{
|
|
|
|
|
|
get { return new MainVisitor(); }
|
|
|
|
|
|
}
|
|
|
|
|
|
public static void Accept(statement_list st)
|
|
|
|
|
|
{
|
|
|
|
|
|
New.ProcessNode(st);
|
|
|
|
|
|
}
|
2024-06-04 19:34:39 +03:00
|
|
|
|
public static void Accept(procedure_definition pd)
|
|
|
|
|
|
{
|
|
|
|
|
|
New.ProcessNode(pd);
|
|
|
|
|
|
}
|
2024-06-03 17:39:57 +03:00
|
|
|
|
public override void visit(await_node_statement ans)
|
|
|
|
|
|
{
|
2024-06-12 16:14:38 +03:00
|
|
|
|
HasAwait = true;
|
2024-06-03 17:39:57 +03:00
|
|
|
|
}
|
|
|
|
|
|
public override void visit(await_node aw)
|
|
|
|
|
|
{
|
2024-06-12 16:14:38 +03:00
|
|
|
|
HasAwait = true;
|
2024-06-03 17:39:57 +03:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
}
|