// // Validity // internal virtual InvalidInfo AccumUsedTypeDefs(ValidityContext vctxt, MessageContext ctxt, Set <QualifiedTypeName> usedTypes) { var v = DefiningType.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (v != null) { return(v); } v = Signature.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (v != null) { return(v); } var assemblyDef = default(AssemblyDef); var typeDef = default(TypeDef); if (DefiningType.PrimTryResolve(vctxt.Global, out assemblyDef, out typeDef)) { if (!typeDef.HasMember(Signature)) { vctxt.Log (new InvalidMemberRef (ctxt, this, "Defining type does not contain definition for matching member")); return(new InvalidInfo(MessageContextBuilders.Member(vctxt.Global, this))); } } return(null); }
internal override void AccumUsedTypeAndMemberDefs(ValidityContext vctxt, AssemblyDef assemblyDef, TypeDef typeDef) { base.AccumUsedTypeAndMemberDefs(vctxt, assemblyDef, typeDef); var ctxt = MessageContextBuilders.Member(vctxt.Global, assemblyDef, typeDef, this); Invalid = FieldType.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); }
internal override InvalidInfo AccumUsedTypeDefs(ValidityContext vctxt, MessageContext ctxt, Set <QualifiedTypeName> usedTypes) { Fixup(vctxt.Global); return (Parameters.Select(p => p.AccumUsedTypeDefs(vctxt, ctxt, usedTypes)).FirstOrDefault (v => v != null) ?? Result.AccumUsedTypeDefs(vctxt, ctxt, usedTypes)); }
internal override void AccumUsedTypeAndMemberDefs(ValidityContext vctxt, AssemblyDef assemblyDef, TypeDef typeDef) { base.AccumUsedTypeAndMemberDefs(vctxt, assemblyDef, typeDef); var ctxt = MessageContextBuilders.Member(vctxt.Global, assemblyDef, typeDef, this); if (Get != null) { Invalid = Get.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (Invalid != null) { return; } } if (Set != null) { Invalid = Set.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (Invalid != null) { return; } } Invalid = FieldType.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); }
internal override void AccumUsedTypeAndMemberDefs(ValidityContext vctxt, AssemblyDef assemblyDef, TypeDef typeDef) { base.AccumUsedTypeAndMemberDefs(vctxt, assemblyDef, typeDef); var ctxt = MessageContextBuilders.Member(vctxt.Global, assemblyDef, typeDef, this); if (Add != null) { Invalid = Add.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (Invalid != null) { return; } } if (Remove != null) { Invalid = Remove.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); if (Invalid != null) { return; } } Invalid = HandlerType.AccumUsedTypeDefs(vctxt, ctxt, usedTypes); }
internal override InvalidInfo AccumUsedTypeDefs(ValidityContext vctxt, MessageContext ctxt, Set <QualifiedTypeName> usedTypes) { return(FieldType.AccumUsedTypeDefs(vctxt, ctxt, usedTypes)); }