Exemplo n.º 1
0
        DmdType CreateTypeSig(IList <TSpec> tspecs, DmdType currentType)
        {
            foreach (var tspec in tspecs)
            {
                switch (tspec.etype)
                {
                case DMD.ElementType.SZArray:
                    currentType = currentType.MakeArrayType();
                    break;

                case DMD.ElementType.Array:
                    var arraySpec = (ArraySpec)tspec;
                    currentType = currentType.MakeArrayType(arraySpec.rank, arraySpec.sizes, arraySpec.lowerBounds);
                    break;

                case DMD.ElementType.GenericInst:
                    var ginstSpec = (GenericInstSpec)tspec;
                    currentType = currentType.MakeGenericType(ginstSpec.args.ToArray());
                    break;

                case DMD.ElementType.ByRef:
                    currentType = currentType.MakeByRefType();
                    break;

                case DMD.ElementType.Ptr:
                    currentType = currentType.MakePointerType();
                    break;

                default:
                    Verify(false, "Unknown TSpec");
                    break;
                }
            }
            return(currentType);
        }
Exemplo n.º 2
0
 protected AddressILValue(DebuggerRuntimeImpl runtime, DmdType locationType)
 {
     this.runtime = runtime;
     Type         = locationType.MakeByRefType();
 }