Exemplo n.º 1
0
        public void TestStackAnalysis(Type aType, string aMethodName, Type[] aArgs)
        {
            if (aArgs is null)
            {
                aArgs = Array.Empty <Type>();
            }
            var method     = aType.GetMethod(aMethodName, 0, BindingFlags.Instance | BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static, null, aArgs, null);
            var methodBase = new _MethodInfo(method, 1, _MethodInfo.TypeEnum.Normal, null);

            var appAssembler = new AppAssembler(null, new VoidTextWriter(), "")
            {
                DebugMode = Cosmos.Build.Common.DebugMode.None
            };

            var ilReader = new ILReader();
            var opCodes  = ilReader.ProcessMethod(method);

            var mSequence = appAssembler.GenerateDebugSequencePoints(methodBase, Cosmos.Build.Common.DebugMode.None);

            var iMethod = new ILMethod(opCodes, mSequence);

            Assert.DoesNotThrow(() => iMethod.Analyse());
        }