forked from qt-creator/qt-creator
		
	C++: Avoid repetitive calls
Change-Id: I6f04b98c14567d344907ac635df7eeee2f7aeac7 Reviewed-by: Nikolai Kosjar <nikolai.kosjar@digia.com>
This commit is contained in:
		
				
					committed by
					
						
						Orgad Shaneh
					
				
			
			
				
	
			
			
			
						parent
						
							480e8134e9
						
					
				
				
					commit
					804eb7178a
				
			@@ -206,45 +206,47 @@ bool FindUsages::checkCandidates(const QList<LookupItem> &candidates) const
 | 
			
		||||
                    return false;
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if (isLocalScope(_declSymbol->enclosingScope()) || isLocalScope(s->enclosingScope())) {
 | 
			
		||||
                if (_declSymbol->isClass() && _declSymbol->enclosingScope()->isTemplate()
 | 
			
		||||
                        && s->isClass() && s->enclosingScope()->isTemplate()) {
 | 
			
		||||
            Scope *declEnclosingScope = _declSymbol->enclosingScope();
 | 
			
		||||
            Scope *enclosingScope = s->enclosingScope();
 | 
			
		||||
            if (isLocalScope(declEnclosingScope) || isLocalScope(enclosingScope)) {
 | 
			
		||||
                if (_declSymbol->isClass() && declEnclosingScope->isTemplate()
 | 
			
		||||
                        && s->isClass() && enclosingScope->isTemplate()) {
 | 
			
		||||
                    // for definition of functions of class defined outside the class definition
 | 
			
		||||
                    Scope *templEnclosingDeclSymbol = _declSymbol->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingDeclSymbol = declEnclosingScope;
 | 
			
		||||
                    Scope *scopeOfTemplEnclosingDeclSymbol
 | 
			
		||||
                            = templEnclosingDeclSymbol->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingCandidateSymbol = s->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingCandidateSymbol = enclosingScope;
 | 
			
		||||
                    Scope *scopeOfTemplEnclosingCandidateSymbol
 | 
			
		||||
                            = templEnclosingCandidateSymbol->enclosingScope();
 | 
			
		||||
 | 
			
		||||
                    if (scopeOfTemplEnclosingCandidateSymbol != scopeOfTemplEnclosingDeclSymbol)
 | 
			
		||||
                        return false;
 | 
			
		||||
                } else if (_declSymbol->isClass() && _declSymbol->enclosingScope()->isTemplate()
 | 
			
		||||
                        && s->enclosingScope()->isClass()
 | 
			
		||||
                        && s->enclosingScope()->enclosingScope()->isTemplate()) {
 | 
			
		||||
                } else if (_declSymbol->isClass() && declEnclosingScope->isTemplate()
 | 
			
		||||
                        && enclosingScope->isClass()
 | 
			
		||||
                        && enclosingScope->enclosingScope()->isTemplate()) {
 | 
			
		||||
                    // for declaration inside template class
 | 
			
		||||
                    Scope *templEnclosingDeclSymbol = _declSymbol->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingDeclSymbol = declEnclosingScope;
 | 
			
		||||
                    Scope *scopeOfTemplEnclosingDeclSymbol
 | 
			
		||||
                            = templEnclosingDeclSymbol->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingCandidateSymbol = s->enclosingScope()->enclosingScope();
 | 
			
		||||
                    Scope *templEnclosingCandidateSymbol = enclosingScope->enclosingScope();
 | 
			
		||||
                    Scope *scopeOfTemplEnclosingCandidateSymbol
 | 
			
		||||
                            = templEnclosingCandidateSymbol->enclosingScope();
 | 
			
		||||
 | 
			
		||||
                    if (scopeOfTemplEnclosingCandidateSymbol !=  scopeOfTemplEnclosingDeclSymbol)
 | 
			
		||||
                        return false;
 | 
			
		||||
                } else if (s->enclosingScope()->isTemplate() && ! _declSymbol->isTypenameArgument()) {
 | 
			
		||||
                    if (_declSymbol->enclosingScope()->isTemplate()) {
 | 
			
		||||
                        if (s->enclosingScope()->enclosingScope() != _declSymbol->enclosingScope()->enclosingScope())
 | 
			
		||||
                } else if (enclosingScope->isTemplate() && ! _declSymbol->isTypenameArgument()) {
 | 
			
		||||
                    if (declEnclosingScope->isTemplate()) {
 | 
			
		||||
                        if (enclosingScope->enclosingScope() != declEnclosingScope->enclosingScope())
 | 
			
		||||
                            return false;
 | 
			
		||||
                    } else {
 | 
			
		||||
                        if (s->enclosingScope()->enclosingScope() != _declSymbol->enclosingScope())
 | 
			
		||||
                        if (enclosingScope->enclosingScope() != declEnclosingScope)
 | 
			
		||||
                            return false;
 | 
			
		||||
                    }
 | 
			
		||||
                } else if (_declSymbol->enclosingScope()->isTemplate() && s->isTemplate()) {
 | 
			
		||||
                    if (_declSymbol->enclosingScope()->enclosingScope() != s->enclosingScope())
 | 
			
		||||
                } else if (declEnclosingScope->isTemplate() && s->isTemplate()) {
 | 
			
		||||
                    if (declEnclosingScope->enclosingScope() != enclosingScope)
 | 
			
		||||
                        return false;
 | 
			
		||||
                } else if (! s->isUsingDeclaration()
 | 
			
		||||
                           && s->enclosingScope() != _declSymbol->enclosingScope()) {
 | 
			
		||||
                           && enclosingScope != declEnclosingScope) {
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user