--- /dev/null
+// 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> ()
+ {
+ }
+}
--- /dev/null
+// 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
+ {
+ }
+}
//
method = DoCreateMethodHost (ec);
method.Define ();
+ method.PrepareEmit ();
}
bool is_static = (method.ModFlags & Modifiers.STATIC) != 0;
equals.Block = equals_block;
equals.Define ();
+ equals.PrepareEmit ();
Members.Add (equals);
//
hashcode_block.AddStatement (new Return (hash_variable, loc));
hashcode.Block = hashcode_top;
hashcode.Define ();
+ hashcode.PrepareEmit ();
Members.Add (hashcode);
//
tostring_block.AddStatement (new Return (string_concat, loc));
tostring.Block = tostring_block;
tostring.Define ();
+ tostring.PrepareEmit ();
Members.Add (tostring);
return true;
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;
members.Add (proxy_method);
proxy_method.Define ();
+ proxy_method.PrepareEmit ();
hoisted_base_call_proxies.Add (method, proxy_method);
}
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)
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);
}
if (IsPartialPart) {
- PartialContainer.UpdateTypeParameterConstraints (this);
+ PartialContainer.CurrentTypeParameters.UpdateConstraints (this);
}
return true;
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 ();
void SetIsUsed ();
}
+ public interface IMethodDefinition : IMemberDefinition
+ {
+ MethodBase Metadata { get; }
+ }
+
public interface IParametersMember : IInterfaceMemberSpec
{
AParametersCollection Parameters { get; }
if (!Parameters.IsEmpty) {
parameters.ResolveDefaultValues (this);
}
+
+ InvokeBuilder.PrepareEmit ();
+ if (BeginInvokeBuilder != null) {
+ BeginInvokeBuilder.PrepareEmit ();
+ EndInvokeBuilder.PrepareEmit ();
+ }
}
public override void Emit ()
d.CreateContainer ();
d.DefineContainer ();
d.Define ();
+ d.PrepareEmit ();
site.AddTypeContainer (d);
del_type = new TypeExpression (d.CurrentType, loc);
//
// 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)
{
// 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);
}
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;
}
}
+ 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];
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) {
}
}
- IMemberDefinition definition;
+ IMethodDefinition definition;
if (tparams != null) {
var gmd = new ImportedGenericMethodDefinition ((MethodInfo) mb, returnType, parameters, tparams, this);
foreach (var tp in gmd.TypeParameters) {
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;
{
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;
#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;
"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;
}
}
}
- public interface IGenericMethodDefinition : IMemberDefinition
+ public interface IGenericMethodDefinition : IMethodDefinition
{
TypeParameterSpec[] TypeParameters { get; }
int TypeParametersCount { get; }
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;
}
}
}
+ public new IMethodDefinition MemberDefinition {
+ get {
+ return (IMethodDefinition) definition;
+ }
+ }
+
public IGenericMethodDefinition GenericDefinition {
get {
return (IGenericMethodDefinition) definition;
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;
}
}
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;
}
}
+ 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);
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;
}
#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)
}
}
-#endregion
+ #endregion
public override void Accept (StructuralVisitor visitor)
{
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) {
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 ()
"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;
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
//
{
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;
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;
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);
}
}
protected override bool ResolveMemberType ()
{
if (CurrentTypeParameters != null) {
- MethodBuilder = Parent.TypeBuilder.DefineMethod (GetFullName (MemberName), flags);
CreateTypeParameters ();
}
}
}
- public class Constructor : MethodCore, IMethodData
+ public class Constructor : MethodCore, IMethodData, IMethodDefinition
{
public ConstructorBuilder ConstructorBuilder;
public ConstructorInitializer Initializer;
}
}
+
+ MethodBase IMethodDefinition.Metadata {
+ get {
+ return ConstructorBuilder;
+ }
+ }
+
//
// Returns true if this is a default constructor
//
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);
//
public class MethodData
{
-#if !STATIC
- static FieldInfo methodbuilder_attrs_field;
-#endif
-
public readonly IMethodData method;
//
protected TypeSpec declaring_type;
protected MethodSpec parent_method;
SourceMethodBuilder debug_builder;
+ string full_name;
MethodBuilder builder;
public MethodBuilder MethodBuilder {
}
}
+ public string MetadataName {
+ get {
+ return full_name;
+ }
+ }
+
public MethodData (InterfaceMemberBase member,
Modifiers modifiers, MethodAttributes flags, IMethodData method)
{
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;
}
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;
}
//
//
public void Emit (TypeDefinition parent)
{
+ DefineOverride (parent);
+
var mc = (IMemberContext) method;
method.ParameterInfo.ApplyAttributes (mc, MethodBuilder);
// 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;
}
}
+ MethodBase IMethodDefinition.Metadata {
+ get {
+ return method_data.MethodBuilder;
+ }
+ }
+
public abstract ParametersCompiled ParameterInfo { get ; }
public abstract TypeSpec ReturnType { get; }
{
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;
}
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;
}
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 {
}
storey.Define ();
+ storey.PrepareEmit ();
storey.Parent.PartialContainer.AddCompilerGeneratedClass (storey);
}
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
--- /dev/null
+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
</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>
<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>
<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>
<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>
</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" />
</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" />
</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
</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" />
<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" />
<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" />
<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" />
<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" />
<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
</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" />
<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" />
<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
</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
<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>
</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" />
<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
<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" />
<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" />
<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" />
<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" />
<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
</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>
</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 />
</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" />
<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" />
</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" />
</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" />
</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" />
</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" />
<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
</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" />
<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" />
</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
</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>
<entry il="0x2a" row="11" col="2" file_ref="1" hidden="false" />
<entry il="0x2b" row="12" col="3" file_ref="1" hidden="false" />
</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
<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" />
<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" />
<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" />
</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" />
</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" />
</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" />
</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 />
<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>
<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 />
</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" />
<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 />
</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" />
<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" />
<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" />
<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" />
</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" />
<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" />
</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" />
</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" />
<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
</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>