From 409041aec6502431dccfa23b04817cbcdd782145 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 19 Feb 2012 16:07:21 -0600 Subject: Updated tools/proof --- tools/proof | 57 +++++++++++++++++++++++++++++---------------------------- 1 file changed, 29 insertions(+), 28 deletions(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 284f4e85..30627d65 100755 --- a/tools/proof +++ b/tools/proof @@ -2,40 +2,41 @@ set -e -cd ~/src/ledger +ledger_proof() { + SRC="$1" + DEST="$2" + LOGDIR="$3" -VERSION=$(git describe --all --long) + cd "$SRC" + VERSION=$(git describe --all --long) -if [[ -f ~/Products/last-proofed && \ - $(< ~/Products/last-proofed) = $VERSION ]]; then - echo "No need to run tools/proof again" - exit 0 -fi + if [[ -f $DEST/last-proofed && $(< $DEST/last-proofed) = $VERSION ]]; then + echo "No need to run tools/proof again" + exit 0 + fi -rm -fr ~/Products/ledger-proof + rm -fr $DEST/ledger-proof -#time nice -n 20 \ -# ./acprep --enable-doxygen --universal -j16 --gcc46 --warn proof 2>&1 | \ -# tee ~/Desktop/proof.log -time nice -n 20 \ - ./acprep --universal -j16 --gcc46 --warn proof 2>&1 | \ - tee ~/Desktop/proof.log + time nice -n 20 \ + ./acprep --enable-doxygen --universal -j16 --gcc46 --warn proof 2>&1 | \ + tee $LOGDIR/ledger-proof.log -if egrep -q '(ERROR|CRITICAL)' ~/Desktop/proof.log; then - if [[ "$1" = "--alert" ]]; then - notify "Ledger proof build FAILED" + if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then + if [[ "$1" = "--alert" ]]; then + notify "Ledger proof build FAILED" + else + echo "Ledger proof build FAILED" + exit 1 + fi else - echo "Ledger proof build FAILED" - exit 1 - fi -else - echo $VERSION > ~/Products/last-proofed - mv ~/Desktop/proof.log /tmp + echo $VERSION > $DEST/last-proofed - cd ~/Products/ledger-proof/debug; make docs - cd ~/Products/ledger-proof/gcov; make report + cd $DEST/ledger-proof/debug; make docs + cd $DEST/ledger-proof/gcov; make report - echo "Ledger proof build succeeded" -fi + echo "Ledger proof build succeeded" + fi +} -exit 0 +ledger_proof ${1:-$HOME/src/ledger} \ + ${2:-$HOME/Products) ${3:-$HOME/Library/Logs} \ No newline at end of file -- cgit v1.2.3 From 4e8c9805bb0a68f7d4d20696f28db7d763e370e6 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Sun, 19 Feb 2012 16:08:41 -0600 Subject: Replaced missing } --- tools/proof | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 30627d65..b9038769 100755 --- a/tools/proof +++ b/tools/proof @@ -39,4 +39,4 @@ ledger_proof() { } ledger_proof ${1:-$HOME/src/ledger} \ - ${2:-$HOME/Products) ${3:-$HOME/Library/Logs} \ No newline at end of file + ${2:-$HOME/Products} ${3:-$HOME/Library/Logs} \ No newline at end of file -- cgit v1.2.3 From 5a201971a9a1042a74ce2548a2de3c3e2afcf751 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 24 Feb 2012 03:23:04 -0600 Subject: Added e-mail notifications to tools/proof --- tools/proof | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index b9038769..7c090292 100755 --- a/tools/proof +++ b/tools/proof @@ -22,6 +22,11 @@ ledger_proof() { tee $LOGDIR/ledger-proof.log if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then + cat < Date: Fri, 2 Mar 2012 01:37:49 -0600 Subject: Use Clang to do proof builds --- tools/proof | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 7c090292..c056fd3c 100755 --- a/tools/proof +++ b/tools/proof @@ -18,7 +18,7 @@ ledger_proof() { rm -fr $DEST/ledger-proof time nice -n 20 \ - ./acprep --enable-doxygen --universal -j16 --gcc46 --warn proof 2>&1 | \ + ./acprep --enable-doxygen --universal -j16 --clang proof 2>&1 | \ tee $LOGDIR/ledger-proof.log if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then -- cgit v1.2.3 From f4feabaea1c0a9a3546476a9ed7f6fee502061a8 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 2 Mar 2012 01:49:23 -0600 Subject: Build Python support during proof builds --- tools/proof | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index c056fd3c..037e0bf2 100755 --- a/tools/proof +++ b/tools/proof @@ -18,7 +18,7 @@ ledger_proof() { rm -fr $DEST/ledger-proof time nice -n 20 \ - ./acprep --enable-doxygen --universal -j16 --clang proof 2>&1 | \ + ./acprep --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \ tee $LOGDIR/ledger-proof.log if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then -- cgit v1.2.3 From 38c6953e105247f2ebd43e1039e48edec8bf1ecc Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 2 Mar 2012 02:00:26 -0600 Subject: Proof both the Python and non-Python variants --- tools/proof | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 037e0bf2..f37c1488 100755 --- a/tools/proof +++ b/tools/proof @@ -16,11 +16,15 @@ ledger_proof() { fi rm -fr $DEST/ledger-proof - time nice -n 20 \ - ./acprep --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \ + ./acprep --debug --enable-doxygen --universal --clang -j16 proof 2>&1 | \ tee $LOGDIR/ledger-proof.log + rm -fr $DEST/ledger-proof + time nice -n 20 \ + ./acprep --debug --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \ + tee -a $LOGDIR/ledger-proof.log + if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then cat < Date: Sat, 3 Mar 2012 01:17:21 -0600 Subject: Fixed invocation of lambda expressions foo = x, y, z -> print(x, y, z) foo(1, 2, 3) However, this still does not work: (x, y, z -> print(x, y, z))(1, 2, 3) --- src/op.cc | 2 +- src/scope.h | 24 +++++++++++++++++++----- test/baseline/cmd-script.test | 5 +++++ tools/proof | 4 ++-- 4 files changed, 27 insertions(+), 8 deletions(-) (limited to 'tools/proof') diff --git a/src/op.cc b/src/op.cc index 8e9df812..bd2cc32f 100644 --- a/src/op.cc +++ b/src/op.cc @@ -288,7 +288,7 @@ value_t expr_t::op_t::calc(scope_t& scope, ptr_op_t * locus, const int depth) } case O_LAMBDA: { - call_scope_t& call_args(downcast(scope)); + call_scope_t& call_args(find_scope(scope, true)); std::size_t args_count(call_args.size()); std::size_t args_index(0); symbol_scope_t call_scope(call_args); diff --git a/src/scope.h b/src/scope.h index 90f9c37a..785ce284 100644 --- a/src/scope.h +++ b/src/scope.h @@ -227,15 +227,17 @@ private: }; template -T * search_scope(scope_t * ptr) +T * search_scope(scope_t * ptr, bool prefer_direct_parents = false) { if (T * sought = dynamic_cast(ptr)) return sought; if (bind_scope_t * scope = dynamic_cast(ptr)) { - if (T * sought = search_scope(&scope->grandchild)) + if (T * sought = search_scope(prefer_direct_parents ? + scope->parent : &scope->grandchild)) return sought; - return search_scope(scope->parent); + return search_scope(prefer_direct_parents ? + &scope->grandchild : scope->parent); } else if (child_scope_t * child_scope = dynamic_cast(ptr)) { return search_scope(child_scope->parent); @@ -244,9 +246,21 @@ T * search_scope(scope_t * ptr) } template -inline T& find_scope(child_scope_t& scope, bool skip_this = true) +inline T& find_scope(child_scope_t& scope, bool skip_this = true, + bool prefer_direct_parents = false) { - if (T * sought = search_scope(skip_this ? scope.parent : &scope)) + if (T * sought = search_scope(skip_this ? scope.parent : &scope, + prefer_direct_parents)) + return *sought; + + throw_(std::runtime_error, _("Could not find scope")); + return reinterpret_cast(scope); // never executed +} + +template +inline T& find_scope(scope_t& scope, bool prefer_direct_parents = false) +{ + if (T * sought = search_scope(&scope, prefer_direct_parents)) return *sought; throw_(std::runtime_error, _("Could not find scope")); diff --git a/test/baseline/cmd-script.test b/test/baseline/cmd-script.test index 12e9c868..ce920ebb 100644 --- a/test/baseline/cmd-script.test +++ b/test/baseline/cmd-script.test @@ -10,3 +10,8 @@ end test test eval 'total_expr=$100;amount_expr=$15;x=total_expr;x=x/5;x=amount_expr-x*5;x' $-85 end test + +test eval 'foo = x, y, z -> print(x, y, z); foo(1, 2, 3)' +123 +1 +end test diff --git a/tools/proof b/tools/proof index f37c1488..3b997143 100755 --- a/tools/proof +++ b/tools/proof @@ -15,12 +15,12 @@ ledger_proof() { exit 0 fi - rm -fr $DEST/ledger-proof + sudo rm -fr $DEST/ledger-proof time nice -n 20 \ ./acprep --debug --enable-doxygen --universal --clang -j16 proof 2>&1 | \ tee $LOGDIR/ledger-proof.log - rm -fr $DEST/ledger-proof + sudo rm -fr $DEST/ledger-proof time nice -n 20 \ ./acprep --debug --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \ tee -a $LOGDIR/ledger-proof.log -- cgit v1.2.3 From 75603edeb4853b1e563f525bcc3482609853a975 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Tue, 6 Mar 2012 23:04:43 -0600 Subject: Send myself e-mail after a successful proof build --- tools/proof | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 3b997143..a0dab6cb 100755 --- a/tools/proof +++ b/tools/proof @@ -43,15 +43,13 @@ EOF cd $DEST/ledger-proof/debug; make docs cd $DEST/ledger-proof/gcov; make report - cat < Date: Mon, 19 Mar 2012 22:28:35 -0500 Subject: Output date to proof log --- tools/proof | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index a0dab6cb..9ed7734c 100755 --- a/tools/proof +++ b/tools/proof @@ -16,9 +16,11 @@ ledger_proof() { fi sudo rm -fr $DEST/ledger-proof + date > $LOGDIR/ledger-proof.log + time nice -n 20 \ ./acprep --debug --enable-doxygen --universal --clang -j16 proof 2>&1 | \ - tee $LOGDIR/ledger-proof.log + tee -a $LOGDIR/ledger-proof.log sudo rm -fr $DEST/ledger-proof time nice -n 20 \ -- cgit v1.2.3 From 715568bdd4b2c746882555714d6ecb7831f0b006 Mon Sep 17 00:00:00 2001 From: John Wiegley Date: Fri, 30 Mar 2012 04:46:42 -0500 Subject: Minor changes to tools/proof --- tools/proof | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) (limited to 'tools/proof') diff --git a/tools/proof b/tools/proof index 9ed7734c..7eafd0ef 100755 --- a/tools/proof +++ b/tools/proof @@ -28,11 +28,10 @@ ledger_proof() { tee -a $LOGDIR/ledger-proof.log if egrep -q '(ERROR|CRITICAL)' $LOGDIR/ledger-proof.log; then - cat < Date: Thu, 12 Apr 2012 14:49:32 -0500 Subject: Proof using both GCC and Clang --- acprep | 13 +++++++++++-- tools/proof | 9 ++++++++- 2 files changed, 19 insertions(+), 3 deletions(-) (limited to 'tools/proof') diff --git a/acprep b/acprep index a6efb2a7..0d7f3cd0 100755 --- a/acprep +++ b/acprep @@ -1673,8 +1673,17 @@ class PrepareBuild(CommandLineApp): def phase_rsync(self, *args): self.log.info('Executing phase: rsync') - source_copy_dir = join(self.ensure(self.products_directory()), - 'ledger-proof') + proof_dir = 'ledger-proof' + + if self.options.python: + proof_dir += "-python" + + if self.options.gcc47: + proof_dir += "-gcc47" + elif self.options.use_clang: + proof_dir += "-clang" + + source_copy_dir = join(self.ensure(self.products_directory()), proof_dir) self.execute('rsync', '-a', '--delete', '--exclude=.git/', '--exclude=b/', diff --git a/tools/proof b/tools/proof index 7eafd0ef..00c7f7d1 100755 --- a/tools/proof +++ b/tools/proof @@ -18,11 +18,18 @@ ledger_proof() { sudo rm -fr $DEST/ledger-proof date > $LOGDIR/ledger-proof.log + time nice -n 20 \ + ./acprep --debug --enable-doxygen --universal --gcc47 -j16 proof 2>&1 | \ + tee -a $LOGDIR/ledger-proof.log + + time nice -n 20 \ + ./acprep --debug --enable-doxygen --universal --python --gcc47 -j16 proof 2>&1 | \ + tee -a $LOGDIR/ledger-proof.log + time nice -n 20 \ ./acprep --debug --enable-doxygen --universal --clang -j16 proof 2>&1 | \ tee -a $LOGDIR/ledger-proof.log - sudo rm -fr $DEST/ledger-proof time nice -n 20 \ ./acprep --debug --enable-doxygen --universal --python --clang -j16 proof 2>&1 | \ tee -a $LOGDIR/ledger-proof.log -- cgit v1.2.3