awaiter.IsAvailableForReuse = true;
- if (ResultType.Kind != MemberKind.Void) {
- var storey = (AsyncTaskStorey) machine_initializer.Storey;
-
- if (storey.HoistedReturn != null)
- storey.HoistedReturn.EmitAssign (ec);
- else
- ec.Emit (OpCodes.Pop);
- }
+ if (ResultType.Kind != MemberKind.Void)
+ ec.Emit (OpCodes.Pop);
}
void Error_WrongAwaiterPattern (ResolveContext rc, TypeSpec awaiter)
--- /dev/null
+using System;
+using System.Threading.Tasks;
+
+class X
+{
+ internal Task<int> ExecuteInternalAsync ()
+ {
+ return Task.FromResult (1);
+ }
+
+ public async Task<object> ExecuteReaderAsync ()
+ {
+ await ExecuteInternalAsync ();
+ return Task.FromResult (0);
+ }
+
+ public static int Main ()
+ {
+ var at = new X ().ExecuteReaderAsync ();
+ if (!at.Wait (1000))
+ return 1;
+
+ return 0;
+ }
+}
</method>\r
</type>\r
</test>\r
+ <test name="test-async-36.cs">\r
+ <type name="X">\r
+ <method name="System.Threading.Tasks.Task`1[System.Int32] ExecuteInternalAsync()" attrs="131">\r
+ <size>15</size>\r
+ </method>\r
+ <method name="System.Threading.Tasks.Task`1[System.Object] ExecuteReaderAsync()" attrs="134">\r
+ <size>41</size>\r
+ </method>\r
+ <method name="Int32 Main()" attrs="150">\r
+ <size>44</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ <type name="X+<ExecuteReaderAsync>c__async0">\r
+ <method name="Void MoveNext()" attrs="486">\r
+ <size>176</size>\r
+ </method>\r
+ <method name="Void SetStateMachine(IAsyncStateMachine)" attrs="486">\r
+ <size>13</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="test-cls-00.cs">\r
<type name="CLSCLass_6">\r
<method name="Void add_Disposed(Delegate)" attrs="2182">\r