diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-17 15:18:28 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2015-11-17 15:29:38 +0900 |
commit | 82e2009e8d1bab7ced739c121fb2e9494498e956 (patch) | |
tree | 3643ef38cabc926600609b752e3afb1576a4d00a /expr.cc | |
parent | bbe55487c389c4f01d70d63ed8f443d026399d7b (diff) | |
download | android_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.cc | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -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))); } |