From acd1191fb06a51f70f553c1dc8b47cf245a1c913 Mon Sep 17 00:00:00 2001 From: Bruce Hill Date: Mon, 19 Nov 2018 17:21:08 -0800 Subject: Tweaks and API cleanup. --- core/operators.nom | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'core/operators.nom') diff --git a/core/operators.nom b/core/operators.nom index a7cb116..2f79b8f 100644 --- a/core/operators.nom +++ b/core/operators.nom @@ -99,7 +99,8 @@ test: test: [%x, %y] = [1, 2] - with {%z: nil, %x: 999}: + with {%z, %x: 999}: + assume %z == (nil) %z = 999 assume (%z == 999) or barf "'with' failed." assume (%x == 999) or barf "'with' assignment failed." @@ -113,20 +114,19 @@ test: local vars = {} for i, item in ipairs(\%assignments) do local \%target, \%value = item[1], item[2] - if not \%target.type == "Var" then - error("Invalid target for 'with' assignment: "..tostring(\%target)) - end local target_lua = \(%target as lua) - local value_lua = \(%value as lua) + if not target_lua:text():is_lua_id() then + compile_error_at(\%target, "Invalid target for 'with' scope assignment.", + "This should be either a variable or an action's meaning.") + end + local value_lua = \%value and \(%value as lua) or "nil" if i > 1 then lhs:append(", ") rhs:append(", ") end lhs:append(target_lua) rhs:append(value_lua) - if \%target.type == "Var" then - vars[i] = target_lua:text() - end + vars[i] = target_lua:text() end \%lua:remove_free_vars(vars) \%lua:prepend("local ", lhs, " = ", rhs, ";\\n")" -- cgit v1.2.3