Skip to content
GitLab
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
ce3a90fc
Commit
ce3a90fc
authored
May 25, 2010
by
Roberto Raggi
Browse files
Highlight namespaces.
parent
cedaebc3
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/libs/cplusplus/CheckUndefinedSymbols.cpp
View file @
ce3a90fc
...
...
@@ -273,40 +273,33 @@ bool CheckUndefinedSymbols::warning(AST *ast, const QString &text)
return
false
;
}
bool
CheckUndefinedSymbols
::
visit
(
UsingDirectiv
eAST
*
ast
)
bool
CheckUndefinedSymbols
::
visit
(
Namespac
eAST
*
ast
)
{
checkNamespace
(
ast
->
name
);
return
false
;
if
(
ast
->
identifier_token
)
{
const
Token
&
tok
=
tokenAt
(
ast
->
identifier_token
);
if
(
!
tok
.
generated
())
{
unsigned
line
,
column
;
getTokenStartPosition
(
ast
->
identifier_token
,
&
line
,
&
column
);
Use
use
(
line
,
column
,
tok
.
length
());
_typeUsages
.
append
(
use
);
}
}
return
true
;
}
bool
CheckUndefinedSymbols
::
visit
(
SimpleDeclaration
AST
*
)
bool
CheckUndefinedSymbols
::
visit
(
UsingDirective
AST
*
)
{
return
true
;
}
bool
CheckUndefinedSymbols
::
visit
(
NamedTypeSpecifier
AST
*
ast
)
bool
CheckUndefinedSymbols
::
visit
(
SimpleDeclaration
AST
*
)
{
#if 0
if (ast->name) {
unsigned line, column;
getTokenStartPosition(ast->name->firstToken(), &line, &column);
// ### use the potential types.
Scope *enclosingScope = _context.thisDocument()->scopeAt(line, column);
const QList<Symbol *> candidates = _context.lookup(ast->name->name, enclosingScope);
Symbol *ty = 0;
foreach (Symbol *c, candidates) {
if (c->isTypedef() || c->isClass() || c->isEnum()
|| c->isForwardClassDeclaration() || c->isTypenameArgument())
ty = c;
}
if (! ty)
warning(ast->name, QCoreApplication::translate("CheckUndefinedSymbols", "Expected a type-name"));
}
#endif
return
true
;
}
bool
CheckUndefinedSymbols
::
visit
(
NamedTypeSpecifierAST
*
)
{
return
true
;
}
...
...
@@ -330,7 +323,7 @@ void CheckUndefinedSymbols::checkNamespace(NameAST *name)
warning
(
line
,
column
,
QCoreApplication
::
translate
(
"CheckUndefinedSymbols"
,
"Expected a namespace-name"
),
length
);
}
bool
CheckUndefinedSymbols
::
visit
(
Simple
NameAST
*
ast
)
void
CheckUndefinedSymbols
::
checkName
(
NameAST
*
ast
)
{
if
(
ast
->
name
)
{
const
QByteArray
id
=
QByteArray
::
fromRawData
(
ast
->
name
->
identifier
()
->
chars
(),
// ### move
...
...
@@ -345,25 +338,17 @@ bool CheckUndefinedSymbols::visit(SimpleNameAST *ast)
addTypeUsage
(
candidates
,
ast
);
}
}
}
bool
CheckUndefinedSymbols
::
visit
(
SimpleNameAST
*
ast
)
{
checkName
(
ast
);
return
true
;
}
bool
CheckUndefinedSymbols
::
visit
(
TemplateIdAST
*
ast
)
{
if
(
ast
->
name
)
{
const
QByteArray
id
=
QByteArray
::
fromRawData
(
ast
->
name
->
identifier
()
->
chars
(),
// ### move
ast
->
name
->
identifier
()
->
size
());
if
(
_potentialTypes
.
contains
(
id
))
{
Scope
*
scope
=
CollectTypes
::
findScope
(
tokenAt
(
ast
->
firstToken
()).
offset
,
_scopes
);
// ### move
if
(
!
scope
)
scope
=
_context
.
thisDocument
()
->
globalSymbols
();
ClassOrNamespace
*
b
=
_context
.
lookupType
(
ast
->
name
,
scope
);
addTypeUsage
(
b
,
ast
);
}
}
checkName
(
ast
);
return
true
;
}
...
...
@@ -446,7 +431,13 @@ void CheckUndefinedSymbols::addTypeUsage(const QList<Symbol *> &candidates, Name
const
unsigned
length
=
tok
.
length
();
foreach
(
Symbol
*
c
,
candidates
)
{
if
(
c
->
isTypedef
()
||
c
->
isClass
()
||
c
->
isEnum
()
||
c
->
isForwardClassDeclaration
()
||
c
->
isTypenameArgument
())
{
if
(
c
->
isUsingDeclaration
())
// skip using declarations...
continue
;
else
if
(
c
->
isUsingNamespaceDirective
())
// ... and using namespace directives.
continue
;
else
if
(
c
->
isTypedef
()
||
c
->
isNamespace
()
||
c
->
isClass
()
||
c
->
isEnum
()
||
c
->
isForwardClassDeclaration
()
||
c
->
isTypenameArgument
())
{
Use
use
(
line
,
column
,
length
);
_typeUsages
.
append
(
use
);
//qDebug() << "added use" << oo(ast->name) << line << column << length;
...
...
src/libs/cplusplus/CheckUndefinedSymbols.h
View file @
ce3a90fc
...
...
@@ -62,10 +62,12 @@ protected:
bool
warning
(
unsigned
line
,
unsigned
column
,
const
QString
&
text
,
unsigned
length
=
0
);
bool
warning
(
AST
*
ast
,
const
QString
&
text
);
void
checkName
(
NameAST
*
ast
);
void
checkNamespace
(
NameAST
*
name
);
void
addTypeUsage
(
ClassOrNamespace
*
b
,
NameAST
*
ast
);
void
addTypeUsage
(
const
QList
<
Symbol
*>
&
candidates
,
NameAST
*
ast
);
virtual
bool
visit
(
NamespaceAST
*
);
virtual
bool
visit
(
UsingDirectiveAST
*
);
virtual
bool
visit
(
SimpleDeclarationAST
*
);
virtual
bool
visit
(
NamedTypeSpecifierAST
*
);
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new 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