int_ptr->Integer::~Integer();
}
+namespace N {
+ int f(int);
+ float f(float);
+}
+
+template<typename T>
+void test_dependent_exprs(T t) {
+ N::f(t);
+}
+
// RUN: c-index-test -test-load-source all %s | FileCheck %s
// CHECK: load-stmts.cpp:1:13: TypedefDecl=T:1:13 (Definition) Extent=[1:13 - 1:14]
// CHECK: load-stmts.cpp:2:8: StructDecl=X:2:8 (Definition) Extent=[2:1 - 2:23]
// CHECK: load-stmts.cpp:38:3: DeclRefExpr=int_ptr:37:12 Extent=[38:3 - 38:10]
// CHECK: load-stmts.cpp:38:12: TypeRef=Integer:36:15 Extent=[38:12 - 38:19]
// CHECK: load-stmts.cpp:38:22: TypeRef=Integer:36:15 Extent=[38:22 - 38:29]
+// CHECK: load-stmts.cpp:47:6: FunctionTemplate=test_dependent_exprs:47:6 (Definition)
+// CHECK: load-stmts.cpp:48:3: CallExpr= Extent=[48:3 - 48:10]
+// CHECK: load-stmts.cpp:48:3: NamespaceRef=N:41:11 Extent=[48:3 - 48:4]
+// CHECK: load-stmts.cpp:48:8: DeclRefExpr=t:47:29 Extent=[48:8 - 48:9]
// FIXME: DesignatedInitExpr
bool VisitCXXTypeidExpr(CXXTypeidExpr *E);
bool VisitCXXDefaultArgExpr(CXXDefaultArgExpr *E) { return false; }
- // FIXME: CXXTemporaryObjectExpr has poor source-location information
- // FIXME: CXXScalarValueInitExpr has poor source-location information
+ // FIXME: CXXTemporaryObjectExpr has poor source-location information.
+ // FIXME: CXXScalarValueInitExpr has poor source-location information.
// FIXME: CXXNewExpr has poor source-location information
bool VisitCXXPseudoDestructorExpr(CXXPseudoDestructorExpr *E);
+ // FIXME: UnaryTypeTraitExpr has poor source-location information.
+ bool VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E);
};
} // end anonymous namespace
return false;
}
+bool CursorVisitor::VisitUnresolvedLookupExpr(UnresolvedLookupExpr *E) {
+ // Visit the nested-name-specifier.
+ if (NestedNameSpecifier *Qualifier = E->getQualifier())
+ if (VisitNestedNameSpecifier(Qualifier, E->getQualifierRange()))
+ return true;
+
+ // Visit the declaration name.
+ if (VisitDeclarationNameInfo(E->getNameInfo()))
+ return true;
+
+ // FIXME: We don't have a way to visit all of the declarations referenced
+ // here.
+ return false;
+}
+
bool CursorVisitor::VisitObjCMessageExpr(ObjCMessageExpr *E) {
if (TypeSourceInfo *TSInfo = E->getClassReceiverTypeInfo())
if (Visit(TSInfo->getTypeLoc()))