Implement partial generic methods
authorMarek Safar <marek.safar@gmail.com>
Sun, 7 Apr 2013 07:39:14 +0000 (09:39 +0200)
committerMarek Safar <marek.safar@gmail.com>
Sun, 7 Apr 2013 07:39:53 +0000 (09:39 +0200)
40 files changed:
mcs/errors/cs0761-2.cs [new file with mode: 0644]
mcs/errors/cs0761.cs [new file with mode: 0644]
mcs/mcs/anonymous.cs
mcs/mcs/class.cs
mcs/mcs/cs-parser.jay
mcs/mcs/decl.cs
mcs/mcs/delegate.cs
mcs/mcs/dynamic.cs
mcs/mcs/generic.cs
mcs/mcs/import.cs
mcs/mcs/membercache.cs
mcs/mcs/method.cs
mcs/mcs/property.cs
mcs/mcs/statement.cs
mcs/tests/gtest-partial-06.cs [new file with mode: 0644]
mcs/tests/test-debug-01-ref.xml
mcs/tests/test-debug-02-ref.xml
mcs/tests/test-debug-03-ref.xml
mcs/tests/test-debug-04-ref.xml
mcs/tests/test-debug-05-ref.xml
mcs/tests/test-debug-06-ref.xml
mcs/tests/test-debug-07-ref.xml
mcs/tests/test-debug-08-ref.xml
mcs/tests/test-debug-09-ref.xml
mcs/tests/test-debug-10-ref.xml
mcs/tests/test-debug-11-ref.xml
mcs/tests/test-debug-12-ref.xml
mcs/tests/test-debug-13-ref.xml
mcs/tests/test-debug-14-ref.xml
mcs/tests/test-debug-15-ref.xml
mcs/tests/test-debug-16-ref.xml
mcs/tests/test-debug-17-ref.xml
mcs/tests/test-debug-18-ref.xml
mcs/tests/test-debug-19-ref.xml
mcs/tests/test-debug-20-ref.xml
mcs/tests/test-debug-21-ref.xml
mcs/tests/test-debug-22-ref.xml
mcs/tests/test-debug-23-ref.xml
mcs/tests/test-debug-24-ref.xml
mcs/tests/test-debug-25-ref.xml

diff --git a/mcs/errors/cs0761-2.cs b/mcs/errors/cs0761-2.cs
new file mode 100644 (file)
index 0000000..09964af
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0761: Partial method declarations of `C.Foo<U>()' have inconsistent constraints for type parameter `U'
+// Line: 8
+
+partial class C
+{
+       partial void Foo<T> () where T : new ();
+       
+       partial void Foo<U> ()
+       {
+       }
+}
diff --git a/mcs/errors/cs0761.cs b/mcs/errors/cs0761.cs
new file mode 100644 (file)
index 0000000..72b2744
--- /dev/null
@@ -0,0 +1,11 @@
+// CS0761: Partial method declarations of `C.Foo<T>()' have inconsistent constraints for type parameter `T'
+// Line: 8
+
+partial class C
+{
+       partial void Foo<U> ();
+       
+       partial void Foo<T> () where T : class
+       {
+       }
+}
index 7ee0a4dac76970a7cfaa2e4f1d252611a741a5b5..85fa42058ca1994702bcf568b21ae44e09f196ea 100644 (file)
@@ -1738,6 +1738,7 @@ namespace Mono.CSharp {
                                //
                                method = DoCreateMethodHost (ec);
                                method.Define ();
+                               method.PrepareEmit ();
                        }
 
                        bool is_static = (method.ModFlags & Modifiers.STATIC) != 0;
@@ -2086,6 +2087,7 @@ namespace Mono.CSharp {
 
                        equals.Block = equals_block;
                        equals.Define ();
+                       equals.PrepareEmit ();
                        Members.Add (equals);
 
                        //
@@ -2140,6 +2142,7 @@ namespace Mono.CSharp {
                        hashcode_block.AddStatement (new Return (hash_variable, loc));
                        hashcode.Block = hashcode_top;
                        hashcode.Define ();
+                       hashcode.PrepareEmit ();
                        Members.Add (hashcode);
 
                        //
@@ -2150,6 +2153,7 @@ namespace Mono.CSharp {
                        tostring_block.AddStatement (new Return (string_concat, loc));
                        tostring.Block = tostring_block;
                        tostring.Define ();
+                       tostring.PrepareEmit ();
                        Members.Add (tostring);
 
                        return true;
index 75cc774b7310120ee9fc10ab35875370c1e56645..f33ddc37920805c9a4aa00b5b2e2d84882c180f3 100644 (file)
@@ -1259,8 +1259,10 @@ namespace Mono.CSharp
 
                                all_tp_builders = TypeBuilder.DefineGenericParameters (tparam_names);
 
-                               if (CurrentTypeParameters != null)
-                                       CurrentTypeParameters.Define (all_tp_builders, spec, CurrentTypeParametersStartIndex, this);
+                               if (CurrentTypeParameters != null) {
+                                       CurrentTypeParameters.Create (spec, CurrentTypeParametersStartIndex, this);
+                                       CurrentTypeParameters.Define (all_tp_builders);
+                               }
                        }
 
                        return true;
@@ -1421,6 +1423,7 @@ namespace Mono.CSharp
 
                                members.Add (proxy_method);
                                proxy_method.Define ();
+                               proxy_method.PrepareEmit ();
 
                                hoisted_base_call_proxies.Add (method, proxy_method);
                        }
@@ -1603,6 +1606,10 @@ namespace Mono.CSharp
                        foreach (var member in members) {
                                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)
@@ -1674,19 +1681,6 @@ namespace Mono.CSharp
                        current_type = null;
                }
 
-               void UpdateTypeParameterConstraints (TypeDefinition part)
-               {
-                       for (int i = 0; i < CurrentTypeParameters.Count; i++) {
-                               if (CurrentTypeParameters[i].AddPartialConstraints (part, part.MemberName.TypeParameters[i]))
-                                       continue;
-
-                               Report.SymbolRelatedToPreviousError (Location, "");
-                               Report.Error (265, part.Location,
-                                       "Partial declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
-                                       GetSignatureForError (), CurrentTypeParameters[i].GetSignatureForError ());
-                       }
-               }
-
                public override void RemoveContainer (TypeContainer cont)
                {
                        base.RemoveContainer (cont);
@@ -1711,7 +1705,7 @@ namespace Mono.CSharp
                        }
 
                        if (IsPartialPart) {
-                               PartialContainer.UpdateTypeParameterConstraints (this);
+                               PartialContainer.CurrentTypeParameters.UpdateConstraints (this);
                        }
 
                        return true;
index ae0077c39f1854862e3836df2bec378a3be8043e..9d2d8db7fe06d0a66b29e5b73d28a610f182ef69 100644 (file)
@@ -1344,8 +1344,8 @@ method_header
 
                async_block = (method.ModFlags & Modifiers.ASYNC) != 0;
 
