[cfe-commits] r75596 - in /cfe/trunk: test/Index/find-decls.c test/Index/find-refs.c test/Index/resolve-loc-input.c test/Index/resolve-loc.c test/Index/t1.c tools/index-test/index-test.cpp
Argiris Kirtzidis
akyrtzi at gmail.com
Mon Jul 13 20:18:40 PDT 2009
Author: akirtzidis
Date: Mon Jul 13 22:18:40 2009
New Revision: 75596
URL: http://llvm.org/viewvc/llvm-project?rev=75596&view=rev
Log:
Handle struct fields through the index-test tool.
Modified:
cfe/trunk/test/Index/find-decls.c
cfe/trunk/test/Index/find-refs.c
cfe/trunk/test/Index/resolve-loc-input.c
cfe/trunk/test/Index/resolve-loc.c
cfe/trunk/test/Index/t1.c
cfe/trunk/tools/index-test/index-test.cpp
Modified: cfe/trunk/test/Index/find-decls.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/find-decls.c?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/test/Index/find-decls.c (original)
+++ cfe/trunk/test/Index/find-decls.c Mon Jul 13 22:18:40 2009
@@ -6,4 +6,10 @@
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:47 -print-decls | count 1 &&
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:47 -print-decls | grep 't1.c:5:12,' &&
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:6:20 -print-decls | count 1 &&
-// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:6:20 -print-decls | grep 't1.c:3:19,'
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:6:20 -print-decls | grep 't1.c:3:19,' &&
+
+// field test
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:21:6 -print-decls | count 1 &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:21:6 -print-decls | grep 't1.c:12:7,' &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:22:21 -print-decls | count 1 &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:22:21 -print-decls | grep 't1.c:16:7,'
Modified: cfe/trunk/test/Index/find-refs.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/find-refs.c?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/test/Index/find-refs.c (original)
+++ cfe/trunk/test/Index/find-refs.c Mon Jul 13 22:18:40 2009
@@ -15,4 +15,11 @@
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:30 -print-refs | count 3 &&
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:30 -print-refs | grep 't1.c:5:27,' &&
// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:30 -print-refs | grep 't1.c:5:44,' &&
-// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:30 -print-refs | grep 't1.c:6:26,'
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:5:30 -print-refs | grep 't1.c:6:26,' &&
+
+// field test
+// FIXME: References point at the start of MemberExpr, make them point at the field instead.
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:12:7 -print-refs | count 1 &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:12:7 -print-refs | grep 't1.c:21:3,' &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:16:7 -print-refs | count 1 &&
+// RUN: index-test %t1.ast %t2.ast -point-at %S/t1.c:16:7 -print-refs | grep 't1.c:22:3,'
Modified: cfe/trunk/test/Index/resolve-loc-input.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/resolve-loc-input.c?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/test/Index/resolve-loc-input.c (original)
+++ cfe/trunk/test/Index/resolve-loc-input.c Mon Jul 13 22:18:40 2009
@@ -8,3 +8,7 @@
int local_var2 = for_var + 1;
}
}
+
+struct S {
+ int field_var;
+};
Modified: cfe/trunk/test/Index/resolve-loc.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/resolve-loc.c?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/test/Index/resolve-loc.c (original)
+++ cfe/trunk/test/Index/resolve-loc.c Mon Jul 13 22:18:40 2009
@@ -11,3 +11,6 @@
// RUN: index-test %t.ast -point-at %S/resolve-loc-input.c:8:9 | grep local_var2 &&
// RUN: index-test %t.ast -point-at %S/resolve-loc-input.c:8:30 | grep local_var2 &&
// RUN: index-test %t.ast -point-at %S/resolve-loc-input.c:8:30 | grep 'for_var + 1' &&
+
+// fields test.
+// RUN: index-test %t.ast -point-at %S/resolve-loc-input.c:13:10 | grep field_var
Modified: cfe/trunk/test/Index/t1.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/Index/t1.c?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/test/Index/t1.c (original)
+++ cfe/trunk/test/Index/t1.c Mon Jul 13 22:18:40 2009
@@ -7,3 +7,17 @@
}
bar_func();
}
+
+struct S1 {
+ int x;
+};
+
+struct S2 {
+ int x;
+};
+
+void field_test(void) {
+ struct S1 s1;
+ s1.x = 0;
+ ((struct S2 *)0)->x = 0;
+}
Modified: cfe/trunk/tools/index-test/index-test.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/index-test/index-test.cpp?rev=75596&r1=75595&r2=75596&view=diff
==============================================================================
--- cfe/trunk/tools/index-test/index-test.cpp (original)
+++ cfe/trunk/tools/index-test/index-test.cpp Mon Jul 13 22:18:40 2009
@@ -95,6 +95,8 @@
llvm::cl::desc("Disable freeing of memory on exit"),
llvm::cl::init(false));
+static bool HadErrors = false;
+
static void ProcessDecl(Decl *D) {
assert(D);
llvm::raw_ostream &OS = llvm::outs();
@@ -155,10 +157,17 @@
if (ASTLoc.isStmt()) {
if (DeclRefExpr *RefExpr = dyn_cast<DeclRefExpr>(ASTLoc.getStmt()))
D = RefExpr->getDecl();
+ else if (MemberExpr *ME = dyn_cast<MemberExpr>(ASTLoc.getStmt()))
+ D = ME->getMemberDecl();
} else {
D = ASTLoc.getDecl();
}
- assert(D);
+
+ if (D == 0) {
+ llvm::errs() << "Error: Couldn't get a Decl out of the ASTLocation";
+ HadErrors = true;
+ return;
+ }
Entity *Ent = Entity::get(D, IdxProvider.getProgram());
// If there is no Entity associated with this Decl, it means that it's not
@@ -267,6 +276,9 @@
ProcessASTLocation(ASTLoc, IdxProvider);
}
}
+
+ if (HadErrors)
+ return 1;
if (!DisableFree) {
for (int i=0, e=TUnits.size(); i != e; ++i)
More information about the cfe-commits
mailing list