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 | |
| parent | b91fb6f10484468f2aafdb328cf97d4ce98e20d3 (diff) | |
| download | platform_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.tar.gz platform_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.tar.bz2 platform_build_kati-347e06f1469dd5eb403cd5a7e608f705cfcecd19.zip | |
Stop using dynamic_cast
| -rw-r--r-- | expr.cc | 8 | ||||
| -rw-r--r-- | expr.h | 2 |
2 files changed, 8 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); @@ -41,6 +41,8 @@ class Value : public Evaluable { virtual Value* Compact() { return this; } + virtual bool IsLiteral() const { return false; } + string DebugString() const; protected: |
