fix? bug in call-fn with incorrect function call info
This commit is contained in:
parent
7a7a3b8977
commit
1841915d92
|
@ -423,8 +423,8 @@
|
||||||
(when (= :function (type clauses))
|
(when (= :function (type clauses))
|
||||||
(break (clauses root-ast ;args)))
|
(break (clauses root-ast ;args)))
|
||||||
(def len (length clauses))
|
(def len (length clauses))
|
||||||
(when (the-fn :match) (break ((the-fn :match) 0 args)))
|
(when (the-fn :match) (break ((the-fn :match) root-ast 0 args)))
|
||||||
(defn match-fn [i args]
|
(defn match-fn [root-ast i args]
|
||||||
(when (= len i)
|
(when (= len i)
|
||||||
(error {:node root-ast :called the-fn :value args :msg "no match: function call"}))
|
(error {:node root-ast :called the-fn :value args :msg "no match: function call"}))
|
||||||
(def clause (clauses i))
|
(def clause (clauses i))
|
||||||
|
@ -432,17 +432,17 @@
|
||||||
(def match?
|
(def match?
|
||||||
(match-pattern patt args @{:^parent (the-fn :ctx)}))
|
(match-pattern patt args @{:^parent (the-fn :ctx)}))
|
||||||
(when (not (match? :success))
|
(when (not (match? :success))
|
||||||
(break (match-fn (inc i) args)))
|
(break (match-fn root-ast (inc i) args)))
|
||||||
# (print "matched!")
|
# (print "matched!")
|
||||||
(def body-ctx (match? :ctx))
|
(def body-ctx (match? :ctx))
|
||||||
(def guard? (if guard
|
(def guard? (if guard
|
||||||
(b/bool (interpret guard body-ctx)) true))
|
(b/bool (interpret guard body-ctx)) true))
|
||||||
# (print "passed guard")
|
# (print "passed guard")
|
||||||
(when (not guard?)
|
(when (not guard?)
|
||||||
(break (match-fn (inc i) args)))
|
(break (match-fn root-ast (inc i) args)))
|
||||||
(interpret expr body-ctx))
|
(interpret expr body-ctx))
|
||||||
(set (the-fn :match) match-fn)
|
(set (the-fn :match) match-fn)
|
||||||
(match-fn 0 args))
|
(match-fn root-ast 0 args))
|
||||||
|
|
||||||
(set call-fn call-fn*)
|
(set call-fn call-fn*)
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user