cppparser: fix finding types in explicitly specialized template class

This commit is contained in:
rdb 2019-08-23 13:15:10 +02:00
parent 8c40ff39d7
commit 0e4597fb2e

View File

@ -254,19 +254,23 @@ get_scope(CPPScope *current_scope, CPPScope *global_scope,
} }
while (i + 1 < (int)_names.size() && scope != nullptr) { while (i + 1 < (int)_names.size() && scope != nullptr) {
CPPScope *next_scope = scope->find_scope(_names[i].get_name(), global_scope); // Check for an explicitly specialized scope first.
CPPScope *next_scope = scope->find_scope(_names[i].get_name_with_templ(), global_scope);
if (next_scope == nullptr) { if (next_scope == nullptr) {
if (error_sink != nullptr) { next_scope = scope->find_scope(_names[i].get_name(), global_scope);
error_sink->error("Symbol " + _names[i].get_name() + if (next_scope == nullptr) {
" is not a known scope in " + if (error_sink != nullptr) {
scope->get_fully_scoped_name(), error_sink->error("Symbol " + _names[i].get_name() +
_loc); " is not a known scope in " +
scope->get_fully_scoped_name(),
_loc);
}
return nullptr;
}
if (_names[i].has_templ()) {
next_scope = next_scope->instantiate(_names[i].get_templ(),
current_scope, global_scope);
} }
return nullptr;
}
if (_names[i].has_templ()) {
next_scope = next_scope->instantiate(_names[i].get_templ(),
current_scope, global_scope);
} }
scope = next_scope; scope = next_scope;
i++; i++;