Example #1
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
            {
                return(false);
            }

            if (pat.Type == ElaNodeType.ListLiteral)
            {
                var xs = (ElaListLiteral)pat;

                if (xs.Values.Count != Values.Count)
                {
                    return(true);
                }

                for (var i = 0; i < Values.Count; i++)
                {
                    if (Values[i].CanFollow(xs.Values[i]))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(true);
        }
Example #2
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
            {
                return(false);
            }

            if (pat.Type == ElaNodeType.RecordLiteral)
            {
                var rec = (ElaRecordLiteral)pat;

                if (rec.Fields.Count != Fields.Count)
                {
                    return(true);
                }

                for (var i = 0; i < rec.Fields.Count; i++)
                {
                    if (Fields[i].CanFollow(rec.Fields[i]))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(true);
        }
Example #3
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
            {
                return(false);
            }

            if (exp.Type == ElaNodeType.Juxtaposition)
            {
                var jx = (ElaJuxtaposition)exp;

                if (jx.Parameters.Count != Parameters.Count || jx.Target.GetName() != Target.GetName())
                {
                    return(true);
                }

                for (var i = 0; i < Parameters.Count; i++)
                {
                    if (Parameters[i].CanFollow(jx.Parameters[i]))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(true);
        }
Example #4
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
            {
                return(false);
            }

            if (pat.Type == ElaNodeType.TupleLiteral)
            {
                var tuple = (ElaTupleLiteral)pat;

                if (tuple.Parameters.Count != Parameters.Count)
                {
                    return(true);
                }

                for (var i = 0; i < Parameters.Count; i++)
                {
                    if (Parameters[i].CanFollow(tuple.Parameters[i]))
                    {
                        return(true);
                    }
                }

                return(false);
            }

            return(true);
        }
Example #5
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
                return false;

            if (exp.Type == ElaNodeType.NameReference)
                return Name != exp.GetName();

            return true;
        }
Example #6
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
                return false;

            if (exp.Type == ElaNodeType.Primitive)
            {
                var lit = (ElaPrimitive)exp;
                return !Value.Equals(lit.Value);
            }

            return true;
        }
Example #7
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
            {
                return(false);
            }

            if (exp.Type == ElaNodeType.NameReference)
            {
                return(Name != exp.GetName());
            }

            return(true);
        }
Example #8
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
            {
                return(false);
            }

            if (exp.Type == ElaNodeType.Primitive)
            {
                var lit = (ElaPrimitive)exp;
                return(!Value.Equals(lit.Value));
            }

            return(true);
        }
Example #9
0
        internal override bool CanFollow(ElaExpression exp)
        {
            if (exp.IsIrrefutable())
                return false;

            if (exp.Type == ElaNodeType.Juxtaposition)
            {
                var jx = (ElaJuxtaposition)exp;

                if (jx.Parameters.Count != Parameters.Count || jx.Target.GetName() != Target.GetName())
                    return true;

                for (var i = 0; i < Parameters.Count; i++)
                    if (Parameters[i].CanFollow(jx.Parameters[i]))
                        return true;

                return false;
            }

            return true;
        }
Example #10
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
                return false;

            if (pat.Type == ElaNodeType.RecordLiteral)
            {
                var rec = (ElaRecordLiteral)pat;

                if (rec.Fields.Count != Fields.Count)
                    return true;

                for (var i = 0; i < rec.Fields.Count; i++)
                    if (Fields[i].CanFollow(rec.Fields[i]))
                        return true;

                return false;
            }

            return true;
        }
Example #11
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
                return false;

            if (pat.Type == ElaNodeType.TupleLiteral)
            {
                var tuple = (ElaTupleLiteral)pat;

                if (tuple.Parameters.Count != Parameters.Count)
                    return true;

                for (var i = 0; i < Parameters.Count; i++)
                    if (Parameters[i].CanFollow(tuple.Parameters[i]))
                        return true;

                return false;
            }

            return true;
        }
Example #12
0
        internal override bool CanFollow(ElaExpression pat)
        {
            if (pat.IsIrrefutable())
                return false;

            if (pat.Type == ElaNodeType.ListLiteral)
            {
                var xs = (ElaListLiteral)pat;

                if (xs.Values.Count != Values.Count)
                    return true;

                for (var i = 0; i < Values.Count; i++)
                    if (Values[i].CanFollow(xs.Values[i]))
                        return true;

                return false;
            }

            return true;
        }
Example #13
0
 internal virtual bool CanFollow(ElaExpression exp)
 {
     return(!exp.IsIrrefutable());
 }
Example #14
0
 internal virtual bool CanFollow(ElaExpression exp)
 {
     return !exp.IsIrrefutable();
 }