| 142 | } |
| 143 | |
| 144 | std::vector<Declaration const*> DeclarationContainer::resolveName( |
| 145 | ASTString const& _name, |
| 146 | ResolvingSettings _settings |
| 147 | ) const |
| 148 | { |
| 149 | solAssert(!_name.empty(), "Attempt to resolve empty name."); |
| 150 | std::vector<Declaration const*> result; |
| 151 | |
| 152 | if (m_declarations.count(_name)) |
| 153 | { |
| 154 | if (_settings.onlyVisibleAsUnqualifiedNames) |
| 155 | result += m_declarations.at(_name) | ranges::views::filter(&Declaration::isVisibleAsUnqualifiedName) | ranges::to_vector; |
| 156 | else |
| 157 | result += m_declarations.at(_name); |
| 158 | } |
| 159 | |
| 160 | if (_settings.alsoInvisible && m_invisibleDeclarations.count(_name)) |
| 161 | { |
| 162 | if (_settings.onlyVisibleAsUnqualifiedNames) |
| 163 | result += m_invisibleDeclarations.at(_name) | ranges::views::filter(&Declaration::isVisibleAsUnqualifiedName) | ranges::to_vector; |
| 164 | else |
| 165 | result += m_invisibleDeclarations.at(_name); |
| 166 | } |
| 167 | |
| 168 | if (result.empty() && _settings.recursive && m_enclosingContainer) |
| 169 | result = m_enclosingContainer->resolveName(_name, _settings); |
| 170 | |
| 171 | return result; |
| 172 | } |
| 173 | |
| 174 | std::vector<ASTString> DeclarationContainer::similarNames(ASTString const& _name) const |
| 175 | { |
no test coverage detected