14 if (
const QString fileSelector = QQmlJSUtils::fileSelectorFor(type.scope);
15 !fileSelector.isEmpty()) {
16 setFileSelectedType(fileSelector, name, type);
19 auto insertName = [
this, &name, &type]() {
20 if (!name.startsWith(u'$')) {
21 if (!m_names.contains(type.scope, name))
22 m_names.insert(type.scope, name);
26 const auto it = m_types.find(name);
27 if (it == m_types.end()) {
28 m_types.insert(name, type);
33 if (it->m_precedence < type.m_precedence)
36 m_names.remove(it->scope, name);
44 auto insertName = [
this, &name, &type]() {
45 if (!name.startsWith(u'$')) {
46 if (!m_names.contains(type.scope, name))
47 m_names.insert(type.scope, name);
51 auto it = m_fileSelectedTypes.find(name);
52 if (it == m_fileSelectedTypes.end()) {
54 m_fileSelectedTypes.insert(name, { fileSelector, type });
58 if (it->type.m_precedence < type.m_precedence)
61 m_names.remove(type.scope, name);
62 *it = { fileSelector, type };
69 for (
auto [it, end] = m_names.equal_range(scope); it != end; ++it) {
70 if (
auto mainTypeIt = m_types.find(*it); mainTypeIt != m_types.end())
71 result.mainType = mainTypeIt->scope;
73 for (
auto [it2, end2] = m_fileSelectedTypes.equal_range(*it); it2 != end2; ++it2) {
74 result.fileSelectedTypes.append(*it2);
void setType(const QString &name, const ContextualType &type)
void setFileSelectedType(const QString &fileSelector, const QString &name, const ContextualType &type)