Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
Menu
Open sidebar
Marco Bubke
flatpak-qt-creator
Commits
0ef213df
Commit
0ef213df
authored
Feb 18, 2009
by
Roberto Raggi
Browse files
Nicer implementation of ::completeScope()
parent
c72c84d8
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/plugins/cpptools/cppcodecompletion.cpp
View file @
0ef213df
...
...
@@ -775,43 +775,24 @@ bool CppCodeCompletion::completeMember(const QList<TypeOfExpression::Result> &re
bool
CppCodeCompletion
::
completeScope
(
const
QList
<
TypeOfExpression
::
Result
>
&
results
,
const
LookupContext
&
context
)
{
if
(
results
.
isEmpty
())
return
false
;
// nothing to do.
QList
<
Symbol
*>
classes
,
namespaces
;
// Search for a class or a namespace.
TypeOfExpression
::
Result
result
;
foreach
(
result
,
results
)
{
foreach
(
TypeOfExpression
::
Result
result
,
results
)
{
FullySpecifiedType
ty
=
result
.
first
;
if
(
ty
->
isClassType
()
||
ty
->
isNamespaceType
())
break
;
}
if
(
Class
*
classTy
=
ty
->
asClassType
())
classes
.
append
(
classTy
);
FullySpecifiedType
exprTy
=
result
.
first
;
if
(
!
exprTy
)
{
return
false
;
}
else
if
(
exprTy
->
isNamespaceType
())
{
QList
<
Symbol
*>
candidates
;
foreach
(
TypeOfExpression
::
Result
p
,
results
)
{
if
(
Namespace
*
ns
=
p
.
first
->
asNamespaceType
())
candidates
.
append
(
ns
);
}
completeNamespace
(
candidates
,
context
);
}
else
if
(
exprTy
->
isClassType
())
{
QList
<
Symbol
*>
candidates
;
foreach
(
TypeOfExpression
::
Result
p
,
results
)
{
if
(
Class
*
k
=
p
.
first
->
asClassType
())
candidates
.
append
(
k
);
}
completeClass
(
candidates
,
context
);
}
else
if
(
Symbol
*
symbol
=
result
.
second
)
{
if
(
symbol
->
isTypedef
())
{
ResolveClass
resolveClass
;
const
QList
<
Symbol
*>
candidates
=
resolveClass
(
result
,
context
);
completeClass
(
candidates
,
context
);
}
else
if
(
Namespace
*
namespaceTy
=
ty
->
asNamespaceType
())
namespaces
.
append
(
namespaceTy
);
}
if
(
!
classes
.
isEmpty
())
completeClass
(
classes
,
context
);
else
if
(
!
namespaces
.
isEmpty
()
&&
m_completions
.
isEmpty
())
completeNamespace
(
namespaces
,
context
);
return
!
m_completions
.
isEmpty
();
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment