From 6084d86f5162f54b33b7004427311113bf9b657c Mon Sep 17 00:00:00 2001
From: Determinant <ted.sybil@gmail.com>
Date: Fri, 29 Jun 2018 14:29:52 -0400
Subject: update travis CI

---
 .travis.yml |  5 ++---
 Makefile    |  6 +++++-
 promise.hpp | 20 ++++++++++----------
 3 files changed, 17 insertions(+), 14 deletions(-)

diff --git a/.travis.yml b/.travis.yml
index ba8ddf9..e32b1a0 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -46,9 +46,6 @@ matrix:
             - clang-3.6
       env:
         - MATRIX_EVAL="CC=clang-3.6 && CXX=clang++-3.6"
-      script:
-        - make test14
-        - ./test14 | diff - test_ref.txt
 
     - os: linux
       addons:
@@ -70,3 +67,5 @@ script:
     - make
     - ./test14 | diff - test_ref.txt
     - ./test17 | diff - test_ref.txt
+    - ./test14_stack_free | diff - test_ref.txt
+    - ./test17_stack_free | diff - test_ref.txt
diff --git a/Makefile b/Makefile
index ba6ee2c..55e89c3 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,10 @@
 .PHONY: all
-all: test14 test17
+all: test14 test17 test14_stack_free test17_stack_free
 test14: test.cpp promise.hpp
 	$(CXX) -o $@ test.cpp -std=c++14 -Wall -Wextra -Wpedantic -O2
 test17: test.cpp promise.hpp
 	$(CXX) -o $@ test.cpp -std=c++17 -Wall -Wextra -Wpedantic -O2
+test14_stack_free: test.cpp promise.hpp
+	$(CXX) -o $@ test.cpp -std=c++14 -Wall -Wextra -Wpedantic -O2 -DCPPROMISE_USE_STACK_FREE
+test17_stack_free: test.cpp promise.hpp
+	$(CXX) -o $@ test.cpp -std=c++17 -Wall -Wextra -Wpedantic -O2 -DCPPROMISE_USE_STACK_FREE
diff --git a/promise.hpp b/promise.hpp
index 7a18609..fe701ae 100644
--- a/promise.hpp
+++ b/promise.hpp
@@ -184,13 +184,13 @@ namespace promise {
         template<typename PList> friend promise_t race(const PList &promise_list);
         std::vector<callback_t> fulfilled_callbacks;
         std::vector<callback_t> rejected_callbacks;
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
         std::vector<Promise *> fulfilled_pms;
         std::vector<Promise *> rejected_pms;
 #endif
         enum class State {
             Pending,
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
             PreFulfilled,
             PreRejected,
 #endif
@@ -213,7 +213,7 @@ namespace promise {
         static constexpr auto cps_transform(
                 Func f, const pm_any_t &result, const promise_t &npm) {
             return [&result, npm, f = std::forward<Func>(f)]() mutable {
-#ifdef CPPROMISE_USE_STACK
+#ifndef CPPROMISE_USE_STACK_FREE
                 f(result)->then(
                     [npm] (pm_any_t result) {npm->resolve(result);},
                     [npm] (pm_any_t reason) {npm->reject(reason);});
@@ -237,7 +237,7 @@ namespace promise {
         static constexpr auto cps_transform(
                 Func f, const pm_any_t &, const promise_t &npm) {
             return [npm, f = std::forward<Func>(f)]() mutable {
-#ifdef CPPROMISE_USE_STACK
+#ifndef CPPROMISE_USE_STACK_FREE
                 f()->then(
                     [npm] (pm_any_t result) {npm->resolve(result);},
                     [npm] (pm_any_t reason) {npm->reject(reason);});
@@ -349,7 +349,7 @@ namespace promise {
             };
         }
 
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
         void _trigger() {
             std::stack<std::tuple<
                 std::vector<Promise *>::const_iterator,
@@ -474,7 +474,7 @@ namespace promise {
                                 ](promise_t &npm) {
                     add_on_fulfilled(gen_on_fulfilled(std::move(on_fulfilled), npm));
                     add_on_rejected(gen_on_rejected(std::move(on_rejected), npm));
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
                     _dep_resolve(npm);
                     _dep_reject(npm);
 #endif
@@ -505,7 +505,7 @@ namespace promise {
                                 ](promise_t &npm) {
                     add_on_fulfilled(gen_on_fulfilled(std::move(on_fulfilled), npm));
                     add_on_rejected([this, npm]() {npm->_reject(reason);});
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
                     _dep_resolve(npm);
                     _dep_reject(npm);
 #endif
@@ -533,7 +533,7 @@ namespace promise {
                     callback_t ret;
                     add_on_rejected(gen_on_rejected(std::move(on_rejected), npm));
                     add_on_fulfilled([this, npm]() {npm->_resolve(result);});
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
                     _dep_resolve(npm);
                     _dep_reject(npm);
 #endif
@@ -590,7 +590,7 @@ namespace promise {
                             npm->_resolve(*results);
                     },
                     [npm](pm_any_t reason) {npm->_reject(reason);});
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
                 pm->_dep_resolve(npm);
                 pm->_dep_reject(npm);
 #endif
@@ -604,7 +604,7 @@ namespace promise {
             for (const auto &pm: promise_list) {
                 pm->then([npm](pm_any_t result) {npm->_resolve(result);},
                         [npm](pm_any_t reason) {npm->_reject(reason);});
-#ifndef CPPROMISE_USE_STACK
+#ifdef CPPROMISE_USE_STACK_FREE
                 pm->_dep_resolve(npm);
                 pm->_dep_reject(npm);
 #endif
-- 
cgit v1.2.3-70-g09d2