public TypeDefinition(TypeTag tag, ulong id, IHasNestedDefinitions parent) { Trace.Assert(parent != null); Tag = tag; Id = id; IsGenerated = (parent as IDefinition).IsGenerated; DeclaringElement = parent; if (tag == TypeTag.Group) { ((TypeDefinition)parent).NestedGroups.Add(this); } else { parent.NestedDefinitions.Add(this); } }
public Constant CreateConstant(ulong id, IHasNestedDefinitions decl) => CreateId<Constant>(id, () => new Constant(id, decl));
public Annotation CreateAnnotation(ulong id, IHasNestedDefinitions decl) => CreateId<Annotation>(id, () => new Annotation(id, decl));
public TypeDefinition CreateTypeDef(ulong id, TypeTag tag, IHasNestedDefinitions decl) => CreateId<TypeDefinition>(id, () => new TypeDefinition(tag, id, decl));
public static IEnumerable <TypeDefinition> GetNestedTypes(this IHasNestedDefinitions def) => def.NestedDefinitions.Select(d => d as TypeDefinition).Where(d => d != null);