diff options
-rw-r--r-- | build2/file.cxx | 13 | ||||
-rw-r--r-- | build2/parser.cxx | 3 |
2 files changed, 14 insertions, 2 deletions
diff --git a/build2/file.cxx b/build2/file.cxx index 728de64..05527f3 100644 --- a/build2/file.cxx +++ b/build2/file.cxx @@ -1370,7 +1370,7 @@ namespace build2 value& v (ts.assign (var_import_target)); if (!target.empty ()) // Otherwise leave NULL. - v = move (target); + v = target; // Can't move (need for diagnostics below). } // Load the export stub. Note that it is loaded in the context @@ -1391,7 +1391,16 @@ namespace build2 // name? // parser p; - return p.parse_export_stub (ifs, es, iroot, ts); + names v (p.parse_export_stub (ifs, es, iroot, ts)); + + // If there were no export directive executed in an export stub, assume + // the target is not exported. + // + if (v.empty () && !target.empty ()) + fail (loc) << "target " << target << " is not exported by project " + << proj; + + return v; } catch (const io_error& e) { diff --git a/build2/parser.cxx b/build2/parser.cxx index 6d025a6..1dd49b6 100644 --- a/build2/parser.cxx +++ b/build2/parser.cxx @@ -1509,6 +1509,9 @@ namespace build2 export_value_ = move (rhs).as<names> (); + if (export_value_.empty ()) + fail (l) << "empty value in export"; + if (tt == type::newline) next (t, tt); else if (tt != type::eos) |