| 167 | } |
| 168 | |
| 169 | bool DUContextDynamicData::imports(const DUContext* context, const TopDUContext* source, |
| 170 | QSet<const DUContextDynamicData*>* recursionGuard) const |
| 171 | { |
| 172 | if (this == context->m_dynamicData) |
| 173 | return true; |
| 174 | |
| 175 | if (!Algorithm::insert(*recursionGuard, this).inserted) { |
| 176 | return false; |
| 177 | } |
| 178 | |
| 179 | FOREACH_FUNCTION(const DUContext::Import& ctx, d_func()->m_importedContexts) { |
| 180 | DUContext* import = ctx.context(source); |
| 181 | if (import == context || (import && import->m_dynamicData->imports(context, source, recursionGuard))) |
| 182 | return true; |
| 183 | } |
| 184 | |
| 185 | return false; |
| 186 | } |
| 187 | |
| 188 | inline bool isContextTemporary(uint index) |
| 189 | { |