diff --git a/C/eval.c b/C/eval.c index 38144c5b6..5eb1667ee 100644 --- a/C/eval.c +++ b/C/eval.c @@ -97,7 +97,6 @@ Eval(Term t USES_REGS) { if (IsVarTerm(t)) { - LOCAL_ArithError = TRUE; return Yap_ArithError(INSTANTIATION_ERROR,t,"in arithmetic"); } else if (IsNumTerm(t)) { return t; @@ -220,7 +219,7 @@ X is 2+3*4 static Int p_is( USES_REGS1 ) { /* X is Y */ - Term out = 0L; + Term out; yap_error_number err; Term t = Deref(ARG2); @@ -241,7 +240,7 @@ p_is( USES_REGS1 ) } } else { Yap_EvalError(err, ARG2, "X is Exp"); - return FALSE; + return FALSE; } } while (TRUE); return Yap_unify_constant(ARG1,out); diff --git a/C/stdpreds.c b/C/stdpreds.c index ad1169c52..dbc457297 100644 --- a/C/stdpreds.c +++ b/C/stdpreds.c @@ -606,22 +606,35 @@ p_univ( USES_REGS1 ) } if (IsNumTerm(twork)) { Term tt = TailOfTerm(t2); - if (IsVarTerm(tt) || tt != MkAtomTerm(AtomNil)) { + if (IsVarTerm(tt)) { + Yap_Error(INSTANTIATION_ERROR, tt, "(=..)/2"); + return (FALSE); + } + if ( tt != MkAtomTerm(AtomNil)) { Yap_Error(TYPE_ERROR_ATOMIC, twork, "(=..)/2"); return (FALSE); } return (Yap_unify_constant(ARG1, twork)); } if (!IsAtomTerm(twork)) { - Yap_Error(TYPE_ERROR_ATOMIC, twork, "(=..)/2"); - return (FALSE); + Term tt = TailOfTerm(t2); + if (IsVarTerm(tt)) { + Yap_Error(INSTANTIATION_ERROR, twork, "(=..)/2"); + return(FALSE); + } else if (tt == MkAtomTerm(AtomNil)) { + Yap_Error(TYPE_ERROR_ATOMIC, twork, "(=..)/2"); + return (FALSE); + } else { + Yap_Error(TYPE_ERROR_ATOM, twork, "(=..)/2"); + return (FALSE); + } } at = AtomOfTerm(twork); twork = TailOfTerm(t2); if (IsVarTerm(twork)) { Yap_Error(INSTANTIATION_ERROR, twork, "(=..)/2"); return(FALSE); - } else if (!IsPairTerm(twork)) { + } else if (!IsPairTerm(twork)) { if (twork != TermNil) { Yap_Error(TYPE_ERROR_LIST, ARG2, "(=..)/2"); return(FALSE);