From 187f5d255574bb4cfe744cbccf10aec821d6ae6e Mon Sep 17 00:00:00 2001 From: Benjamin Peterson Date: Wed, 11 Aug 2010 14:15:55 -0500 Subject: [PATCH] don't allow ly:parser-parse-string to continue unless the parser is fresh --- lily/include/lily-lexer.hh | 1 + lily/lily-lexer.cc | 6 ++++++ lily/lily-parser-scheme.cc | 6 +++++- 3 files changed, 12 insertions(+), 1 deletion(-) diff --git a/lily/include/lily-lexer.hh b/lily/include/lily-lexer.hh index f2491864ea..a7d697d482 100644 --- a/lily/include/lily-lexer.hh +++ b/lily/include/lily-lexer.hh @@ -116,6 +116,7 @@ public: bool is_chord_state () const; bool is_lyric_state () const; bool is_figure_state () const; + bool is_clean () const; }; #endif /* MY_LILY_LEXER_HH */ diff --git a/lily/lily-lexer.cc b/lily/lily-lexer.cc index 5a34d60bbe..3b9a3882b1 100644 --- a/lily/lily-lexer.cc +++ b/lily/lily-lexer.cc @@ -391,3 +391,9 @@ Lily_lexer::print_smob (SCM s, SCM port, scm_print_state*) scm_puts (" >", port); return 1; } + +bool +Lily_lexer::is_clean () const +{ + return include_stack_.empty (); +} diff --git a/lily/lily-parser-scheme.cc b/lily/lily-parser-scheme.cc index 2b968b46c0..2f9a910ccf 100644 --- a/lily/lily-parser-scheme.cc +++ b/lily/lily-parser-scheme.cc @@ -200,7 +200,11 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string", Lily_parser *parser = unsmob_lily_parser (parser_smob); LY_ASSERT_TYPE (scm_is_string, ly_code, 2); - parser->parse_string (ly_scm2string (ly_code)); + if (!parser->lexer_->is_clean ()) + parser->parser_error (_ ("ly:parser-parse-string is only valid with a new parser." + " Use ly:parser-include-string instead.")); + else + parser->parse_string (ly_scm2string (ly_code)); return SCM_UNSPECIFIED; } -- 2.39.5