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); }
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); }
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); }
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); }
internal override bool CanFollow(ElaExpression exp) { if (exp.IsIrrefutable()) return false; if (exp.Type == ElaNodeType.NameReference) return Name != exp.GetName(); return true; }
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; }
internal override bool CanFollow(ElaExpression exp) { if (exp.IsIrrefutable()) { return(false); } if (exp.Type == ElaNodeType.NameReference) { return(Name != exp.GetName()); } return(true); }
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); }
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; }
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; }
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; }
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; }
internal virtual bool CanFollow(ElaExpression exp) { return(!exp.IsIrrefutable()); }
internal virtual bool CanFollow(ElaExpression exp) { return !exp.IsIrrefutable(); }