diff options
author | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2016-01-05 14:41:53 +0900 |
---|---|---|
committer | Shinichiro Hamaji <shinichiro.hamaji@gmail.com> | 2016-01-05 14:41:53 +0900 |
commit | 347e06f1469dd5eb403cd5a7e608f705cfcecd19 (patch) | |
tree | f48e835181bb0b10cd64213eaafc13a4d62af89d /expr.cc | |
parent | b91fb6f10484468f2aafdb328cf97d4ce98e20d3 (diff) | |
download | android_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.tar.gz android_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.tar.bz2 android_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.zip |
Stop using dynamic_cast
Diffstat (limited to 'expr.cc')
-rw-r--r-- | expr.cc | 8 |
1 files changed, 6 insertions, 2 deletions
@@ -62,6 +62,8 @@ class Literal : public Value { s->append(s_.begin(), s_.end()); } + virtual bool IsLiteral() const { return true; } + virtual string DebugString_() const override { return s_.as_string(); } @@ -356,7 +358,8 @@ Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) { i += n; if (s[i] == cp) { *index_out = i + 1; - if (Literal* lit = dynamic_cast<Literal*>(vname)) { + if (vname->IsLiteral()) { + Literal* lit = static_cast<Literal*>(vname); Symbol sym = Intern(lit->val()); if (g_flags.enable_kati_warnings) { size_t found = sym.str().find_first_of(" ({"); @@ -374,7 +377,8 @@ Value* ParseDollar(const Loc& loc, StringPiece s, size_t* index_out) { if (s[i] == ' ' || s[i] == '\\') { // ${func ...} - if (Literal* lit = dynamic_cast<Literal*>(vname)) { + if (vname->IsLiteral()) { + Literal* lit = static_cast<Literal*>(vname); if (FuncInfo* fi = GetFuncInfo(lit->val())) { delete lit; Func* func = new Func(fi); |