public static IEnumerable <object[]> Equals_TestData() { ModuleBuilder module = Helpers.DynamicModule(); SignatureHelper helper1 = SignatureHelper.GetFieldSigHelper(module); SignatureHelper helper2 = SignatureHelper.GetFieldSigHelper(module); SignatureHelper helper3 = SignatureHelper.GetFieldSigHelper(module); helper3.AddArgument(typeof(string)); SignatureHelper helper4 = SignatureHelper.GetFieldSigHelper(module); helper4.AddArgument(typeof(string)); yield return(new object[] { helper1, helper2, true }); yield return(new object[] { helper3, helper1, false }); yield return(new object[] { helper3, helper4, true }); yield return(new object[] { helper1, null, false }); }
public void GetFieldSigHelperNormalModule() { SignatureHelper.GetFieldSigHelper(typeof(int).Module); }
public void SetLocalSymInfo(string name, int startOffset, int endOffset) { ModuleBuilder dynMod; SignatureHelper sigHelp; byte[] signature; byte[] mungedSig; int index; MethodBuilder?methodBuilder = m_methodBuilder as MethodBuilder; if (methodBuilder == null) { // it's a light code gen entity throw new NotSupportedException(); } dynMod = (ModuleBuilder)methodBuilder.Module; if (methodBuilder.IsTypeCreated()) { // cannot change method after its containing type has been created throw new InvalidOperationException(SR.InvalidOperation_TypeHasBeenCreated); } // set the name and range of offset for the local if (dynMod.GetSymWriter() == null) { // cannot set local name if not debug module throw new InvalidOperationException(SR.InvalidOperation_NotADebugModule); } sigHelp = SignatureHelper.GetFieldSigHelper(dynMod); sigHelp.AddArgument(m_localType); signature = sigHelp.InternalGetSignature(out int sigLength); // The symbol store doesn't want the calling convention on the // front of the signature, but InternalGetSignature returns // the callinging convention. So we strip it off. This is a // bit unfortunate, since it means that we need to allocate // yet another array of bytes... mungedSig = new byte[sigLength - 1]; Buffer.BlockCopy(signature, 1, mungedSig, 0, sigLength - 1); index = methodBuilder.GetILGenerator().m_ScopeTree.GetCurrentActiveScopeIndex(); if (index == -1) { // top level scope information is kept with methodBuilder methodBuilder.m_localSymInfo !.AddLocalSymInfo( name, mungedSig, m_localIndex, startOffset, endOffset ); } else { methodBuilder .GetILGenerator() .m_ScopeTree.AddLocalSymInfoToCurrentScope( name, mungedSig, m_localIndex, startOffset, endOffset ); } }
public void GetFieldSigHelperNullModule() { SignatureHelper.GetFieldSigHelper(null); }