From: Han-Wen Nienhuys <hanwen@xs4all.nl>
Date: Wed, 10 Jan 2007 02:06:48 +0000 (+0100)
Subject: use scm_throw with ly-file-failed key for property check failures.
X-Git-Tag: release/2.11.11-1~29
X-Git-Url: https://git.donarmstrong.com/?a=commitdiff_plain;h=77861413e78d1b92b5b8acd2913d7aa8f93174bf;p=lilypond.git

use scm_throw with ly-file-failed key for property check failures.
---

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)