aboutsummaryrefslogtreecommitdiffstats
path: root/expr.cc
diff options
context:
space:
mode:
authorShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-17 15:18:28 +0900
committerShinichiro Hamaji <shinichiro.hamaji@gmail.com>2015-11-17 15:29:38 +0900
commit82e2009e8d1bab7ced739c121fb2e9494498e956 (patch)
tree3643ef38cabc926600609b752e3afb1576a4d00a /expr.cc
parentbbe55487c389c4f01d70d63ed8f443d026399d7b (diff)
downloadandroid_build_kati-82e2009e8d1bab7ced739c121fb2e9494498e956.tar.gz
android_build_kati-82e2009e8d1bab7ced739c121fb2e9494498e956.tar.bz2
android_build_kati-82e2009e8d1bab7ced739c121fb2e9494498e956.zip
[C++] Warn about weird expressions
Diffstat (limited to 'expr.cc')
-rw-r--r--expr.cc15
1 files changed, 14 insertions, 1 deletions
diff --git a/expr.cc b/expr.cc
index 07cccc9..e43d189 100644
--- a/expr.cc
+++ b/expr.cc
@@ -351,7 +351,15 @@ Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) {
if (s[i] == cp) {
*index_out = i + 1;
if (Literal* lit = dynamic_cast<Literal*>(vname)) {
- Value* r = new SymRef(Intern(lit->val()));
+ Symbol sym = Intern(lit->val());
+ if (g_flags.enable_kati_warnings) {
+ size_t found = sym.str().find_first_of(" ({");
+ if (found != string::npos) {
+ KATI_WARN("%s:%d: *warning*: variable lookup with '%c': %.*s",
+ loc, sym.str()[found], SPF(s));
+ }
+ }
+ Value* r = new SymRef(sym);
delete lit;
return r;
}
@@ -366,6 +374,9 @@ Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) {
Func* func = new Func(fi);
ParseFunc(loc, func, s, i+1, terms, index_out);
return func;
+ } else {
+ KATI_WARN("%s:%d: *warning*: unknown make function '%.*s': %.*s",
+ loc, SPF(lit->val()), SPF(s));
}
}
@@ -406,6 +417,8 @@ Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) {
// for detail.
size_t found = s.find(cp);
if (found != string::npos) {
+ KATI_WARN("%s:%d: *warning*: unmatched parentheses: %.*s",
+ loc, SPF(s));
*index_out = s.size();
return new SymRef(Intern(s.substr(2, found-2)));
}