From 77861413e78d1b92b5b8acd2913d7aa8f93174bf Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Wed, 10 Jan 2007 03:06:48 +0100 Subject: [PATCH] use scm_throw with ly-file-failed key for property check failures. --- lily/grob-property.cc | 13 +++++-------- lily/lily-guile.cc | 3 ++- lily/music.cc | 3 +-- 3 files changed, 8 insertions(+), 11 deletions(-) diff --git a/lily/grob-property.cc b/lily/grob-property.cc index e8e74059ed..5e49d8e8ec 100644 --- a/lily/grob-property.cc +++ b/lily/grob-property.cc @@ -102,9 +102,9 @@ Grob::internal_set_value_on_alist (SCM *alist, SCM sym, SCM v) { if (!ly_is_procedure (v) && !is_simple_closure (v) - && v != ly_symbol2scm ("calculation-in-progress") - && !type_check_assignment (sym, v, ly_symbol2scm ("backend-type?"))) - abort (); + && v != ly_symbol2scm ("calculation-in-progress")) + type_check_assignment (sym, v, ly_symbol2scm ("backend-type?")); + check_interfaces_for_property (this, sym); } @@ -128,11 +128,8 @@ Grob::internal_get_property_data (SCM sym) const if (do_internal_type_checking_global && scm_is_pair (handle)) { SCM val = scm_cdr (handle); - if (!ly_is_procedure (val) - && !is_simple_closure (val) - && !type_check_assignment (sym, val, - ly_symbol2scm ("backend-type?"))) - abort (); + if (!ly_is_procedure (val) && !is_simple_closure (val)) + type_check_assignment (sym, val, ly_symbol2scm ("backend-type?")); check_interfaces_for_property (this, sym); } diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 726470acee..7c61e123da 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -460,7 +460,8 @@ type_check_assignment (SCM sym, SCM val, SCM type_symbol) /* Be strict when being anal :) */ if (do_internal_type_checking_global) - abort (); + scm_throw (ly_symbol2scm ("ly-file-failed"), scm_list_3 (ly_symbol2scm ("typecheck"), + sym, val)); warning (_ ("doing assignment anyway")); } diff --git a/lily/music.cc b/lily/music.cc index eaf750ede2..b22e243139 100644 --- a/lily/music.cc +++ b/lily/music.cc @@ -63,8 +63,7 @@ Music::copy_mutable_properties () const void Music::type_check_assignment (SCM s, SCM v) const { - if (!::type_check_assignment (s, v, ly_symbol2scm ("music-type?"))) - abort (); + ::type_check_assignment (s, v, ly_symbol2scm ("music-type?")); } Music::Music (Music const &m) -- 2.39.5