From f4b04a1b8cd882e25fee592c819650c9b7e8566b Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sun, 18 Aug 2024 14:44:15 -0400 Subject: Improved syntax for dollar-string literals --- typecheck.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'typecheck.c') diff --git a/typecheck.c b/typecheck.c index 3e7084c8..b79b903c 100644 --- a/typecheck.c +++ b/typecheck.c @@ -525,7 +525,14 @@ type_t *get_type(env_t *env, ast_t *ast) case TextLiteral: return TEXT_TYPE; case TextJoin: { const char *lang = Match(ast, TextJoin)->lang; - return lang ? Match(get_binding(env, lang)->type, TypeInfoType)->type : TEXT_TYPE; + if (lang) { + binding_t *b = get_binding(env, lang); + if (!b || b->type->tag != TypeInfoType || Match(b->type, TypeInfoType)->type->tag != TextType) + code_err(ast, "There is no text language called '%s'", lang); + return Match(get_binding(env, lang)->type, TypeInfoType)->type; + } else { + return TEXT_TYPE; + } } case Var: { auto var = Match(ast, Var); -- cgit v1.2.3