From 8762bc6f4197546ec207114711f16143f9971f80 Mon Sep 17 00:00:00 2001 From: Nathan DECHER Date: Sat, 12 Sep 2020 23:56:21 +0200 Subject: [PATCH] fix #5 --- moonbuild.moon | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/moonbuild.moon b/moonbuild.moon index ccc4160..fb2b493 100755 --- a/moonbuild.moon +++ b/moonbuild.moon @@ -62,9 +62,9 @@ class BuildObject @list: => {target, {dep, @find dep for dep in *target.deps} for name, target in pairs all} - @build: (name) => + @build: (name, upper) => target=(@find name) or error "No such target: #{name}" - target\build name + target\build name, upper __tostring: => "Target #{@name} (#{concat @deps, ', '})" @@ -74,12 +74,14 @@ class BuildObject error "Duplicate build name #{@name}" if all[@name] all[@name]=@ - build: (name) => + build: (name, upper={}) => return if skip[name] + error "Cycle detected on #{@name}" if upper[@] + upper = setmetatable {[@]: true}, __index: upper if @name!=name - @@build patsubst name, @name, dep for dep in *@deps + @@build (patsubst name, @name, dep), upper for dep in *@deps else - @@build dep for dep in *@deps + @@build dep, upper for dep in *@deps return unless @shouldbuild name ins=@ins