aboutsummaryrefslogtreecommitdiff
path: root/command.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-12-12 12:37:51 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-12-12 12:38:50 +0900
commitb552df31a53738f72d273c1e6c43bf2e370c3597 (patch)
treefc1ca490c253357bd1d438d3ab3db95e5b80124f /command.cc
parent29e45702687fc8f1f9925824adeddc36e69ae030 (diff)
[C++] Fail early for unsupported automatic variables
This is for issue #40.
Diffstat (limited to 'command.cc')
-rw-r--r--command.cc9
1 files changed, 9 insertions, 0 deletions
diff --git a/command.cc b/command.cc
index 99984c2..6b8d604 100644
--- a/command.cc
+++ b/command.cc
@@ -70,6 +70,7 @@ DECLARE_AUTO_VAR_CLASS(AutoLessVar);
DECLARE_AUTO_VAR_CLASS(AutoHatVar);
DECLARE_AUTO_VAR_CLASS(AutoPlusVar);
DECLARE_AUTO_VAR_CLASS(AutoStarVar);
+DECLARE_AUTO_VAR_CLASS(AutoNotImplementedVar);
class AutoSuffixDVar : public AutoVar {
public:
@@ -128,6 +129,10 @@ void AutoStarVar::Eval(Evaluator*, string* s) const {
pat.Stem(n->output.str()).AppendToString(s);
}
+void AutoNotImplementedVar::Eval(Evaluator*, string*) const {
+ ERROR("Automatic variable `$%s' isn't supported yet", sym_);
+}
+
void AutoSuffixDVar::Eval(Evaluator* ev, string* s) const {
string buf;
wrapped_->Eval(ev, &buf);
@@ -177,6 +182,10 @@ CommandEvaluator::CommandEvaluator(Evaluator* ev)
INSERT_AUTO_VAR(AutoHatVar, "^");
INSERT_AUTO_VAR(AutoPlusVar, "+");
INSERT_AUTO_VAR(AutoStarVar, "*");
+ // TODO: Implement them.
+ INSERT_AUTO_VAR(AutoNotImplementedVar, "%");
+ INSERT_AUTO_VAR(AutoNotImplementedVar, "?");
+ INSERT_AUTO_VAR(AutoNotImplementedVar, "|");
}
void CommandEvaluator::Eval(DepNode* n, vector<Command*>* commands) {