summaryrefslogtreecommitdiffstats
path: root/src/util.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/util.cpp')
-rw-r--r--src/util.cpp20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/util.cpp b/src/util.cpp
index 6ac1585..b66932e 100644
--- a/src/util.cpp
+++ b/src/util.cpp
@@ -1593,6 +1593,12 @@ ClassDef *getResolvedClass(Definition *scope,
{
result = getResolvedClassRec(scope,fileScope,n,pTypeDef,pTemplSpec,pResolvedType);
}
+ if (result==0) // for nested classes imported via tag files, the scope may not
+ // present, so we check the class name directly as well.
+ // See also bug701314
+ {
+ result = getClass(n);
+ }
if (!mayBeUnlinkable && result && !result->isLinkable())
{
if (!mayBeHidden || !result->isHidden())
@@ -3905,7 +3911,7 @@ static void findMembersWithSpecificName(MemberName *mn,
* file fd.
*/
bool getDefs(const QCString &scName,
- const QCString &memberName,
+ const QCString &mbName,
const char *args,
MemberDef *&md,
ClassDef *&cd,
@@ -3919,10 +3925,12 @@ bool getDefs(const QCString &scName,
)
{
fd=0, md=0, cd=0, nd=0, gd=0;
- if (memberName.isEmpty()) return FALSE; /* empty name => nothing to link */
+ if (mbName.isEmpty()) return FALSE; /* empty name => nothing to link */
QCString scopeName=scName;
+ QCString memberName=mbName;
scopeName = substitute(scopeName,"\\","::"); // for PHP
+ memberName = substitute(memberName,"\\","::"); // for PHP
//printf("Search for name=%s args=%s in scope=%s forceEmpty=%d\n",
// memberName.data(),args,scopeName.data(),forceEmptyScope);
@@ -4594,6 +4602,14 @@ bool resolveRef(/* in */ const char *scName,
{
return resolveRef(scName,name,inSeeBlock,resContext,resMember,FALSE,0,checkScope);
}
+ if (bracePos!=-1) // Try without parameters as well, could be a contructor invocation
+ {
+ *resContext=getClass(fullName.left(bracePos));
+ if (*resContext)
+ {
+ return TRUE;
+ }
+ }
//printf("resolveRef: %s not found!\n",name);
return FALSE;