From f0a6bed4745a86fc56ae9b0854b0ae044ea62d7c Mon Sep 17 00:00:00 2001 From: Felix Andrews Date: Sat, 19 Nov 2016 10:54:40 +0800 Subject: [PATCH 1/2] Insert assignments in sub blocks --- src/gamma/compiler/insert_assignments.cljs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/gamma/compiler/insert_assignments.cljs b/src/gamma/compiler/insert_assignments.cljs index 152232e..6905d32 100644 --- a/src/gamma/compiler/insert_assignments.cljs +++ b/src/gamma/compiler/insert_assignments.cljs @@ -47,7 +47,7 @@ :block [db [(in-path [:body (- (count (:body e)) 1)] (insert-assignments-sub target-id)) - ;(insert-assignments) + (insert-assignments) ]] ;:set [db nil] From 81de908af82d3413b4c47eaf60d1ab05010c6f19 Mon Sep 17 00:00:00 2001 From: Felix Andrews Date: Sat, 19 Nov 2016 15:16:47 +0800 Subject: [PATCH 2/2] Add test for assignments within if block --- src/gamma/test/runner.cljs | 4 +++- test/gamma/test/compiler.cljs | 24 ++++++++++++++++++++++++ 2 files changed, 27 insertions(+), 1 deletion(-) create mode 100644 test/gamma/test/compiler.cljs diff --git a/src/gamma/test/runner.cljs b/src/gamma/test/runner.cljs index 3c875e9..a22a80c 100644 --- a/src/gamma/test/runner.cljs +++ b/src/gamma/test/runner.cljs @@ -1,6 +1,8 @@ (ns gamma.test.runner - (:require [gamma.test.constructors])) + (:require [gamma.test.constructors] + [gamma.test.compiler])) (enable-console-print!) (cljs.test/run-tests 'gamma.test.constructors) +(cljs.test/run-tests 'gamma.test.compiler) diff --git a/test/gamma/test/compiler.cljs b/test/gamma/test/compiler.cljs new file mode 100644 index 0000000..0c537a7 --- /dev/null +++ b/test/gamma/test/compiler.cljs @@ -0,0 +1,24 @@ +(ns gamma.test.compiler + (:require [cljs.test] + [gamma.api :as g] + [gamma.compiler.core :refer [compile]] + [gamma.tools :refer [glsl-string]] + [clojure.string :as str]) + (:require-macros [cljs.test :refer [is deftest testing]])) + +(enable-console-print!) + +(defn ->glsl [x] + (clojure.string/replace + (glsl-string x) + #"\s" "")) + +(defn mush-vars [glsl] + (str/replace glsl #"v[0-9]+" "v%")) + +(deftest + nested-assignments + (let [e (g/* 1.0 1.0) + ee (g/block (g/set (g/gl-position) (g/if true (g/+ e e) 3.0)))] + (is (= "if(true){(v%=(1.0*1.0));(v%=(v%+v%));}else{(v%=3.0);}(gl_Position=v%);" + (mush-vars (->glsl ee))))))