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; } }
public DataTypeBuilder(TypeFactory factory, ITypeStore store, IPlatform platform) { this.store = store; this.factory = factory; this.unifier = new DataTypeBuilderUnifier(factory, store); this.platform = platform; }
public void BuildEquivalenceClassDataTypes(TypeFactory factory) { 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) !; if (tv.Class.ClassMembers.Count == 4) { tv.ToString(); } } else if (dt != null) { dt = dt.Clone(); // why clone??? } c.DataType = dt !; } }
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; } }