From 8b9804adc2c1b00b51c110298aafe6988ad94238 Mon Sep 17 00:00:00 2001 From: Folkert Date: Mon, 8 Mar 2021 21:14:47 +0100 Subject: [PATCH] generalize --- compiler/parse/src/module.rs | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/compiler/parse/src/module.rs b/compiler/parse/src/module.rs index 40a6dd1014..fdc9aede9d 100644 --- a/compiler/parse/src/module.rs +++ b/compiler/parse/src/module.rs @@ -406,7 +406,7 @@ fn provides_without_to_help<'a>() -> impl Parser< ), collection_e!( word1(b'[', EProvides::ListStart), - exposes_entry(), + exposes_entry(EProvides::Identifier), word1(b',', EProvides::ListEnd), word1(b']', EProvides::ListEnd), min_indent, @@ -416,9 +416,16 @@ fn provides_without_to_help<'a>() -> impl Parser< ) } -fn exposes_entry<'a>() -> impl Parser<'a, Located>, EProvides> { +fn exposes_entry<'a, F, E>( + to_expectation: F, +) -> impl Parser<'a, Located>, E> +where + F: Fn(crate::parser::Row, crate::parser::Col) -> E, + F: Copy, + E: 'a, +{ loc!(map!( - specialize(|_, r, c| EProvides::Identifier(r, c), unqualified_ident()), + specialize(|_, r, c| to_expectation(r, c), unqualified_ident()), ExposesEntry::Exposed )) }