public DataTypeBuilder(TypeFactory factory, ITypeStore store, Platform platform) { this.store = store; this.factory = factory; this.unifier = new DataTypeBuilderUnifier(factory, store); this.platform = platform; }
public void BuildEquivalenceClassDataTypes(TypeFactory factory) { var utv = new UnionTypeVarsReplacer(this); foreach (TypeVariable tv in TypeVariables) { if (tv.OriginalDataType != null) tv.OriginalDataType.Accept(utv); } Unifier u = new DataTypeBuilderUnifier(factory, this); foreach (TypeVariable tv in TypeVariables) { DataType dt = tv.OriginalDataType; EquivalenceClass c = tv.Class; DataType dtOld = c.DataType; if (dtOld != null) dt = u.Unify(dt, dtOld); //else if (dt != null) // dt = dt.Clone(); // why clone??? c.DataType = dt; } }