protected override TypeSlim VisitSimple(SimpleTypeSlim type) { if (type == SlimType) { return(TypeSlim.Array(type)); } else { return(base.VisitSimple(type)); } }
protected override TypeSlim VisitSimple(SimpleTypeSlim type) { if (type == SlimType) { return(TypeSlim.Simple(new AssemblySlim("Foo"), "Bar")); } else { return(base.VisitSimple(type)); } }
/// <summary> /// Extends unification for simple types to support unification of integers to enums. /// </summary> /// <param name="typeRich">The CLR type.</param> /// <param name="typeSlim">The slim type.</param> /// <returns>true if the unification was successful, false otherwise.</returns> protected override bool UnifySimple(Type typeRich, SimpleTypeSlim typeSlim) { var canUnify = base.UnifySimple(typeRich, typeSlim); if (!canUnify && typeRich.IsEnum) { var isUnderlying = base.UnifySimple(Enum.GetUnderlyingType(typeRich), typeSlim); return(isUnderlying); } return(canUnify); }
private TypeRef AddTypeSimple(SimpleTypeSlim type) { if (!_assemblies.TryGetValue(type.Assembly, out int asmIndex)) { asmIndex = _assemblies.Count; _assemblies[type.Assembly] = asmIndex; _assemblyDefs.Add(type.Assembly); } var index = _typeDefs.Count; _typeDefs.Add(new SimpleTypeDef(type.Name, asmIndex)); return(new SimpleTypeRef(index)); }
protected override System.Type VisitSimple(SimpleTypeSlim type) => GetCarriedType(type);