Merge pull request #948 from ermshiperete/bug-xamarin-2394
[mono.git] / mcs / class / corlib / System.Reflection.Emit / ConstructorBuilder.cs
index be418f97477056a0aa901f26ab24fe0c0d5451a6..aa0f78a235c58b0cf9daabb8c6167561f86a860d 100644 (file)
@@ -30,6 +30,7 @@
 // WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
 //
 
+#if !FULL_AOT_RUNTIME
 using System;
 using System.Reflection;
 using System.Reflection.Emit;
@@ -44,6 +45,7 @@ namespace System.Reflection.Emit {
        [ComVisible (true)]
        [ComDefaultInterface (typeof (_ConstructorBuilder))]
        [ClassInterface (ClassInterfaceType.None)]
+       [StructLayout (LayoutKind.Sequential)]
        public sealed class ConstructorBuilder : ConstructorInfo, _ConstructorBuilder {
        
 #pragma warning disable 169, 414
@@ -118,20 +120,20 @@ namespace System.Reflection.Emit {
                        return GetParametersInternal ();
                }
 
-               internal ParameterInfo [] GetParametersInternal ()
+               internal override ParameterInfo [] GetParametersInternal ()
                {
                        if (parameters == null)
-                               return new ParameterInfo [0];
+                               return EmptyArray<ParameterInfo>.Value;
 
                        ParameterInfo [] retval = new ParameterInfo [parameters.Length];
                        for (int i = 0; i < parameters.Length; i++)
-                               retval [i] = new ParameterInfo (pinfo == null ? null
+                               retval [i] = ParameterInfo.New (pinfo == null ? null
                                        : pinfo [i + 1], parameters [i], this, i + 1);
 
                        return retval;
                }
                
-               internal override int GetParameterCount ()
+               internal override int GetParametersCount ()
                {
                        if (parameters == null)
                                return 0;
@@ -230,7 +232,7 @@ namespace System.Reflection.Emit {
 
                public ParameterBuilder DefineParameter (int iSequence, ParameterAttributes attributes, string strParamName)
                {
-                       if (iSequence < 1 || iSequence > GetParameterCount ())
+                       if (iSequence < 1 || iSequence > GetParametersCount ())
                                throw new ArgumentOutOfRangeException ("iSequence");
                        if (type.is_created)
                                throw not_after_created ();
@@ -349,7 +351,7 @@ namespace System.Reflection.Emit {
                                throw new InvalidOperationException ("Method '" + Name + "' does not have a method body.");
                        }
                        if (ilgen != null)
-                               ilgen.label_fixup ();
+                               ilgen.label_fixup (this);
                }
                
                internal void GenerateDebugInfo (ISymbolWriter symbolWriter)
@@ -410,3 +412,4 @@ namespace System.Reflection.Emit {
                }
        }
 }
+#endif