async fix
This commit is contained in:
parent
155d0a01ba
commit
7287a68805
|
|
@ -278,15 +278,21 @@ namespace SyntaxVisitors.Async
|
|||
{
|
||||
var fh = item.proc_header as function_header;
|
||||
s = fh.return_type.ToString();
|
||||
|
||||
// AddError нужно вместо SyntaxVisitorError
|
||||
if (s.StartsWith("Void") || s.StartsWith("Task"))
|
||||
if (s.Contains("."))
|
||||
{
|
||||
//BuilderType = "Async" + s + "MethodBuilder";
|
||||
}
|
||||
else
|
||||
throw new SyntaxVisitorError("Возвращаемым типом асинхронного метода должен быть void, Task, Task<T> или аналогичный тип, IAsyncEnumerable<T> или IAsyncEnumerator<T>",
|
||||
item.proc_header.source_context);
|
||||
s = s.Substring(s.LastIndexOf('.') + 1);
|
||||
}
|
||||
|
||||
|
||||
// AddError нужно вместо SyntaxVisitorError
|
||||
//if (s.StartsWith("Void") || s.StartsWith("Task"))
|
||||
//{
|
||||
// //BuilderType = "Async" + s + "MethodBuilder";
|
||||
//}
|
||||
//else
|
||||
if (!s.Contains("Task"))
|
||||
throw new SyntaxVisitorError("Возвращаемым типом асинхронного метода должен быть void, Task, Task<T> или аналогичный тип, IAsyncEnumerable<T> или IAsyncEnumerator<T>",
|
||||
item.proc_header.source_context);
|
||||
}
|
||||
if (s == "Void" || s == "Task")
|
||||
{
|
||||
|
|
|
|||
|
|
@ -52,6 +52,14 @@ namespace SyntaxVisitors
|
|||
{
|
||||
if (pd.proc_header.IsAsync)
|
||||
{
|
||||
MainVisitor.flag = false;
|
||||
MainVisitor.Accept(pd);
|
||||
if (!MainVisitor.flag)
|
||||
{
|
||||
pd.proc_header.IsAsync = false;
|
||||
IsAsync = false;
|
||||
return;
|
||||
}
|
||||
IsAsync = true;
|
||||
proc_def = pd;
|
||||
proc_def_List.Add(pd);
|
||||
|
|
@ -188,7 +196,11 @@ namespace SyntaxVisitors
|
|||
{
|
||||
var fh = p.proc_header as function_header;
|
||||
var s = fh.return_type.ToString();
|
||||
if (s.StartsWith("Task<"))
|
||||
if (s.Contains("."))
|
||||
{
|
||||
s = s.Substring(s.LastIndexOf('.') + 1);
|
||||
}
|
||||
if (s.StartsWith("Task"))
|
||||
{
|
||||
BuilderType = "AsyncTaskMethodBuilder" + s.Substring(4);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,6 +17,10 @@ namespace SyntaxVisitors.Async
|
|||
{
|
||||
New.ProcessNode(st);
|
||||
}
|
||||
public static void Accept(procedure_definition pd)
|
||||
{
|
||||
New.ProcessNode(pd);
|
||||
}
|
||||
public override void visit(await_node_statement ans)
|
||||
{
|
||||
flag = true;
|
||||
|
|
|
|||
Loading…
Reference in a new issue