@@ -384,9 +384,14 @@ mod parser {
386 pub fn parse(s: &str) -> Result<Snippet, &str> {
386 pub fn parse(s: &str) -> Result<Snippet, &str> {
387− snippet().parse(s).map(|(_input, elements)| elements)
387+ snippet().parse(s).and_then(|(remainder, snippet)| {
388+ if remainder.is_empty() {
390 #[cfg(test)]
395 #[cfg(test)]
391 mod test {
396 mod test {
392 use super::SnippetElement::*;
397 use super::SnippetElement::*;
@@ -414,6 +419,28 @@ mod parser {
423+ fn parse_unterminated_placeholder_error() {
424+ assert_eq!(Err("${1:)"), parse("match(${1:)"))
428+ fn parse_empty_placeholder() {
432+ Text("match(".into()),
440+ parse("match(${1:})")
418 fn parse_placeholders_in_statement() {
445 fn parse_placeholders_in_statement() {
419 assert_eq!(
446 assert_eq!(