public void Resolve(CodeGen code_gen)
        {
            if (is_resolved)
            {
                return;
            }

            owner.Resolve(code_gen);

            if (owner.UseTypeSpec)
            {
                PEAPI.Type owner_ref = owner.PeapiType;
                code_gen.PEFile.AddFieldToTypeSpec(owner_ref, name,
                                                   type.PeapiType);
            }
            else
            {
                PEAPI.ClassRef owner_ref;
                owner_ref = (PEAPI.ClassRef)owner.PeapiType;
                type.Resolve(code_gen);
                peapi_field = owner_ref.AddField(name, type.PeapiType);
            }

            is_resolved = true;
        }
示例#2
0
        public void Resolve(CodeGen code_gen)
        {
            if (is_resolved)
            {
                return;
            }

            type_ref.Resolve(code_gen);

            type = new PEAPI.GenericTypeInst(type_ref.PeapiType, gen_args.Resolve(code_gen));

            is_resolved = true;
        }
示例#3
0
        public override void Resolve(CodeGen code_gen)
        {
            if (is_resolved)
            {
                return;
            }

            ExternTypeRef etr = extern_ref as ExternTypeRef;

            if (etr != null)
            {
                //This is a nested class, so resolve parent
                etr.Resolve(code_gen);
            }

            type = extern_ref.GetType(full_name, is_valuetype);
            type = Modify(code_gen, type);

            is_resolved = true;
        }