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
7edde41d
Commit
7edde41d
authored
May 12, 2010
by
Roberto Raggi
Browse files
Get rid of deprected method ResolveExpression::resolveBaseExpression().
parent
b6637581
Changes
2
Hide whitespace changes
Inline
Side-by-side
src/libs/cplusplus/ResolveExpression.cpp
View file @
7edde41d
...
...
@@ -625,123 +625,6 @@ ClassOrNamespace *ResolveExpression::baseExpression(const QList<LookupItem> &bas
return
0
;
}
QList
<
LookupItem
>
ResolveExpression
::
resolveBaseExpression
(
const
QList
<
LookupItem
>
&
baseResults
,
int
accessOp
,
bool
*
replacedDotOperator
)
const
{
QList
<
LookupItem
>
results
;
if
(
baseResults
.
isEmpty
())
return
results
;
LookupItem
result
=
baseResults
.
first
();
FullySpecifiedType
ty
=
result
.
type
().
simplified
();
Scope
*
scope
=
result
.
scope
();
if
(
Function
*
funTy
=
ty
->
asFunctionType
())
{
if
(
funTy
->
isAmbiguous
())
ty
=
funTy
->
returnType
().
simplified
();
}
if
(
accessOp
==
T_ARROW
)
{
if
(
NamedType
*
namedTy
=
ty
->
asNamedType
())
{
const
Name
*
arrowAccessOp
=
control
()
->
operatorNameId
(
OperatorNameId
::
ArrowOp
);
foreach
(
Symbol
*
declaration
,
_context
.
lookup
(
namedTy
->
name
(),
result
.
scope
()))
{
if
(
PointerType
*
ptrTy
=
declaration
->
type
()
->
asPointerType
())
{
FullySpecifiedType
elementTy
=
ptrTy
->
elementType
().
simplified
();
if
(
elementTy
->
isNamedType
()
||
elementTy
->
isClassType
())
{
LookupItem
item
;
item
.
setType
(
elementTy
);
item
.
setDeclaration
(
declaration
);
results
.
append
(
item
);
}
}
else
if
(
const
NamedType
*
nt
=
declaration
->
type
()
->
asNamedType
())
{
#warning fix this code
qWarning
()
<<
Q_FUNC_INFO
<<
__LINE__
;
Symbol
*
declaration
=
_context
.
lookup
(
nt
->
name
(),
result
.
scope
()).
first
();
if
(
PointerType
*
ptrTy
=
declaration
->
type
()
->
asPointerType
())
{
FullySpecifiedType
elementTy
=
ptrTy
->
elementType
().
simplified
();
if
(
elementTy
->
isNamedType
()
||
elementTy
->
isClassType
())
{
LookupItem
item
;
item
.
setType
(
elementTy
);
item
.
setDeclaration
(
declaration
);
results
.
append
(
item
);
}
}
}
}
if
(
ClassOrNamespace
*
b
=
_context
.
classOrNamespace
(
namedTy
->
name
(),
result
.
scope
()))
{
foreach
(
Symbol
*
overload
,
b
->
find
(
arrowAccessOp
))
{
if
(
Function
*
funTy
=
overload
->
type
()
->
asFunctionType
())
{
FullySpecifiedType
f
=
instantiate
(
namedTy
->
name
(),
funTy
);
FullySpecifiedType
retTy
=
f
->
asFunctionType
()
->
returnType
().
simplified
();
if
(
PointerType
*
ptrTy
=
retTy
->
asPointerType
())
{
FullySpecifiedType
elementTy
=
ptrTy
->
elementType
().
simplified
();
LookupItem
item
;
item
.
setType
(
elementTy
);
item
.
setDeclaration
(
overload
);
results
.
append
(
item
);
}
}
}
}
}
else
if
(
PointerType
*
ptrTy
=
ty
->
asPointerType
())
{
FullySpecifiedType
elementTy
=
ptrTy
->
elementType
().
simplified
();
if
(
elementTy
->
isNamedType
()
||
elementTy
->
isClassType
())
{
LookupItem
item
;
item
.
setType
(
elementTy
);
item
.
setScope
(
scope
);
results
.
append
(
item
);
}
}
}
else
if
(
accessOp
==
T_DOT
)
{
if
(
replacedDotOperator
)
{
if
(
PointerType
*
ptrTy
=
ty
->
asPointerType
())
{
*
replacedDotOperator
=
true
;
ty
=
ptrTy
->
elementType
().
simplified
();
}
else
if
(
ArrayType
*
arrTy
=
ty
->
asArrayType
())
{
*
replacedDotOperator
=
true
;
ty
=
arrTy
->
elementType
().
simplified
();
}
}
if
(
NamedType
*
namedTy
=
ty
->
asNamedType
())
{
if
(
ClassOrNamespace
*
binding
=
_context
.
classOrNamespace
(
namedTy
->
name
(),
result
.
scope
()))
{
foreach
(
Symbol
*
s
,
binding
->
symbols
())
{
LookupItem
item
;
item
.
setType
(
s
->
type
());
item
.
setDeclaration
(
s
);
results
.
append
(
item
);
}
}
}
else
if
(
Function
*
fun
=
ty
->
asFunctionType
())
{
Scope
*
funScope
=
fun
->
scope
();
if
(
funScope
&&
(
funScope
->
isBlockScope
()
||
funScope
->
isNamespaceScope
()))
{
FullySpecifiedType
retTy
=
fun
->
returnType
().
simplified
();
LookupItem
item
;
item
.
setType
(
retTy
);
item
.
setDeclaration
(
fun
);
results
.
append
(
item
);
}
}
}
return
removeDuplicates
(
results
);
}
FullySpecifiedType
ResolveExpression
::
instantiate
(
const
Name
*
className
,
Symbol
*
candidate
)
const
{
return
GenTemplateInstance
::
instantiate
(
className
,
candidate
,
_context
.
control
());
...
...
src/libs/cplusplus/ResolveExpression.h
View file @
7edde41d
...
...
@@ -51,10 +51,6 @@ public:
int
accessOp
,
bool
*
replacedDotOperator
=
0
)
const
;
Q_DECL_DEPRECATED
QList
<
LookupItem
>
resolveBaseExpression
(
const
QList
<
LookupItem
>
&
baseResults
,
int
accessOp
,
bool
*
replacedDotOperator
=
0
)
const
;
protected:
ClassOrNamespace
*
findClass
(
const
FullySpecifiedType
&
ty
,
Scope
*
scope
)
const
;
...
...
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