예제 #1
0
 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));
예제 #5
0
 public static IEnumerable <TypeDefinition> GetNestedTypes(this IHasNestedDefinitions def)
 => def.NestedDefinitions.Select(d => d as TypeDefinition).Where(d => d != null);