foreach (var member in members) {
var pbm = member as PropertyBasedMember;
- if (pbm != null)
+ if (pbm != null) {
pbm.PrepareEmit ();
+ continue;
+ }
- var pm = member as IParametersMember;
- if (pm != null) {
- var mc = member as MethodOrOperator;
- if (mc != null) {
- mc.PrepareEmit ();
- }
-
- var p = pm.Parameters;
- if (p.IsEmpty)
- continue;
-
- ((ParametersCompiled) p).ResolveDefaultValues (member);
+ var mc = member as MethodCore;
+ if (mc != null) {
+ mc.PrepareEmit ();
continue;
}
if ((caching_flags & Flags.CloseTypeCreated) != 0)
return;
- if (!Parameters.IsEmpty) {
- parameters.ResolveDefaultValues (this);
- }
-
InvokeBuilder.PrepareEmit ();
if (BeginInvokeBuilder != null) {
BeginInvokeBuilder.PrepareEmit ();
return s + parameters.GetSignatureForDocumentation ();
}
+ public virtual void PrepareEmit ()
+ {
+ parameters.ResolveDefaultValues (this);
+ }
+
public MethodSpec Spec {
get { return spec; }
}
#endregion
- public virtual void PrepareEmit ()
+ public override void PrepareEmit ()
{
+ base.PrepareEmit ();
+
var mb = MethodData.DefineMethodBuilder (Parent);
if (CurrentTypeParameters != null) {
return base.GetSignatureForDocumentation () + parameters.GetSignatureForDocumentation ();
}
+ public override void PrepareEmit ()
+ {
+ parameters.ResolveDefaultValues (this);
+
+ base.PrepareEmit ();
+ }
+
protected override bool VerifyClsCompliance ()
{
if (!base.VerifyClsCompliance ())
--- /dev/null
+using System;
+using System.Runtime.InteropServices;
+
+public static class MainClass
+{
+ public static void Main (string[] args)
+ {
+ }
+
+ public delegate Int32 FooDelegate ([In, Optional] int foo);
+}
\ No newline at end of file
</method>\r
</type>\r
</test>\r
+ <test name="gtest-optional-35.cs">\r
+ <type name="MainClass">\r
+ <method name="Void Main(System.String[])" attrs="150">\r
+ <size>2</size>\r
+ </method>\r
+ </type>\r
+ <type name="MainClass+FooDelegate">\r
+ <method name="Int32 Invoke(Int32)" attrs="454">\r
+ <size>0</size>\r
+ </method>\r
+ <method name="System.IAsyncResult BeginInvoke(Int32, System.AsyncCallback, System.Object)" attrs="454">\r
+ <size>0</size>\r
+ </method>\r
+ <method name="Int32 EndInvoke(System.IAsyncResult)" attrs="454">\r
+ <size>0</size>\r
+ </method>\r
+ <method name="Void .ctor(Object, IntPtr)" attrs="6278">\r
+ <size>0</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="gtest-partial-01.cs">\r
<type name="B`1[U]">\r
<method name="Void .ctor()" attrs="6278">\r
</method>\r
</type>\r
</test>\r
+ <test name="test-pragma-unrecognized.cs">\r
+ <type name="C">\r
+ <method name="Void Main()" attrs="150">\r
+ <size>2</size>\r
+ </method>\r
+ <method name="Void .ctor()" attrs="6278">\r
+ <size>7</size>\r
+ </method>\r
+ </type>\r
+ </test>\r
<test name="test-primary-ctor-01.cs">\r
<type name="Simple">\r
<method name="Int32 get_Property()" attrs="2177">\r
</method>\r
</type>\r
</test>\r
- <test name="test-pragma-unrecognized.cs">\r
- <type name="C">\r
- <method name="Void Main()" attrs="150">\r
- <size>2</size>\r
- </method>\r
- <method name="Void .ctor()" attrs="6278">\r
- <size>7</size>\r
- </method>\r
- </type>\r
- </test>\r
</tests>
\ No newline at end of file