From 649d388ff422a9a049e2b50768db357a73ee59d5 Mon Sep 17 00:00:00 2001 From: Boris Kolpackov Date: Fri, 2 Dec 2022 15:34:53 +0200 Subject: Fail if scope or target qualification in variable expansion is unknown There are three options here: we can "fall through" to an outer scope (there is always the global scope backstop; this is the old semantics, sort of), we can return NULL straight away, or we can fail. It feels like in most cases unknown scope or target is a mistake and doing anything other than failing is just making things harder to debug. --- libbuild2/file.cxx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) (limited to 'libbuild2/file.cxx') diff --git a/libbuild2/file.cxx b/libbuild2/file.cxx index b93a20a..03dea5f 100644 --- a/libbuild2/file.cxx +++ b/libbuild2/file.cxx @@ -523,10 +523,14 @@ namespace build2 pair switch_scope (scope& root, const dir_path& out_base, bool proj) { + context& ctx (root.ctx); + + assert (ctx.phase == run_phase::load); + // First, enter the scope into the map and see if it is in any project. If // it is not, then there is nothing else to do. // - auto i (root.ctx.scopes.rw (root).insert_out (out_base)); + auto i (ctx.scopes.rw (root).insert_out (out_base)); scope& base (*i->second.front ()); scope* rs (nullptr); -- cgit v1.1