summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--acf2/model/init.lua11
1 files changed, 9 insertions, 2 deletions
diff --git a/acf2/model/init.lua b/acf2/model/init.lua
index f2f79df..8f6d133 100644
--- a/acf2/model/init.lua
+++ b/acf2/model/init.lua
@@ -180,8 +180,15 @@ function M.Reference:deleted(context, addr)
raise(context.path, 'Refers to '..addr)
end
- assert(policy == 'set-null')
- node.save(context.parent, M.path.name(context.path))
+ local parent = context.parent
+ local path = context.path
+
+ if policy == 'cascade' then
+ path = node.path(parent)
+ parent = node.parent(parent)
+ else assert(policy == 'set-null') end
+
+ node.save(parent, M.path.name(path))
end
end