From b61557347aac31e6ba98dedbc16e49a69ff30912 Mon Sep 17 00:00:00 2001 From: "Kartik K. Agaram" Date: Wed, 27 Apr 2016 00:39:49 -0700 Subject: 2872 - tangle directive spurious errors fixed --- 052tangle.cc | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to '052tangle.cc') diff --git a/052tangle.cc b/052tangle.cc index 9c64bd00..896a073d 100644 --- a/052tangle.cc +++ b/052tangle.cc @@ -133,14 +133,15 @@ bool is_waypoint(string label) { } //: complain about unapplied fragments -:(before "End Globals") -bool Transform_check_insert_fragments_Ran = false; -:(after "Transform.push_back(insert_fragments)") -Transform.push_back(check_insert_fragments); // idempotent +//: This can't run during transform because later (shape-shifting recipes) +//: we'll encounter situations where fragments might get used long after +//: they're loaded, and we might run transform_all in between. To avoid +//: spurious errors, run this check right at the end, after all code is +//: loaded, right before we run main. +:(before "End Commandline Parsing") +check_insert_fragments(); :(code) -void check_insert_fragments(unused recipe_ordinal) { - if (Transform_check_insert_fragments_Ran) return; - Transform_check_insert_fragments_Ran = true; +void check_insert_fragments() { for (map::iterator p = Before_fragments.begin(); p != Before_fragments.end(); ++p) { if (!contains_key(Fragments_used, p->first)) raise << "could not locate insert before " << p->first << '\n' << end(); -- cgit 1.4.1-2-gfad0