Skip to content
This repository was archived by the owner on Jun 15, 2023. It is now read-only.

Commit 35e950d

Browse files
committed
Merge pull request ninja-build#1096 from sgraham/dupe-edge-action
dupe_edge_should_err from bool to enum
2 parents 16553f7 + 56bab44 commit 35e950d

5 files changed

+61
-54
lines changed

src/manifest_parser.cc

+4-4
Original file line numberDiff line numberDiff line change
@@ -25,9 +25,9 @@
2525
#include "version.h"
2626

2727
ManifestParser::ManifestParser(State* state, FileReader* file_reader,
28-
bool dupe_edge_should_err)
28+
DupeEdgeAction dupe_edge_action)
2929
: state_(state), file_reader_(file_reader),
30-
dupe_edge_should_err_(dupe_edge_should_err), quiet_(false) {
30+
dupe_edge_action_(dupe_edge_action), quiet_(false) {
3131
env_ = &state->bindings_;
3232
}
3333

@@ -331,7 +331,7 @@ bool ManifestParser::ParseEdge(string* err) {
331331
if (!CanonicalizePath(&path, &slash_bits, &path_err))
332332
return lexer_.Error(path_err, err);
333333
if (!state_->AddOut(edge, path, slash_bits)) {
334-
if (dupe_edge_should_err_) {
334+
if (dupe_edge_action_ == kDupeEdgeActionError) {
335335
lexer_.Error("multiple rules generate " + path + " [-w dupbuild=err]",
336336
err);
337337
return false;
@@ -380,7 +380,7 @@ bool ManifestParser::ParseFileInclude(bool new_scope, string* err) {
380380
return false;
381381
string path = eval.Evaluate(env_);
382382

383-
ManifestParser subparser(state_, file_reader_, dupe_edge_should_err_);
383+
ManifestParser subparser(state_, file_reader_, dupe_edge_action_);
384384
if (new_scope) {
385385
subparser.env_ = new BindingEnv(env_);
386386
} else {

src/manifest_parser.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,11 @@ struct BindingEnv;
2525
struct EvalString;
2626
struct State;
2727

28+
enum DupeEdgeAction {
29+
kDupeEdgeActionWarn,
30+
kDupeEdgeActionError,
31+
};
32+
2833
/// Parses .ninja files.
2934
struct ManifestParser {
3035
struct FileReader {
@@ -33,7 +38,7 @@ struct ManifestParser {
3338
};
3439

3540
ManifestParser(State* state, FileReader* file_reader,
36-
bool dupe_edge_should_err);
41+
DupeEdgeAction dupe_edge_action);
3742

3843
/// Load and parse a file.
3944
bool Load(const string& filename, string* err, Lexer* parent = NULL);
@@ -66,7 +71,7 @@ struct ManifestParser {
6671
BindingEnv* env_;
6772
FileReader* file_reader_;
6873
Lexer lexer_;
69-
bool dupe_edge_should_err_;
74+
DupeEdgeAction dupe_edge_action_;
7075
bool quiet_;
7176
};
7277

0 commit comments

Comments
 (0)