diff --git a/org.metaborg.meta.lang.nabl/trans/generation/def-sites.str b/org.metaborg.meta.lang.nabl/trans/generation/def-sites.str index e890e5b10..8c6222a0b 100644 --- a/org.metaborg.meta.lang.nabl/trans/generation/def-sites.str +++ b/org.metaborg.meta.lang.nabl/trans/generation/def-sites.str @@ -51,14 +51,22 @@ rules , MATCH(CALL("sibl-uris__"), uri-svar) , MATCH(CALL("implicits__"), LIST(implicit*)) ] - ; ext* := def-clause* + ; ext* := def-clause* - to-external-rule(|pattern): - DefClause(_, _, _, term, _, DefScopes(scope*), _) -> EXTERNAL_DEF_RULE(pattern, cong) + to-external-rule(|pattern, implicit*): + (i, DefClause(kind, _, _, term, _, DefScopes(scope*), _)) -> EXTERNAL_DEF_RULE(pattern, seq) where repl* := , ALIAS_CALL)>)); nonempty> scope* - ; cong := pattern - + ; cong := pattern + where + Implicit() := kind + ; match* := [ Where(Assign(LIST(implicit*), Var("implicits__"))) ] + ; named := i + <+ match* := [] + ; named := term + where + seq := [match*, EXTERNAL_DEF_CALL(named), cong, Fail()] + to-def-cong(|pattern, scope*, nt-scope*): (o, clause) -> def-cong where @@ -169,8 +177,8 @@ overlays ] ) - EXTERNAL_DEF_CALL() = - Where(Assign(Var("def-uri__"), RootApp(CallNoArgs(SVar("nabl-uri"))))) - + EXTERNAL_DEF_CALL(named) = + Where(Assign(Var("def-uri__"), App(CallNoArgs(SVar("nabl-uri")), named))) + MATCH(s, v) = CALL("match", [s], [v])