From 53f5178f711c7795b0bffca0a0b835333c7c8df5 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Sat, 5 Apr 2025 10:51:07 -0400 Subject: [PATCH] Remove {} for empty sets --- docs/sets.md | 7 ++++--- src/compile.c | 4 ---- 2 files changed, 4 insertions(+), 7 deletions(-) diff --git a/docs/sets.md b/docs/sets.md index 740a37f..023547d 100644 --- a/docs/sets.md +++ b/docs/sets.md @@ -12,16 +12,17 @@ b := {20, 30} ## Syntax -Sets are written using `{}` curly braces with comma-separated items: +Sets are written using `{...}` curly braces with comma-separated items: ```tomo nums := {10, 20, 30} ``` -Empty sets must specify the item type explicitly: +Empty sets must specify the set type explicitly and use `{/}` for an empty set +(because `{}` is an empty table). ```tomo -empty : {Int} = {} +empty : {Int} = {/} ``` For type annotations, a set that holds items with type `T` is written as `{T}`. diff --git a/src/compile.c b/src/compile.c index 688901a..8658c05 100644 --- a/src/compile.c +++ b/src/compile.c @@ -2010,10 +2010,6 @@ CORD compile_to_type(env_t *env, ast_t *ast, type_t *t) return compile_typed_table(env, ast, t); } else if (t->tag == SetType && ast->tag == Set) { return compile_typed_set(env, ast, t); - } else if (t->tag == SetType && ast->tag == Table) { - auto table = Match(ast, Table); - if (!table->default_value && !table->fallback && !table->entries) - return compile_to_type(env, WrapAST(ast, Set), t); } type_t *actual = get_type(env, ast);