Ejemplo n.º 1
0
        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;
            }
        }
Ejemplo n.º 2
0
        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 !;
            }
        }
Ejemplo n.º 3
0
 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;
     }
 }