static bool isEquivRedecl(const std::string &name, ExpressionPtr exp, ModifierExpressionPtr modif, Symbol * symbol) { ASSERT(exp); ASSERT(modif); ASSERT(symbol); if (symbol->getName() != name || symbol->isProtected() != modif->isProtected() || symbol->isPrivate() != modif->isPrivate() || symbol->isPublic() != modif->isPublic() || symbol->isStatic() != modif->isStatic()) return false; ExpressionPtr symDeclExp = dynamic_pointer_cast<Expression>(symbol->getDeclaration()); if (!exp) return !symDeclExp; return exp->equals(symDeclExp); }
static bool isEquivRedecl(const std::string &name, ExpressionPtr exp, ModifierExpressionPtr modif, Symbol * symbol) { assert(exp); assert(modif); assert(symbol); if (symbol->getName() != name || symbol->isProtected() != modif->isProtected() || symbol->isPrivate() != modif->isPrivate() || symbol->isPublic() != modif->isPublic() || symbol->isStatic() != modif->isStatic()) return false; auto symDeclExp = dynamic_pointer_cast<Expression>(symbol->getDeclaration()); if (!exp) return !symDeclExp; Variant v1, v2; auto s1 = exp->getScalarValue(v1); auto s2 = symDeclExp->getScalarValue(v2); if (s1 != s2) return false; if (s1) return same(v1, v2); return exp->getText() == symDeclExp->getText(); }