Esempio n. 1
0
        public void TypeVariables()
        {
            var intrinsicSource =
                @".class private abstract sealed beforefieldinit specialname '<>c__TypeVariables'<T,U,V>
{
  .method public hidebysig specialname rtspecialname instance void .ctor() { ret }
}";
            ImmutableArray <byte> assemblyBytes;
            ImmutableArray <byte> pdbBytes;

            CommonTestBase.EmitILToArray(intrinsicSource, appendDefaultHeader: true, includePdb: false, assemblyBytes: out assemblyBytes, pdbBytes: out pdbBytes);
            var assembly       = ReflectionUtilities.Load(assemblyBytes);
            var reflectionType = assembly.GetType(ExpressionCompilerConstants.TypeVariablesClassName).MakeGenericType(new[] { typeof(object), typeof(object), typeof(object[]) });
            var value          = CreateDkmClrValue(value: null, type: reflectionType, valueFlags: DkmClrValueFlags.Synthetic);
            var evalResult     = FormatResult("typevars", "typevars", value, new DkmClrType((TypeImpl)reflectionType), MakeCustomTypeInfo(false, true, false, false, true));

            Verify(evalResult,
                   EvalResult("Type variables", "", "", null, DkmEvaluationResultFlags.Expandable | DkmEvaluationResultFlags.ReadOnly, DkmEvaluationResultCategory.Data));
            var children = GetChildren(evalResult);

            Verify(children,
                   EvalResult("T", "dynamic", "dynamic", null, DkmEvaluationResultFlags.ReadOnly, DkmEvaluationResultCategory.Data),
                   EvalResult("U", "object", "object", null, DkmEvaluationResultFlags.ReadOnly, DkmEvaluationResultCategory.Data),
                   EvalResult("V", "dynamic[]", "dynamic[]", null, DkmEvaluationResultFlags.ReadOnly, DkmEvaluationResultCategory.Data));
        }
        public void Member()
        {
            var source =
                @".field static assembly int32 s_val
.class public C
{
  .method public hidebysig specialname rtspecialname instance void .ctor() { ret }
  .method public instance int32* modopt([mscorlib]System.Runtime.CompilerServices.IsImplicitlyDereferenced) get_P()
  {
    ldsflda int32 s_val
    ret
  }
  .property instance int32* modopt([mscorlib]System.Runtime.CompilerServices.IsImplicitlyDereferenced) P()
  {
    .get instance int32* modopt([mscorlib]System.Runtime.CompilerServices.IsImplicitlyDereferenced) C::get_P()
  }
}";
            ImmutableArray <byte> assemblyBytes;
            ImmutableArray <byte> pdbBytes;

            CommonTestBase.EmitILToArray(source, appendDefaultHeader: true, includePdb: false, assemblyBytes: out assemblyBytes, pdbBytes: out pdbBytes);
            var assembly   = ReflectionUtilities.Load(assemblyBytes);
            var type       = assembly.GetType("C");
            var value      = CreateDkmClrValue(type.Instantiate(), type);
            var evalResult = FormatResult("o", value);

            Verify(evalResult,
                   EvalResult("o", "{C}", "C", "o", DkmEvaluationResultFlags.Expandable, DkmEvaluationResultCategory.Other));
            var children = GetChildren(evalResult);

            Verify(children,
                   EvalResult("P", "0", "int*", "o.P", DkmEvaluationResultFlags.None, DkmEvaluationResultCategory.Property));
        }
        internal static ModuleInstance GetModuleInstanceForIL(string ilSource)
        {
            ImmutableArray <byte> peBytes;
            ImmutableArray <byte> pdbBytes;

            CommonTestBase.EmitILToArray(ilSource, appendDefaultHeader: true, includePdb: true, assemblyBytes: out peBytes, pdbBytes: out pdbBytes);
            return(ModuleInstance.Create(peBytes, SymReaderFactory.CreateReader(pdbBytes), includeLocalSignatures: true));
        }