X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=lily%2Flily-guile.cc;h=6896d43d7c2c9ed269d4fe6ff95d9bf5b2a7a686;hb=47db9a3883d726ca53e2133a3b2298f78dd6a32e;hp=27909a6bc2a43bccca2bcce48fdb029099f3eb6d;hpb=ffd278ab691a1ada9b0ff0f8fd7548ab791f1647;p=lilypond.git diff --git a/lily/lily-guile.cc b/lily/lily-guile.cc index 27909a6bc2..6896d43d7c 100644 --- a/lily/lily-guile.cc +++ b/lily/lily-guile.cc @@ -1,7 +1,7 @@ /* This file is part of LilyPond, the GNU music typesetter. - Copyright (C) 1998--2012 Jan Nieuwenhuizen + Copyright (C) 1998--2015 Jan Nieuwenhuizen Han-Wen Nienhuys LilyPond is free software: you can redistribute it and/or modify @@ -75,13 +75,13 @@ ly_symbol2string (SCM s) } string -robust_symbol2string (SCM sym, string str) +robust_symbol2string (SCM sym, const string &str) { return scm_is_symbol (sym) ? ly_symbol2string (sym) : str; } string -gulp_file_to_string (string fn, bool must_exist, int size) +gulp_file_to_string (const string &fn, bool must_exist, int size) { string s = global_path.find (fn); if (s == "") @@ -399,16 +399,6 @@ print_scm_val (SCM val) bool type_check_assignment (SCM sym, SCM val, SCM type_symbol) { - bool ok = true; - - /* - Always succeeds. - - - TODO: should remove #f from allowed vals? - */ - if (val == SCM_EOL || val == SCM_BOOL_F) - return ok; // If undefined, some internal function caused it...should never happen. assert (val != SCM_UNDEFINED); @@ -429,26 +419,34 @@ type_check_assignment (SCM sym, SCM val, SCM type_symbol) scm_throw (ly_symbol2scm ("ly-file-failed"), scm_list_3 (ly_symbol2scm ("typecheck"), sym, val)); - warning (_ ("doing assignment anyway")); + warning (_ ("skipping assignment")); + return false; } - else + + /* + Always succeeds. + + + TODO: should remove #f from allowed vals? + */ + if (val == SCM_EOL || val == SCM_BOOL_F) + return true; + + if (val != SCM_EOL + && ly_is_procedure (type) + && scm_call_1 (type, val) == SCM_BOOL_F) { - if (val != SCM_EOL - && ly_is_procedure (type) - && scm_call_1 (type, val) == SCM_BOOL_F) - { - ok = false; - SCM typefunc = ly_lily_module_constant ("type-name"); - SCM type_name = scm_call_1 (typefunc, type); - - warning (_f ("type check for `%s' failed; value `%s' must be of type `%s'", - ly_symbol2string (sym).c_str (), - print_scm_val (val), - ly_scm2string (type_name).c_str ())); - progress_indication ("\n"); - } + SCM typefunc = ly_lily_module_constant ("type-name"); + SCM type_name = scm_call_1 (typefunc, type); + + warning (_f ("type check for `%s' failed; value `%s' must be of type `%s'", + ly_symbol2string (sym).c_str (), + print_scm_val (val), + ly_scm2string (type_name).c_str ())); + progress_indication ("\n"); + return false; } - return ok; + return true; } /* some SCM abbrevs @@ -556,10 +554,10 @@ ly_floatvector2scm (vector v) } string -robust_scm2string (SCM k, string s) +robust_scm2string (SCM k, const string &s) { if (scm_is_string (k)) - s = ly_scm2string (k); + return ly_scm2string (k); return s; }