-               if ($11 != null)
-                       method.SetConstraints ((List<Constraints>) $11);
+               if ($12 != null)
+                       method.SetConstraints ((List<Constraints>) $12);
 
                if (doc_support)
                        method.DocComment = Lexer.consume_doc_comment ();
index 3760ed8cfb6a79cdf9a89058ad6543c867da285d..e7f27aa7d626a32151675707335df0dc6312ff5f 100644 (file)
@@ -1275,6 +1275,11 @@ namespace Mono.CSharp {
                void SetIsUsed ();
        }
 
+       public interface IMethodDefinition : IMemberDefinition
+       {
+               MethodBase Metadata { get; }
+       }
+
        public interface IParametersMember : IInterfaceMemberSpec
        {
                AParametersCollection Parameters { get; }
index ddbbd08812ca8bcb0dc4c5c1ff3b8106d7ac8f54..13a2a4c7bcf971abd38c1b322d7cf01d890b441c 100644 (file)
@@ -297,6 +297,12 @@ namespace Mono.CSharp {
                        if (!Parameters.IsEmpty) {
                                parameters.ResolveDefaultValues (this);
                        }
+
+                       InvokeBuilder.PrepareEmit ();
+                       if (BeginInvokeBuilder != null) {
+                               BeginInvokeBuilder.PrepareEmit ();
+                               EndInvokeBuilder.PrepareEmit ();
+                       }
                }
 
                public override void Emit ()
index b9d6967dccf4094664ac99cf755867e05638ee41..0246c43a1b67fa9cba25972b19e283fd7558a5b2 100644 (file)
@@ -447,6 +447,7 @@ namespace Mono.CSharp
                                d.CreateContainer ();
                                d.DefineContainer ();
                                d.Define ();
+                               d.PrepareEmit ();
 
                                site.AddTypeContainer (d);
                                del_type = new TypeExpression (d.CurrentType, loc);
index e88c616dd218b40a7679dd76a63be910bbd37bfe..3e8d32f8d5f492e46ed0f1e07bccf8329066d4fb 100644 (file)
@@ -489,7 +489,7 @@ namespace Mono.CSharp {
                //
                // If partial type parameters constraints are not null and we don't
                // already have constraints they become our constraints. If we already
-               // have constraints, we must check that they're the same.
+               // have constraints, we must check that they're same.
                //
                public bool AddPartialConstraints (TypeDefinition part, TypeParameter tp)
                {
@@ -545,15 +545,19 @@ namespace Mono.CSharp {
                // with SRE (by calling `DefineGenericParameters()' on the TypeBuilder /
                // MethodBuilder).
                //
-               public void Define (GenericTypeParameterBuilder type, TypeSpec declaringType, TypeContainer parent)
+               public void Create (TypeSpec declaringType, TypeContainer parent)
                {
                        if (builder != null)
                                throw new InternalErrorException ();
 
                        // Needed to get compiler reference
                        this.Parent = parent;
-                       this.builder = type;
                        spec.DeclaringType = declaringType;
+               }
+
+               public void Define (GenericTypeParameterBuilder type)
+               {
+                       this.builder = type;
                        spec.SetMetaInfo (type);
                }
 
@@ -2175,13 +2179,13 @@ namespace Mono.CSharp {
                        names.AddRange (tparams.names);
                }
 
-               public void Define (GenericTypeParameterBuilder[] buiders, TypeSpec declaringType, int parentOffset, TypeContainer parent)
+               public void Create (TypeSpec declaringType, int parentOffset, TypeContainer parent)
                {
                        types = new TypeParameterSpec[Count];
                        for (int i = 0; i < types.Length; ++i) {
                                var tp = names[i];
 
-                               tp.Define (buiders[i + parentOffset], declaringType, parent);
+                               tp.Create (declaringType, parent);
                                types[i] = tp.Type;
                                types[i].DeclaredPosition = i + parentOffset;
 
@@ -2191,6 +2195,14 @@ namespace Mono.CSharp {
                        }
                }
 
+               public void Define (GenericTypeParameterBuilder[] builders)
+               {
+                       for (int i = 0; i < types.Length; ++i) {
+                               var tp = names[i];
+                               tp.Define (builders [types [i].DeclaredPosition]);
+                       }
+               }
+
                public TypeParameter this[int index] {
                        get {
                                return names [index];
@@ -2230,6 +2242,44 @@ namespace Mono.CSharp {
                        return sb.ToString ();
                }
 
+
+               public void CheckPartialConstraints (Method part)
+               {
+                       var partTypeParameters = part.CurrentTypeParameters;
+
+                       for (int i = 0; i < Count; i++) {
+                               var tp_a = names[i];
+                               var tp_b = partTypeParameters [i];
+                               if (tp_a.Constraints == null) {
+                                       if (tp_b.Constraints == null)
+                                               continue;
+                               } else if (tp_b.Constraints != null && tp_a.Type.HasSameConstraintsDefinition (tp_b.Type)) {
+                                       continue;
+                               }
+
+                               part.Compiler.Report.SymbolRelatedToPreviousError (this[i].CurrentMemberDefinition.Location, "");
+                               part.Compiler.Report.Error (761, part.Location,
+                                       "Partial method declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
+                                       part.GetSignatureForError (), partTypeParameters[i].GetSignatureForError ());
+                       }
+               }
+
+               public void UpdateConstraints (TypeDefinition part)
+               {
+                       var partTypeParameters = part.MemberName.TypeParameters;
+
+                       for (int i = 0; i < Count; i++) {
+                               var tp = names [i];
+                               if (tp.AddPartialConstraints (part, partTypeParameters [i]))
+                                       continue;
+
+                               part.Compiler.Report.SymbolRelatedToPreviousError (this[i].CurrentMemberDefinition);
+                               part.Compiler.Report.Error (265, part.Location,
+                                       "Partial declarations of `{0}' have inconsistent constraints for type parameter `{1}'",
+                                       part.GetSignatureForError (), tp.GetSignatureForError ());
+                       }
+               }
+
                public void VerifyClsCompliance ()
                {
                        foreach (var tp in names) {
index 28e323286a0918ddf7f966edbe34abc59852ebc7..35d32c1d11643fd948721584b4d95282174cf297 100644 (file)
@@ -420,7 +420,7 @@ namespace Mono.CSharp
                                }
                        }
 
-                       IMemberDefinition definition;
+                       IMethodDefinition definition;
                        if (tparams != null) {
                                var gmd = new ImportedGenericMethodDefinition ((MethodInfo) mb, returnType, parameters, tparams, this);
                                foreach (var tp in gmd.TypeParameters) {
@@ -429,10 +429,10 @@ namespace Mono.CSharp
 
                                definition = gmd;
                        } else {
-                               definition = new ImportedParameterMemberDefinition (mb, returnType, parameters, this);
+                               definition = new ImportedMethodDefinition (mb, returnType, parameters, this);
                        }
 
-                       MethodSpec ms = new MethodSpec (kind, declaringType, definition, returnType, mb, parameters, mod);
+                       MethodSpec ms = new MethodSpec (kind, declaringType, definition, returnType, parameters, mod);
                        if (tparams != null)
                                ms.IsGeneric = true;
 
@@ -1683,7 +1683,7 @@ namespace Mono.CSharp
        {
                readonly AParametersCollection parameters;
 
-               public ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+               protected ImportedParameterMemberDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
                        : base (provider, type, importer)
                {
                        this.parameters = parameters;
@@ -1706,7 +1706,21 @@ namespace Mono.CSharp
                #endregion
        }
 
-       class ImportedGenericMethodDefinition : ImportedParameterMemberDefinition, IGenericMethodDefinition
+       class ImportedMethodDefinition : ImportedParameterMemberDefinition, IMethodDefinition
+       {
+               public ImportedMethodDefinition (MethodBase provider, TypeSpec type, AParametersCollection parameters, MetadataImporter importer)
+                       : base (provider, type, parameters, importer)
+               {
+               }
+
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return (MethodBase) provider;
+                       }
+               }
+       }
+
+       class ImportedGenericMethodDefinition : ImportedMethodDefinition, IGenericMethodDefinition
        {
                readonly TypeParameterSpec[] tparams;
 
index cad910e01bc896b209a8c150e094a23a5513b660..de1ef82c7fd610f50f3cce042a8d9897e2bfeac8 100644 (file)
@@ -1445,9 +1445,12 @@ namespace Mono.CSharp {
                                                                        "A partial method declaration and partial method implementation must be both `static' or neither");
                                                        }
 
-                                                       Report.SymbolRelatedToPreviousError (ce);
-                                                       Report.Error (764, member.Location,
-                                                               "A partial method declaration and partial method implementation must be both `unsafe' or neither");
+                                                       if ((method_a.ModFlags & Modifiers.UNSAFE) != (method_b.ModFlags & Modifiers.UNSAFE)) {
+                                                               Report.SymbolRelatedToPreviousError (ce);
+                                                               Report.Error (764, member.Location,
+                                                                       "A partial method declaration and partial method implementation must be both `unsafe' or neither");
+                                                       }
+
                                                        return false;
                                                }
 
index 343670bd83c6a94185c86ac9cb31b0f17b871717..22f73d5cef7570a2234b427249c7e3fd85f4a37c 100644 (file)
@@ -188,7 +188,7 @@ namespace Mono.CSharp {
                }
        }
 
-       public interface IGenericMethodDefinition : IMemberDefinition
+       public interface IGenericMethodDefinition : IMethodDefinition
        {
                TypeParameterSpec[] TypeParameters { get; }
                int TypeParametersCount { get; }
@@ -198,18 +198,17 @@ namespace Mono.CSharp {
 
        public sealed class MethodSpec : MemberSpec, IParametersMember
        {
-               MethodBase metaInfo, inflatedMetaInfo;
+               MethodBase inflatedMetaInfo;
                AParametersCollection parameters;
                TypeSpec returnType;
 
                TypeSpec[] targs;
                TypeParameterSpec[] constraints;
 
-               public MethodSpec (MemberKind kind, TypeSpec declaringType, IMemberDefinition details, TypeSpec returnType,
-                       MethodBase info, AParametersCollection parameters, Modifiers modifiers)
+               public MethodSpec (MemberKind kind, TypeSpec declaringType, IMethodDefinition details, TypeSpec returnType,
+                       AParametersCollection parameters, Modifiers modifiers)
                        : base (kind, declaringType, details, modifiers)
                {
-                       this.metaInfo = info;
                        this.parameters = parameters;
                        this.returnType = returnType;
                }
@@ -237,6 +236,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public new IMethodDefinition MemberDefinition {
+                       get {
+                               return (IMethodDefinition) definition;
+                       }
+               }
+
                public IGenericMethodDefinition GenericDefinition {
                        get {
                                return (IGenericMethodDefinition) definition;
@@ -322,21 +327,21 @@ namespace Mono.CSharp {
 
                                        if (DeclaringType.IsTypeBuilder) {
                                                if (IsConstructor)
-                                                       inflatedMetaInfo = TypeBuilder.GetConstructor (dt_meta, (ConstructorInfo) metaInfo);
+                                                       inflatedMetaInfo = TypeBuilder.GetConstructor (dt_meta, (ConstructorInfo) MemberDefinition.Metadata);
                                                else
-                                                       inflatedMetaInfo = TypeBuilder.GetMethod (dt_meta, (MethodInfo) metaInfo);
+                                                       inflatedMetaInfo = TypeBuilder.GetMethod (dt_meta, (MethodInfo) MemberDefinition.Metadata);
                                        } else {
 #if STATIC
                                                // it should not be reached
                                                throw new NotImplementedException ();
 #else
-                                               inflatedMetaInfo = MethodInfo.GetMethodFromHandle (metaInfo.MethodHandle, dt_meta.TypeHandle);
+                                               inflatedMetaInfo = MethodInfo.GetMethodFromHandle (MemberDefinition.Metadata.MethodHandle, dt_meta.TypeHandle);
 #endif
                                        }
 
                                        state &= ~StateFlags.PendingMetaInflate;
                                } else {
-                                       inflatedMetaInfo = metaInfo;
+                                       inflatedMetaInfo = MemberDefinition.Metadata;
                                }
                        }
 
@@ -518,19 +523,10 @@ namespace Mono.CSharp {
 
                        return missing;                 
                }
-
-               public void SetMetaInfo (MethodInfo info)
-               {
-                       if (this.metaInfo != null)
-                               throw new InternalErrorException ("MetaInfo reset");
-
-                       this.metaInfo = info;
-               }
        }
 
-       public abstract class MethodOrOperator : MethodCore, IMethodData
+       public abstract class MethodOrOperator : MethodCore, IMethodData, IMethodDefinition
        {
-               public MethodBuilder MethodBuilder;
                ReturnParameter return_attributes;
                SecurityType declarative_security;
                protected MethodData MethodData;
@@ -583,6 +579,19 @@ namespace Mono.CSharp {
                        }
                }
 
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return MethodData.MethodBuilder;
+                       }
+               }
+
+               // TODO: Remove and use MethodData abstraction
+               public MethodBuilder MethodBuilder {
+                       get {
+                               return MethodData.MethodBuilder;
+                       }
+               }
+
                protected override bool CheckForDuplications ()
                {
                        return Parent.MemberCache.CheckExistingMembersOverloads (this, parameters);
@@ -609,41 +618,34 @@ namespace Mono.CSharp {
                        else
                                kind = MemberKind.Method;
 
+                       string explicit_name;
+
                        if (IsPartialDefinition) {
                                caching_flags &= ~Flags.Excluded_Undetected;
                                caching_flags |= Flags.Excluded;
 
                                // Add to member cache only when a partial method implementation has not been found yet
-                               if ((caching_flags & Flags.PartialDefinitionExists) == 0) {
-//                                     MethodBase mb = new PartialMethodDefinitionInfo (this);
+                               if ((caching_flags & Flags.PartialDefinitionExists) != 0)
+                                       return true;
 
-                                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, null, parameters, ModFlags);
-                                       if (MemberName.Arity > 0) {
-                                               spec.IsGeneric = true;
+                               if (IsExplicitImpl)
+                                       return true;
 
-                                               // TODO: Have to move DefineMethod after Define (ideally to Emit)
-                                               throw new NotImplementedException ("Generic partial methods");
-                                       }
+                               explicit_name = null;
+                       } else {
+                               MethodData = new MethodData (this, ModFlags, flags, this, base_method);
 
-                                       Parent.MemberCache.AddMember (spec);
-                               }
+                               if (!MethodData.Define (Parent.PartialContainer, GetFullName (MemberName)))
+                                       return false;
 
-                               return true;
+                               explicit_name = MethodData.MetadataName;
                        }
 
-                       MethodData = new MethodData (
-                               this, ModFlags, flags, this, MethodBuilder, base_method);
-
-                       if (!MethodData.Define (Parent.PartialContainer, GetFullName (MemberName)))
-                               return false;
-                                       
-                       MethodBuilder = MethodData.MethodBuilder;
-
-                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, MethodBuilder, parameters, ModFlags);
+                       spec = new MethodSpec (kind, Parent.Definition, this, ReturnType, parameters, ModFlags);
                        if (MemberName.Arity > 0)
                                spec.IsGeneric = true;
-                       
-                       Parent.MemberCache.AddMember (this, MethodBuilder.Name, spec);
+
+                       Parent.MemberCache.AddMember (this, explicit_name, spec);
 
                        return true;
                }
@@ -798,6 +800,33 @@ namespace Mono.CSharp {
 
                #endregion
 
+               public virtual void PrepareEmit ()
+               {
+                       var mb = MethodData.DefineMethodBuilder (Parent);
+
+                       if (CurrentTypeParameters != null) {
+                               string[] gnames = new string[CurrentTypeParameters.Count];
+                               for (int i = 0; i < gnames.Length; ++i) {
+                                       gnames[i] = CurrentTypeParameters[i].Name;
+                               }
+
+                               var gen_params = MethodBuilder.DefineGenericParameters (gnames);
+
+                               for (int i = 0; i < CurrentTypeParameters.Count; ++i) {
+                                       var tp = CurrentTypeParameters[i];
+
+                                       tp.Define (gen_params[i]);
+                               }
+                       }
+
+                       //
+                       // Generic method has been already defined to resolve method parameters
+                       // correctly when they use type parameters
+                       //
+                       mb.SetParameters (parameters.GetMetaInfo ());
+                       mb.SetReturnType (ReturnType.GetMetaInfo ());
+               }
+
                public override void WriteDebugSymbol (MonoSymbolFile file)
                {
                        if (MethodData != null)
@@ -844,7 +873,7 @@ namespace Mono.CSharp {
                        }
                }
 
-#endregion
+               #endregion
 
                public override void Accept (StructuralVisitor visitor)
                {
@@ -972,10 +1001,9 @@ namespace Mono.CSharp {
                void CreateTypeParameters ()
                {
                        var tparams = MemberName.TypeParameters;
-                       string[] snames = new string[MemberName.Arity];
                        var parent_tparams = Parent.TypeParametersAll;
 
-                       for (int i = 0; i < snames.Length; i++) {
+                       for (int i = 0; i < MemberName.Arity; i++) {
                                string type_argument_name = tparams[i].MemberName.Name;
 
                                if (block == null) {
@@ -1000,12 +1028,9 @@ namespace Mono.CSharp {
                                                tparams[i].WarningParentNameConflict (tp);
                                        }
                                }
-
-                               snames[i] = type_argument_name;
                        }
 
-                       GenericTypeParameterBuilder[] gen_params = MethodBuilder.DefineGenericParameters (snames);
-                       tparams.Define (gen_params, null, 0, Parent);
+                       tparams.Create (null, 0, Parent);
                }
 
                protected virtual void DefineTypeParameters ()
@@ -1171,9 +1196,6 @@ namespace Mono.CSharp {
                                        "Introducing `Finalize' method can interfere with destructor invocation. Did you intend to declare a destructor?");
                        }
 
-                       if (partialMethodImplementation != null && IsPartialDefinition)
-                               MethodBuilder = partialMethodImplementation.MethodBuilder;
-
                        if (Compiler.Settings.StdLib && ReturnType.IsSpecialRuntimeType) {
                                Error1599 (Location, ReturnType, Report);
                                return false;
@@ -1272,6 +1294,22 @@ namespace Mono.CSharp {
                        return true;
                }
 
+               public override void PrepareEmit ()
+               {
+                       if (IsPartialDefinition) {
+                               //
+                               // Use partial method implementation builder for partial method declaration attributes
+                               //
+                               if (partialMethodImplementation != null) {
+                                       MethodData = partialMethodImplementation.MethodData;
+                               }
+
+                               return;
+                       }
+
+                       base.PrepareEmit ();
+               }
+
                //
                // Emits the code
                // 
@@ -1279,11 +1317,8 @@ namespace Mono.CSharp {
                {
                        try {
                                if (IsPartialDefinition) {
-                                       //
-                                       // Use partial method implementation builder for partial method declaration attributes
-                                       //
-                                       if (partialMethodImplementation != null) {
-                                               MethodBuilder = partialMethodImplementation.MethodBuilder;
+                                       if (partialMethodImplementation != null && CurrentTypeParameters != null) {
+                                               CurrentTypeParameters.CheckPartialConstraints (partialMethodImplementation);
                                        }
 
                                        return;
@@ -1297,11 +1332,15 @@ namespace Mono.CSharp {
                                if (CurrentTypeParameters != null) {
                                        for (int i = 0; i < CurrentTypeParameters.Count; ++i) {
                                                var tp = CurrentTypeParameters [i];
+
                                                tp.CheckGenericConstraints (false);
                                                tp.Emit ();
                                        }
                                }
 
+                               if (IsExplicitImpl)
+                                       MethodData.DefineOverride (Parent);
+
                                if (block != null && block.StateMachine is AsyncTaskStorey) {
                                        var psm = Module.PredefinedAttributes.AsyncStateMachine;
                                        
@@ -1312,10 +1351,8 @@ namespace Mono.CSharp {
                                        Module.PredefinedAttributes.Extension.EmitAttribute (MethodBuilder);
 
                                base.Emit ();
-                       } catch {
-                               Console.WriteLine ("Internal compiler error at {0}: exception caught while emitting {1}",
-                                                  Location, MethodBuilder);
-                               throw;
+                       } catch (Exception e) {
+                               throw new InternalErrorException (this, e);
                        }
                }
 
@@ -1335,7 +1372,6 @@ namespace Mono.CSharp {
                protected override bool ResolveMemberType ()
                {
                        if (CurrentTypeParameters != null) {
-                               MethodBuilder = Parent.TypeBuilder.DefineMethod (GetFullName (MemberName), flags);
                                CreateTypeParameters ();
                        }
 
@@ -1485,7 +1521,7 @@ namespace Mono.CSharp {
                }
        }
        
-       public class Constructor : MethodCore, IMethodData
+       public class Constructor : MethodCore, IMethodData, IMethodDefinition
        {
                public ConstructorBuilder ConstructorBuilder;
                public ConstructorInitializer Initializer;
@@ -1533,6 +1569,13 @@ namespace Mono.CSharp {
                    }
                }
 
+               
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return ConstructorBuilder;
+                       }
+               }
+
                //
                // Returns true if this is a default constructor
                //
@@ -1620,7 +1663,7 @@ namespace Mono.CSharp {
                                ca, CallingConventions,
                                parameters.GetMetaInfo ());
 
-                       spec = new MethodSpec (MemberKind.Constructor, Parent.Definition, this, Compiler.BuiltinTypes.Void, ConstructorBuilder, parameters, ModFlags);
+                       spec = new MethodSpec (MemberKind.Constructor, Parent.Definition, this, Compiler.BuiltinTypes.Void, parameters, ModFlags);
                        
                        Parent.MemberCache.AddMember (spec);
                        
@@ -1828,10 +1871,6 @@ namespace Mono.CSharp {
        //
        public class MethodData
        {
-#if !STATIC
-               static FieldInfo methodbuilder_attrs_field;
-#endif
-
                public readonly IMethodData method;
 
                //
@@ -1848,6 +1887,7 @@ namespace Mono.CSharp {
                protected TypeSpec declaring_type;
                protected MethodSpec parent_method;
                SourceMethodBuilder debug_builder;
+               string full_name;
 
                MethodBuilder builder;
                public MethodBuilder MethodBuilder {
@@ -1862,6 +1902,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               public string MetadataName {
+                       get {
+                               return full_name;
+                       }
+               }
+
                public MethodData (InterfaceMemberBase member,
                                   Modifiers modifiers, MethodAttributes flags, IMethodData method)
                {
@@ -1874,11 +1920,10 @@ namespace Mono.CSharp {
 
                public MethodData (InterfaceMemberBase member,
                                   Modifiers modifiers, MethodAttributes flags, 
-                                  IMethodData method, MethodBuilder builder,
+                                  IMethodData method,
                                   MethodSpec parent_method)
                        : this (member, modifiers, flags, method)
                {
-                       this.builder = builder;
                        this.parent_method = parent_method;
                }
 
@@ -2033,58 +2078,45 @@ namespace Mono.CSharp {
                                        method_full_name = implementing.MemberDefinition.Name;
                        }
 
-                       DefineMethodBuilder (container, method_full_name, method.ParameterInfo);
+                       full_name = method_full_name;
+                       declaring_type = container.Definition;
 
-                       if (builder == null)
-                               return false;
+                       return true;
+               }
 
-//                     if (container.CurrentType != null)
-//                             declaring_type = container.CurrentType;
-//                     else
-                               declaring_type = container.Definition;
+               public void DefineOverride (TypeDefinition container)
+               {
+                       if (implementing == null)
+                               return;
 
-                       if (implementing != null && member.IsExplicitImpl) {
-                               container.TypeBuilder.DefineMethodOverride (builder, (MethodInfo) implementing.GetMetaInfo ());
-                       }
+                       if (!member.IsExplicitImpl)
+                               return;
 
-                       return true;
+                       container.TypeBuilder.DefineMethodOverride (builder, (MethodInfo) implementing.GetMetaInfo ());
                }
 
-
-               /// <summary>
-               /// Create the MethodBuilder for the method 
-               /// </summary>
-               void DefineMethodBuilder (TypeDefinition container, string method_name, ParametersCompiled param)
+               //
+               // Creates partial MethodBuilder for the method when has generic parameters used
+               // as arguments or return type
+               //
+               public MethodBuilder DefineMethodBuilder (TypeDefinition container)
                {
-                       var return_type = method.ReturnType.GetMetaInfo ();
-                       var p_types = param.GetMetaInfo ();
+                       if (builder != null)
+                               throw new InternalErrorException ();
 
-                       if (builder == null) {
-                               builder = container.TypeBuilder.DefineMethod (
-                                       method_name, flags, method.CallingConventions,
-                                       return_type, p_types);
-                               return;
-                       }
+                       builder = container.TypeBuilder.DefineMethod (full_name, flags, method.CallingConventions);
+                       return builder;
+               }
 
-                       //
-                       // Generic method has been already defined to resolve method parameters
-                       // correctly when they use type parameters
-                       //
-                       builder.SetParameters (p_types);
-                       builder.SetReturnType (return_type);
-                       if (builder.Attributes != flags) {
-#if STATIC
-                               builder.__SetAttributes (flags);
-#else
-                               try {
-                                       if (methodbuilder_attrs_field == null)
-                                               methodbuilder_attrs_field = typeof (MethodBuilder).GetField ("attrs", BindingFlags.NonPublic | BindingFlags.Instance);
-                                       methodbuilder_attrs_field.SetValue (builder, flags);
-                               } catch {
-                                       container.Compiler.Report.RuntimeMissingSupport (method.Location, "Generic method MethodAttributes");
-                               }
-#endif
-                       }
+               //
+               // Creates full MethodBuilder for the method 
+               //
+               public MethodBuilder DefineMethodBuilder (TypeDefinition container, ParametersCompiled param)
+               {
+                       DefineMethodBuilder (container);
+                       builder.SetReturnType (method.ReturnType.GetMetaInfo ());
+                       builder.SetParameters (param.GetMetaInfo ());
+                       return builder;
                }
 
                //
@@ -2092,6 +2124,8 @@ namespace Mono.CSharp {
                // 
                public void Emit (TypeDefinition parent)
                {
+                       DefineOverride (parent);
+
                        var mc = (IMemberContext) method;
 
                        method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
@@ -2226,7 +2260,7 @@ namespace Mono.CSharp {
 
        // Ooouh Martin, templates are missing here.
        // When it will be possible move here a lot of child code and template method type.
-       public abstract class AbstractPropertyEventMethod : MemberCore, IMethodData {
+       public abstract class AbstractPropertyEventMethod : MemberCore, IMethodData, IMethodDefinition {
                protected MethodData method_data;
                protected ToplevelBlock block;
                protected SecurityType declarative_security;
@@ -2292,6 +2326,12 @@ namespace Mono.CSharp {
                        }
                }
 
+               MethodBase IMethodDefinition.Metadata {
+                       get {
+                               return method_data.MethodBuilder;
+                       }
+               }
+
                public abstract ParametersCompiled ParameterInfo { get ; }
                public abstract TypeSpec ReturnType { get; }
 
index 325b8f118f4bab61e4995812fa54f66a22821e3f..327c58c60839155d452ed05d7e118e659f1c8372 100644 (file)
@@ -201,14 +201,14 @@ namespace Mono.CSharp
                        {
                                base.Define (parent);
 
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, null, ParameterInfo, ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, ModFlags);
 
                                method_data = new MethodData (method, ModFlags, flags, this);
 
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
-                               Spec.SetMetaInfo (method_data.MethodBuilder);
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
 
                                return method_data.MethodBuilder;
                        }
@@ -268,14 +268,14 @@ namespace Mono.CSharp
                                
                                base.Define (parent);
 
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, null, ParameterInfo, ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, ModFlags);
 
                                method_data = new MethodData (method, ModFlags, flags, this);
 
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
-                               Spec.SetMetaInfo (method_data.MethodBuilder);
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
 
                                return method_data.MethodBuilder;
                        }
@@ -1198,15 +1198,15 @@ namespace Mono.CSharp
                                if (!method_data.Define (parent.PartialContainer, method.GetFullName (MemberName)))
                                        return null;
 
+                               method_data.DefineMethodBuilder (parent.PartialContainer, ParameterInfo);
+
                                if (Compiler.Settings.WriteMetadataOnly)
                                        block = null;
 
-                               MethodBuilder mb = method_data.MethodBuilder;
-
-                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, mb, ParameterInfo, method.ModFlags);
+                               Spec = new MethodSpec (MemberKind.Method, parent.PartialContainer.Definition, this, ReturnType, ParameterInfo, method.ModFlags);
                                Spec.IsAccessor = true;
 
-                               return mb;
+                               return method_data.MethodBuilder;
                        }
 
                        public override TypeSpec ReturnType {
index adb291ca5e813b22de80ef654e133037935b268b..0d27014d5a10cd5fbfbc1e4b21fea5fc0e8b7de2 100644 (file)
@@ -2663,6 +2663,7 @@ namespace Mono.CSharp {
                        }
 
                        storey.Define ();
+                       storey.PrepareEmit ();
                        storey.Parent.PartialContainer.AddCompilerGeneratedClass (storey);
                }
 
@@ -4538,6 +4539,7 @@ namespace Mono.CSharp {
 
                        if (finally_host != null) {
                                finally_host.Define ();
+                               finally_host.PrepareEmit ();
                                finally_host.Emit ();
 
                                // Now it's safe to add, to close it properly and emit sequence points
diff --git a/mcs/tests/gtest-partial-06.cs b/mcs/tests/gtest-partial-06.cs
new file mode 100644 (file)
index 0000000..3dd2dd3
--- /dev/null
@@ -0,0 +1,23 @@
+partial class Test
+{
+       static partial void Foo<T> ();
+
+       static partial void Baz<T> ();
+
+       static partial void Baz<U> ()
+       {
+       }
+
+       static partial void Bar<T> (T t) where T : class;
+
+       static partial void Bar<U> (U u) where U : class
+       {
+       }
+
+       public static void Main ()
+       {
+               Foo<long> ();
+               Baz<string> ();
+               Bar<Test> (null);
+       }
+}
\ No newline at end of file
index 6d3f12c18465e91e3ac857f651372a7092170454..09f0c57ba8dd8117551385d6c8a6c9db84185e65 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="5" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="5" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 98ce07ad2ffb3c9745ff52129cb138ad52920c4e..b2fd331bf76dd8198ae9e3efd455e4ef2668f67d 100644 (file)
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="47" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="48" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="47" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="48" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 9cc8718343c79c8fee2075a6ab7ca452ea6eab0b..5c6423f005ce311fe8fa739ad772b214d534d9f2 100644 (file)
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 6216b888614ab0496c5dce0f94bd23444c6f07db..156d687a7db82e9ab3c33a6b9fcc5ee89779e0eb 100644 (file)
       <scopes />
     </method>
     <method token="0x6000004">
-      <sequencepoints>
-        <entry il="0x0" row="22" col="2" file_ref="2" hidden="false" />
-        <entry il="0x1" row="23" col="2" file_ref="2" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000005">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="22" col="2" file_ref="2" hidden="false" />
+        <entry il="0x1" row="23" col="2" file_ref="2" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 0114c98f11855dbc94234bde93caf5d466e4e437..78b7fcc3b6b8f4d48225aeda0f66715d07951c61 100644 (file)
@@ -6,6 +6,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
@@ -18,7 +23,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x9" row="55" col="3" file_ref="1" hidden="false" />
@@ -31,7 +36,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="59" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="60" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 9714fb693d75052d70df726075d3e98c3bc77c4f..925cb921f893b64548c58d7c491423d542ecf96c 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="3" file_ref="1" hidden="false" />
@@ -28,7 +33,7 @@
         <entry index="1" start="0xa" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="22" col="3" file_ref="1" hidden="false" />
@@ -47,7 +52,7 @@
         <entry index="1" start="0xa" end="0xc" />
       </scopes>
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="33" col="3" file_ref="1" hidden="false" />
@@ -71,7 +76,7 @@
         <entry index="2" start="0x14" end="0x19" />
       </scopes>
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="46" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="48" col="3" file_ref="1" hidden="false" />
@@ -86,7 +91,7 @@
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="56" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="58" col="3" file_ref="1" hidden="false" />
         <entry index="2" start="0x13" end="0x13" />
       </scopes>
     </method>
-    <method token="0x6000007">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index faccf800550c039fb658de3977c664a1346a30a2..15473e5f5821ddd55d5cb88adb0621524d6640d6 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
@@ -13,7 +18,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="9" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="10" col="3" file_ref="1" hidden="false" />
@@ -22,7 +27,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="14" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x3" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index c8083e9c1fd778b82e7ade18c0d734eea82e2f83..e7442c65a8bc9f73206a10df293e07174d40ea18 100644 (file)
@@ -5,25 +5,30 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="23" col="5" file_ref="1" hidden="false" />
       </sequencepoints>
         <entry index="1" start="0x0" end="0x2" />
       </scopes>
     </method>
-    <method token="0x6000005">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 42d40c79d4b0a8500bc0e9518232feb507a8198f..5e2b972cdc0500fb77220bb8d25bcc1800663503 100644 (file)
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints>
-        <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="12" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000004">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="12" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 925bc0314519928b24c1f8005eaf34ce06997c8d..4181816941a75c39217ec50e9ec9d9a3258856df 100644 (file)
@@ -5,15 +5,6 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
-        <entry il="0x7" row="6" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="10" col="7" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="4" file_ref="1" hidden="false" />
@@ -22,7 +13,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="14" col="7" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="20" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="21" col="3" file_ref="1" hidden="false" />
       </sequencepoints>
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000005">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000006">
+      <sequencepoints>
+        <entry il="0x0" row="4" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="5" col="3" file_ref="1" hidden="false" />
+        <entry il="0x7" row="6" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 9a0d0e0d940f14e1cf7600f48d57a1089cdd8521..5d0b5d1f2160c244ce54c149abc20b19282bf9bc 100644 (file)
       <scopes />
     </method>
     <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="2" file_ref="1" hidden="false" />
@@ -30,7 +35,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="24" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="25" col="10" file_ref="1" hidden="false" />
@@ -46,7 +51,7 @@
         <entry index="1" start="0xa" end="0xa" />
       </scopes>
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="31" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="32" col="10" file_ref="1" hidden="false" />
@@ -64,7 +69,7 @@
         <entry index="1" start="0x12" end="0x12" />
       </scopes>
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="38" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="39" col="10" file_ref="1" hidden="false" />
@@ -80,7 +85,7 @@
         <entry index="1" start="0x11" end="0x11" />
       </scopes>
     </method>
-    <method token="0x6000007">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="45" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="46" col="10" file_ref="1" hidden="false" />
         <entry index="1" start="0x8" end="0x12" />
       </scopes>
     </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="53" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="54" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0xe" end="0xe" />
       </scopes>
     </method>
-    <method token="0x6000009">
+    <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="60" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="61" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0xe" end="0x13" />
       </scopes>
     </method>
-    <method token="0x600000a">
+    <method token="0x600000b">
       <sequencepoints>
         <entry il="0x0" row="68" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="70" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x28" end="0x2d" />
       </scopes>
     </method>
-    <method token="0x600000b">
+    <method token="0x600000c">
       <sequencepoints>
         <entry il="0x0" row="88" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="89" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x2e" end="0x33" />
       </scopes>
     </method>
-    <method token="0x600000c">
+    <method token="0x600000d">
       <sequencepoints>
         <entry il="0x0" row="103" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="105" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0xb9" end="0xbe" />
       </scopes>
     </method>
-    <method token="0x600000d">
+    <method token="0x600000e">
       <sequencepoints>
         <entry il="0x0" row="127" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="129" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0x2c" end="0x3b" />
       </scopes>
     </method>
-    <method token="0x600000e">
+    <method token="0x600000f">
       <sequencepoints>
         <entry il="0x0" row="140" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="142" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x6" end="0x8" />
       </scopes>
     </method>
-    <method token="0x600000f">
+    <method token="0x6000010">
       <sequencepoints>
         <entry il="0x0" row="153" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="155" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0xf" end="0xf" />
       </scopes>
     </method>
-    <method token="0x6000010">
+    <method token="0x6000011">
       <sequencepoints>
         <entry il="0x0" row="165" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="167" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0x2" end="0x4" />
       </scopes>
     </method>
-    <method token="0x6000011">
+    <method token="0x6000012">
       <sequencepoints>
         <entry il="0x0" row="174" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="175" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0x3" end="0xd" />
       </scopes>
     </method>
-    <method token="0x6000012">
+    <method token="0x6000013">
       <sequencepoints>
         <entry il="0x0" row="182" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="183" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x19" end="0x19" />
       </scopes>
     </method>
-    <method token="0x6000013">
+    <method token="0x6000014">
       <sequencepoints>
         <entry il="0x0" row="192" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="193" col="3" file_ref="1" hidden="false" />
         <entry index="2" start="0x30" end="0x30" />
       </scopes>
     </method>
-    <method token="0x6000014">
+    <method token="0x6000015">
       <sequencepoints>
         <entry il="0x0" row="205" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="206" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x10" end="0x10" />
       </scopes>
     </method>
-    <method token="0x6000015">
+    <method token="0x6000016">
       <sequencepoints>
         <entry il="0x0" row="215" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="216" col="8" file_ref="1" hidden="false" />
         <entry index="3" start="0x1b" end="0x1b" />
       </scopes>
     </method>
-    <method token="0x6000016">
+    <method token="0x6000017">
       <sequencepoints>
         <entry il="0x0" row="230" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="231" col="8" file_ref="1" hidden="false" />
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000017">
+    <method token="0x6000018">
       <sequencepoints>
         <entry il="0x0" row="237" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="238" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x10" end="0x10" />
       </scopes>
     </method>
-    <method token="0x6000018">
+    <method token="0x6000019">
       <sequencepoints>
         <entry il="0x0" row="246" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="247" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x17" end="0x17" />
       </scopes>
     </method>
-    <method token="0x6000019">
+    <method token="0x600001a">
       <sequencepoints>
         <entry il="0x0" row="256" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="257" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x17" end="0x17" />
       </scopes>
     </method>
-    <method token="0x600001a">
+    <method token="0x600001b">
       <sequencepoints>
         <entry il="0x0" row="266" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="267" col="3" file_ref="1" hidden="false" />
         <entry index="1" start="0x30" end="0x30" />
       </scopes>
     </method>
-    <method token="0x600001b">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 338ebab2372853b7ff26877d90ce9ec7b8b65b05..bc71011e0e5619b30eb6c5b1ec0f34dc7add039a 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 5125b202491c51b2c812f7b43be70070ac4e539d..46631e8e15c4f5124f50960f4691ca004d86524b 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
       <scopes />
     </method>
     <method token="0x6000008">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x21" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="13" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000009">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x600000a">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000010">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000011">
       <sequencepoints>
         <entry il="0x12" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x13" row="18" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
+    <method token="0x6000011">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x6000012">
       <sequencepoints />
       <locals />
index e550e8ecffac9a0aa5620e70bd55ba4f7f6aba56..e9d76ccc3802a75944049c24de92d7fed31e966f 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="3" file_ref="1" hidden="false" />
@@ -23,7 +28,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="18" col="3" file_ref="1" hidden="false" />
@@ -34,7 +39,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="26" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="27" col="3" file_ref="1" hidden="false" />
@@ -45,7 +50,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0xd" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0xe" row="35" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="13" col="3" file_ref="1" hidden="false" />
index 1e4c752197b5dcf6bfff8a108c935a96d7d69209..48404440a0df1051b5f348b13cb33e64e8223e6b 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
@@ -16,7 +21,7 @@
         <entry index="1" start="0x15" end="0x1b" />
       </scopes>
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index f34f901bff4f45c5560781da7f4c62934ee7cf74..6c9c492e40a4b920591dd347e71f0a742ed521d3 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="10" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="11" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="14" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="15" col="3" file_ref="1" hidden="false" />
@@ -25,7 +30,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="27" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="28" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index e71763c6366a5a1271b9ca889a7a0883275fa8e0..cf51ed208c79b7d0f899c2edcac1385ce9f16cd7 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
@@ -12,7 +17,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x2a" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x2b" row="12" col="3" file_ref="1" hidden="false" />
@@ -24,7 +29,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index d1386aff5e20e5c7ffa4b87bba2624da6c0429fa..7961bca8a067fb15475cddf89c9f191b9978e31d 100644 (file)
       <scopes />
     </method>
     <method token="0x6000003">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="9" col="2" file_ref="1" hidden="false" />
@@ -22,7 +27,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="12" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="13" col="3" file_ref="1" hidden="false" />
@@ -31,7 +36,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="18" col="3" file_ref="1" hidden="false" />
@@ -45,7 +50,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="24" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="25" col="3" file_ref="1" hidden="false" />
@@ -57,7 +62,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000007">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="30" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="31" col="3" file_ref="1" hidden="false" />
@@ -73,7 +78,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="38" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="39" col="3" file_ref="1" hidden="false" />
       </locals>
       <scopes />
     </method>
-    <method token="0x6000009">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="40" col="38" file_ref="1" hidden="false" />
index 1d9a90dfbf848c5f67b0d182e0fdac61a44a12e7..9e557b6733fdffb4ad0f8e468057c9ace70a8047 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="17" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="29" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="30" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints />
       <locals />
index ac2dc762dc3c3c1b39c9b2f37c3122064c64b478..fd90d797f79a8640322ff8327e71b260146c0e14 100644 (file)
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints>
-        <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="18" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="17" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="18" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
index 3b9f00550830d4ec2287d50a18c92db5fb0e6298..a6af337137c7da45c8d30df948875f53239721e1 100644 (file)
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints>
-        <entry il="0x0" row="22" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="23" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000003">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="22" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="23" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>
       <scopes />
     </method>
     <method token="0x6000007">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x27" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x28" row="8" col="3" file_ref="1" hidden="false" />
         <entry index="0" start="0x42" end="0x5f" />
       </scopes>
     </method>
+    <method token="0x6000008">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x6000009">
       <sequencepoints />
       <locals />
index 2b4a8e44532320e5b24cb224c5fa62ae4877524b..75fe231b6a569b382719c9a5fc2a72be14ca9d3f 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="7" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="8" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="20" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="21" col="3" file_ref="1" hidden="false" />
@@ -31,7 +36,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="25" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="26" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x6000007">
       <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x600000b">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x600000c">
       <sequencepoints>
         <entry il="0x21" row="15" col="2" file_ref="1" hidden="false" />
         <entry il="0x22" row="16" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
+    <method token="0x600000c">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
     <method token="0x600000d">
       <sequencepoints />
       <locals />
index bb884fe89d1ab023d0be0002c954ef61f8601048..c1fba7edd1a4f91de7f0cd44349f810370f80b75 100644 (file)
@@ -5,6 +5,20 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints>
+        <entry il="0x0" row="39" col="7" file_ref="1" hidden="false" />
+        <entry il="0x1" row="40" col="4" file_ref="1" hidden="false" />
+        <entry il="0x8" row="41" col="3" file_ref="1" hidden="false" />
+      </sequencepoints>
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="8" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="9" col="3" file_ref="1" hidden="false" />
@@ -14,7 +28,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="13" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="14" col="3" file_ref="1" hidden="false" />
@@ -24,7 +38,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000003">
+    <method token="0x6000005">
       <sequencepoints>
         <entry il="0x0" row="18" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="19" col="3" file_ref="1" hidden="false" />
@@ -34,7 +48,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
+    <method token="0x6000006">
       <sequencepoints>
         <entry il="0x0" row="23" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="24" col="3" file_ref="1" hidden="false" />
@@ -47,7 +61,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000005">
+    <method token="0x6000007">
       <sequencepoints>
         <entry il="0x0" row="29" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="30" col="3" file_ref="1" hidden="false" />
@@ -56,7 +70,7 @@
       <locals />
       <scopes />
     </method>
-    <method token="0x6000006">
+    <method token="0x6000008">
       <sequencepoints>
         <entry il="0x0" row="34" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="35" col="3" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000007">
-      <sequencepoints>
-        <entry il="0x0" row="39" col="7" file_ref="1" hidden="false" />
-        <entry il="0x1" row="40" col="4" file_ref="1" hidden="false" />
-        <entry il="0x8" row="41" col="3" file_ref="1" hidden="false" />
-      </sequencepoints>
-      <locals />
-      <scopes />
-    </method>
-    <method token="0x6000008">
+    <method token="0x6000009">
       <sequencepoints>
         <entry il="0x0" row="45" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="46" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000009">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
     <method token="0x600000a">
       <sequencepoints>
         <entry il="0x0" row="24" col="27" file_ref="1" hidden="false" />
index b3de71ee9781e9ba57c1f506238b20be3ce13502..6a0622205d9f95b36a5e8672784ad22c9264032e 100644 (file)
@@ -5,6 +5,11 @@
   </files>
   <methods>
     <method token="0x6000001">
+      <sequencepoints />
+      <locals />
+      <scopes />
+    </method>
+    <method token="0x6000002">
       <sequencepoints>
         <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="7" col="3" file_ref="1" hidden="false" />
@@ -17,7 +22,7 @@
       </locals>
       <scopes />
     </method>
-    <method token="0x6000002">
+    <method token="0x6000003">
       <sequencepoints>
         <entry il="0x0" row="11" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="12" col="8" file_ref="1" hidden="false" />
@@ -35,7 +40,7 @@
         <entry index="1" start="0x9" end="0x9" />
       </scopes>
     </method>
-    <method token="0x6000003">
+    <method token="0x6000004">
       <sequencepoints>
         <entry il="0x0" row="16" col="2" file_ref="1" hidden="false" />
         <entry il="0x1" row="17" col="2" file_ref="1" hidden="false" />
       <locals />
       <scopes />
     </method>
-    <method token="0x6000004">
-      <sequencepoints />
-      <locals />
-      <scopes />
-    </method>
   </methods>
 </symbols>
\ No newline at end of file
index 28c1c5327ea5c0f9a858384f22d55e31eeba8575..de5ef91f9f2094bee8714cea9566aa4b688c6f44 100644 (file)
@@ -5,15 +5,15 @@
   </files>
   <methods>
     <method token="0x6000001">
-      <sequencepoints>
-        <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
-        <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
-      </sequencepoints>
+      <sequencepoints />
       <locals />
       <scopes />
     </method>
     <method token="0x6000002">
-      <sequencepoints />
+      <sequencepoints>
+        <entry il="0x0" row="6" col="2" file_ref="1" hidden="false" />
+        <entry il="0x1" row="7" col="2" file_ref="1" hidden="false" />
+      </sequencepoints>
       <locals />
       <scopes />
     </method>