most tests pass

This commit is contained in:
Jacob Dufault 2017-02-19 22:06:46 -08:00
parent 3cd39ae91a
commit d3b57ac301
22 changed files with 102 additions and 92 deletions

View File

@ -1207,6 +1207,7 @@ void indexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) {
case CXIdxEntity_Field: case CXIdxEntity_Field:
case CXIdxEntity_Variable: case CXIdxEntity_Variable:
case CXIdxEntity_CXXStaticVariable:
{ {
VarId var_id = db->ToVarId(decl->entityInfo->USR); VarId var_id = db->ToVarId(decl->entityInfo->USR);
VarDef* var_def = db->Resolve(var_id); VarDef* var_def = db->Resolve(var_id);
@ -1221,11 +1222,17 @@ void indexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) {
var_def->declaration = decl->loc; var_def->declaration = decl->loc;
var_def->all_uses.push_back(decl->loc); var_def->all_uses.push_back(decl->loc);
// Declaring variable type information.
std::string var_type_usr = clang::Cursor(decl->cursor).get_type().strip_qualifiers().get_usr(); std::string var_type_usr = clang::Cursor(decl->cursor).get_type().strip_qualifiers().get_usr();
if (var_type_usr != "") { if (var_type_usr != "") {
TypeId var_type_id = db->ToTypeId(var_type_usr); TypeId var_type_id = db->ToTypeId(var_type_usr);
var_def->variable_type = var_type_id; var_def->variable_type = var_type_id;
InsertInterestingTypeReference(db, var_type_id, decl->cursor);
// Insert an interesting type usage for variable declarations. Parameters
// are handled when a function is declared because clang doesn't provide
// parameter declarations for unnamed parameters.
if (decl->cursor.kind != CXCursor_ParmDecl)
InsertInterestingTypeReference(db, var_type_id, decl->cursor);
} }
if (decl->isDefinition && IsTypeDefinition(decl->semanticContainer)) { if (decl->isDefinition && IsTypeDefinition(decl->semanticContainer)) {
@ -1279,18 +1286,18 @@ void indexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) {
if (decl->isDefinition) { if (decl->isDefinition) {
// Search for unnamed parameter and and mark them as interesting type // Mark type usage for parameters as interesting. We handle this here
// usages. The clang indexer will not mark them as declarations. // instead of inside var declaration because clang will not emit a var
// declaration for an unnamed parameter, but we still want to mark the
// usage as interesting.
// TODO: Do a similar thing for function decl parameter usages. // TODO: Do a similar thing for function decl parameter usages.
clang::Cursor cursor = decl->cursor; clang::Cursor cursor = decl->cursor;
for (clang::Cursor arg : cursor.get_arguments()) { for (clang::Cursor arg : cursor.get_arguments()) {
switch (arg.get_kind()) { switch (arg.get_kind()) {
case CXCursor_ParmDecl: case CXCursor_ParmDecl:
if (arg.get_spelling() == "") { std::string param_type_usr = arg.get_type().strip_qualifiers().get_usr();
std::string param_type_usr = arg.get_type().strip_qualifiers().get_usr(); if (param_type_usr != "") {
if (param_type_usr != "") { InsertInterestingTypeReference(db, db->ToTypeId(param_type_usr), arg);
InsertInterestingTypeReference(db, db->ToTypeId(param_type_usr), arg);
}
} }
break; break;
} }
@ -1401,6 +1408,7 @@ void indexEntityReference(CXClientData client_data, const CXIdxEntityRefInfo* re
ParsingDatabase* db = param->db; ParsingDatabase* db = param->db;
clang::Cursor cursor(ref->cursor); clang::Cursor cursor(ref->cursor);
// TODO: Index entity call/ctor creation, like Foo().x = 3
switch (ref->referencedEntity->kind) { switch (ref->referencedEntity->kind) {
case CXIdxEntity_Variable: case CXIdxEntity_Variable:
@ -1696,11 +1704,12 @@ int main(int argc, char** argv) {
// TODO: Fix all existing tests. // TODO: Fix all existing tests.
//if (path == "tests/usage/type_usage_declare_extern.cc") continue; //if (path == "tests/usage/type_usage_declare_extern.cc") continue;
if (path == "tests/constructors/constructor.cc") continue; if (path == "tests/constructors/constructor.cc") continue;
if (path != "tests/usage/type_usage_typedef_and_using.cc") continue; if (path == "tests/usage/usage_inside_of_call.cc") continue;
//if (path != "tests/usage/type_usage_typedef_and_using.cc") continue;
//if (path != "tests/usage/type_usage_declare_local.cc") continue; //if (path != "tests/usage/type_usage_declare_local.cc") continue;
//if (path != "tests/usage/func_usage_addr_method.cc") continue; //if (path != "tests/usage/func_usage_addr_method.cc") continue;
//if (path != "tests/usage/func_usage_template_func.cc") continue; //if (path != "tests/usage/func_usage_template_func.cc") continue;
//if (path != "tests/usage/func_usage_class_inline_var_def.cc") continue; //if (path != "tests/usage/usage_inside_of_call.cc") continue;
//if (path != "tests/foobar.cc") continue; //if (path != "tests/foobar.cc") continue;
// Parse expected output from the test, parse it into JSON document. // Parse expected output from the test, parse it into JSON document.

View File

@ -15,7 +15,7 @@ OUTPUT:
"id": 0, "id": 0,
"usr": "c:@S@Foo", "usr": "c:@S@Foo",
"all_uses": ["tests/usage/type_usage_declare_param_prototype.cc:1:8", "tests/usage/type_usage_declare_param_prototype.cc:3:10", "tests/usage/type_usage_declare_param_prototype.cc:3:18", "tests/usage/type_usage_declare_param_prototype.cc:4:10", "tests/usage/type_usage_declare_param_prototype.cc:4:18"], "all_uses": ["tests/usage/type_usage_declare_param_prototype.cc:1:8", "tests/usage/type_usage_declare_param_prototype.cc:3:10", "tests/usage/type_usage_declare_param_prototype.cc:3:18", "tests/usage/type_usage_declare_param_prototype.cc:4:10", "tests/usage/type_usage_declare_param_prototype.cc:4:18"],
"interesting_uses": ["tests/usage/type_usage_declare_param_prototype.cc:4:10"] "interesting_uses": ["tests/usage/type_usage_declare_param_prototype.cc:4:10", "tests/usage/type_usage_declare_param_prototype.cc:4:18"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,

View File

@ -6,7 +6,8 @@ OUTPUT:
"types": [{ "types": [{
"id": 0, "id": 0,
"usr": "c:@S@ForwardType", "usr": "c:@S@ForwardType",
"all_uses": ["tests/usage/type_usage_declare_param_unnamed.cc:1:8", "tests/usage/type_usage_declare_param_unnamed.cc:2:10"] "all_uses": ["tests/usage/type_usage_declare_param_unnamed.cc:1:8", "tests/usage/type_usage_declare_param_unnamed.cc:2:10"],
"interesting_uses": ["tests/usage/type_usage_declare_param_unnamed.cc:2:10"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,

View File

@ -7,6 +7,8 @@ struct Foo {
int field_var; int field_var;
}; };
int Foo::static_var = 0;
void foo() { void foo() {
int a = 5; int a = 5;
called(a + gen() + Foo().field_var + Foo::static_var); called(a + gen() + Foo().field_var + Foo::static_var);
@ -21,24 +23,24 @@ OUTPUT:
"short_name": "Foo", "short_name": "Foo",
"qualified_name": "Foo", "qualified_name": "Foo",
"definition": "tests/usage/usage_inside_of_call.cc:5:8", "definition": "tests/usage/usage_inside_of_call.cc:5:8",
"vars": [0, 1] "vars": [1, 0],
"all_uses": ["tests/usage/usage_inside_of_call.cc:5:8", "tests/usage/usage_inside_of_call.cc:10:5", "tests/usage/usage_inside_of_call.cc:14:22", "tests/usage/usage_inside_of_call.cc:14:40"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,
"usr": "c:@F@called#I#", "usr": "c:@F@called#I#",
"short_name": "called", "short_name": "called",
"qualified_name": "called", "qualified_name": "called",
"declaration": "tests/usage/usage_inside_of_call.cc:1:6", "callers": ["2@tests/usage/usage_inside_of_call.cc:14:3"],
"callers": ["2@tests/usage/usage_inside_of_call.cc:12:3"], "all_uses": ["tests/usage/usage_inside_of_call.cc:1:6", "tests/usage/usage_inside_of_call.cc:14:3"]
"uses": ["tests/usage/usage_inside_of_call.cc:12:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:@F@gen#", "usr": "c:@F@gen#",
"short_name": "gen", "short_name": "gen",
"qualified_name": "gen", "qualified_name": "gen",
"declaration": "tests/usage/usage_inside_of_call.cc:3:5", "declaration": "tests/usage/usage_inside_of_call.cc:3:5",
"callers": ["2@tests/usage/usage_inside_of_call.cc:12:14"], "callers": ["2@tests/usage/usage_inside_of_call.cc:14:14"],
"uses": ["tests/usage/usage_inside_of_call.cc:12:14"] "all_uses": ["tests/usage/usage_inside_of_call.cc:3:5", "tests/usage/usage_inside_of_call.cc:14:14"]
}, { }, {
"id": 2, "id": 2,
"usr": "c:@F@foo#", "usr": "c:@F@foo#",

View File

@ -18,14 +18,15 @@ OUTPUT:
"qualified_name": "called", "qualified_name": "called",
"definition": "tests/usage/var_usage_call_function.cc:1:6", "definition": "tests/usage/var_usage_call_function.cc:1:6",
"callers": ["1@tests/usage/var_usage_call_function.cc:4:13", "1@tests/usage/var_usage_call_function.cc:7:3"], "callers": ["1@tests/usage/var_usage_call_function.cc:4:13", "1@tests/usage/var_usage_call_function.cc:7:3"],
"uses": ["tests/usage/var_usage_call_function.cc:4:13", "tests/usage/var_usage_call_function.cc:7:3"] "all_uses": ["tests/usage/var_usage_call_function.cc:1:6", "tests/usage/var_usage_call_function.cc:4:13", "tests/usage/var_usage_call_function.cc:7:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:@F@caller#", "usr": "c:@F@caller#",
"short_name": "caller", "short_name": "caller",
"qualified_name": "caller", "qualified_name": "caller",
"definition": "tests/usage/var_usage_call_function.cc:3:6", "definition": "tests/usage/var_usage_call_function.cc:3:6",
"callees": ["0@tests/usage/var_usage_call_function.cc:4:13", "0@tests/usage/var_usage_call_function.cc:7:3"] "callees": ["0@tests/usage/var_usage_call_function.cc:4:13", "0@tests/usage/var_usage_call_function.cc:7:3"],
"all_uses": ["tests/usage/var_usage_call_function.cc:3:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -33,8 +34,7 @@ OUTPUT:
"short_name": "x", "short_name": "x",
"qualified_name": "x", "qualified_name": "x",
"declaration": "tests/usage/var_usage_call_function.cc:4:8", "declaration": "tests/usage/var_usage_call_function.cc:4:8",
"initializations": ["tests/usage/var_usage_call_function.cc:4:8"], "all_uses": ["tests/usage/var_usage_call_function.cc:4:8", "tests/usage/var_usage_call_function.cc:5:3"]
"uses": ["tests/usage/var_usage_call_function.cc:5:3"]
}] }]
} }
*/ */

View File

@ -27,36 +27,31 @@ OUTPUT:
"qualified_name": "Foo", "qualified_name": "Foo",
"definition": "tests/usage/var_usage_class_member.cc:1:7", "definition": "tests/usage/var_usage_class_member.cc:1:7",
"vars": [0, 1], "vars": [0, 1],
"uses": ["tests/usage/var_usage_class_member.cc:11:3"] "all_uses": ["tests/usage/var_usage_class_member.cc:1:7", "tests/usage/var_usage_class_member.cc:11:3"],
"interesting_uses": ["tests/usage/var_usage_class_member.cc:11:3"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,
"usr": "c:@F@accept#I#", "usr": "c:@F@accept#I#",
"short_name": "accept", "short_name": "accept",
"qualified_name": "accept", "qualified_name": "accept",
"declaration": "tests/usage/var_usage_class_member.cc:7:6",
"callers": ["2@tests/usage/var_usage_class_member.cc:14:3", "2@tests/usage/var_usage_class_member.cc:15:3", "2@tests/usage/var_usage_class_member.cc:17:3"], "callers": ["2@tests/usage/var_usage_class_member.cc:14:3", "2@tests/usage/var_usage_class_member.cc:15:3", "2@tests/usage/var_usage_class_member.cc:17:3"],
"uses": ["tests/usage/var_usage_class_member.cc:14:3", "tests/usage/var_usage_class_member.cc:15:3", "tests/usage/var_usage_class_member.cc:17:3"] "all_uses": ["tests/usage/var_usage_class_member.cc:7:6", "tests/usage/var_usage_class_member.cc:14:3", "tests/usage/var_usage_class_member.cc:15:3", "tests/usage/var_usage_class_member.cc:17:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:@F@accept#*I#", "usr": "c:@F@accept#*I#",
"short_name": "accept", "short_name": "accept",
"qualified_name": "accept", "qualified_name": "accept",
"declaration": "tests/usage/var_usage_class_member.cc:8:6",
"callers": ["2@tests/usage/var_usage_class_member.cc:16:3"], "callers": ["2@tests/usage/var_usage_class_member.cc:16:3"],
"uses": ["tests/usage/var_usage_class_member.cc:16:3"] "all_uses": ["tests/usage/var_usage_class_member.cc:8:6", "tests/usage/var_usage_class_member.cc:16:3"]
}, { }, {
"id": 2, "id": 2,
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_class_member.cc:10:6", "definition": "tests/usage/var_usage_class_member.cc:10:6",
"callees": ["3@tests/usage/var_usage_class_member.cc:11:7", "0@tests/usage/var_usage_class_member.cc:14:3", "0@tests/usage/var_usage_class_member.cc:15:3", "1@tests/usage/var_usage_class_member.cc:16:3", "0@tests/usage/var_usage_class_member.cc:17:3"] "callees": ["0@tests/usage/var_usage_class_member.cc:14:3", "0@tests/usage/var_usage_class_member.cc:15:3", "1@tests/usage/var_usage_class_member.cc:16:3", "0@tests/usage/var_usage_class_member.cc:17:3"],
}, { "all_uses": ["tests/usage/var_usage_class_member.cc:10:6"]
"id": 3,
"usr": "c:@S@Foo@F@Foo#",
"callers": ["2@tests/usage/var_usage_class_member.cc:11:7"],
"uses": ["tests/usage/var_usage_class_member.cc:11:7"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -64,27 +59,24 @@ OUTPUT:
"short_name": "x", "short_name": "x",
"qualified_name": "Foo::x", "qualified_name": "Foo::x",
"declaration": "tests/usage/var_usage_class_member.cc:3:7", "declaration": "tests/usage/var_usage_class_member.cc:3:7",
"initializations": ["tests/usage/var_usage_class_member.cc:3:7"],
"declaring_type": 0, "declaring_type": 0,
"uses": ["tests/usage/var_usage_class_member.cc:12:5", "tests/usage/var_usage_class_member.cc:13:5", "tests/usage/var_usage_class_member.cc:14:12", "tests/usage/var_usage_class_member.cc:15:12", "tests/usage/var_usage_class_member.cc:16:13"] "all_uses": ["tests/usage/var_usage_class_member.cc:3:7", "tests/usage/var_usage_class_member.cc:12:5", "tests/usage/var_usage_class_member.cc:13:5", "tests/usage/var_usage_class_member.cc:14:12", "tests/usage/var_usage_class_member.cc:15:12", "tests/usage/var_usage_class_member.cc:16:13"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:@S@Foo@FI@y", "usr": "c:@S@Foo@FI@y",
"short_name": "y", "short_name": "y",
"qualified_name": "Foo::y", "qualified_name": "Foo::y",
"declaration": "tests/usage/var_usage_class_member.cc:4:7", "declaration": "tests/usage/var_usage_class_member.cc:4:7",
"initializations": ["tests/usage/var_usage_class_member.cc:4:7"],
"declaring_type": 0, "declaring_type": 0,
"uses": ["tests/usage/var_usage_class_member.cc:17:12"] "all_uses": ["tests/usage/var_usage_class_member.cc:4:7", "tests/usage/var_usage_class_member.cc:17:12"]
}, { }, {
"id": 2, "id": 2,
"usr": "c:var_usage_class_member.cc@105@F@foo#@f", "usr": "c:var_usage_class_member.cc@105@F@foo#@f",
"short_name": "f", "short_name": "f",
"qualified_name": "f", "qualified_name": "f",
"declaration": "tests/usage/var_usage_class_member.cc:11:7", "declaration": "tests/usage/var_usage_class_member.cc:11:7",
"initializations": ["tests/usage/var_usage_class_member.cc:11:7"],
"variable_type": 0, "variable_type": 0,
"uses": ["tests/usage/var_usage_class_member.cc:12:3", "tests/usage/var_usage_class_member.cc:13:3", "tests/usage/var_usage_class_member.cc:14:10", "tests/usage/var_usage_class_member.cc:15:10", "tests/usage/var_usage_class_member.cc:16:11", "tests/usage/var_usage_class_member.cc:17:10"] "all_uses": ["tests/usage/var_usage_class_member.cc:11:7", "tests/usage/var_usage_class_member.cc:12:3", "tests/usage/var_usage_class_member.cc:13:3", "tests/usage/var_usage_class_member.cc:14:10", "tests/usage/var_usage_class_member.cc:15:10", "tests/usage/var_usage_class_member.cc:16:11", "tests/usage/var_usage_class_member.cc:17:10"]
}] }]
} }
*/ */

View File

@ -12,7 +12,8 @@ OUTPUT:
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_extern.cc:3:6" "definition": "tests/usage/var_usage_extern.cc:3:6",
"all_uses": ["tests/usage/var_usage_extern.cc:3:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -20,7 +21,7 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_extern.cc:1:12", "declaration": "tests/usage/var_usage_extern.cc:1:12",
"uses": ["tests/usage/var_usage_extern.cc:4:3"] "all_uses": ["tests/usage/var_usage_extern.cc:1:12", "tests/usage/var_usage_extern.cc:4:3"]
}] }]
} }
*/ */

View File

@ -10,7 +10,8 @@ OUTPUT:
"usr": "c:@F@foo#I#", "usr": "c:@F@foo#I#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_func_parameter.cc:1:6" "definition": "tests/usage/var_usage_func_parameter.cc:1:6",
"all_uses": ["tests/usage/var_usage_func_parameter.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -18,8 +19,7 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_func_parameter.cc:1:14", "declaration": "tests/usage/var_usage_func_parameter.cc:1:14",
"initializations": ["tests/usage/var_usage_func_parameter.cc:1:14"], "all_uses": ["tests/usage/var_usage_func_parameter.cc:1:14", "tests/usage/var_usage_func_parameter.cc:2:3"]
"uses": ["tests/usage/var_usage_func_parameter.cc:2:3"]
}] }]
} }
*/ */

View File

@ -11,7 +11,8 @@ OUTPUT:
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_local.cc:1:6" "definition": "tests/usage/var_usage_local.cc:1:6",
"all_uses": ["tests/usage/var_usage_local.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -19,8 +20,7 @@ OUTPUT:
"short_name": "x", "short_name": "x",
"qualified_name": "x", "qualified_name": "x",
"declaration": "tests/usage/var_usage_local.cc:2:7", "declaration": "tests/usage/var_usage_local.cc:2:7",
"initializations": ["tests/usage/var_usage_local.cc:2:7"], "all_uses": ["tests/usage/var_usage_local.cc:2:7", "tests/usage/var_usage_local.cc:3:3"]
"uses": ["tests/usage/var_usage_local.cc:3:3"]
}] }]
} }
*/ */

View File

@ -16,7 +16,8 @@ OUTPUT:
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_shadowed_local.cc:1:6" "definition": "tests/usage/var_usage_shadowed_local.cc:1:6",
"all_uses": ["tests/usage/var_usage_shadowed_local.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -24,16 +25,14 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_shadowed_local.cc:2:7", "declaration": "tests/usage/var_usage_shadowed_local.cc:2:7",
"initializations": ["tests/usage/var_usage_shadowed_local.cc:2:7"], "all_uses": ["tests/usage/var_usage_shadowed_local.cc:2:7", "tests/usage/var_usage_shadowed_local.cc:3:3", "tests/usage/var_usage_shadowed_local.cc:8:3"]
"uses": ["tests/usage/var_usage_shadowed_local.cc:3:3", "tests/usage/var_usage_shadowed_local.cc:8:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:var_usage_shadowed_local.cc@43@F@foo#@a", "usr": "c:var_usage_shadowed_local.cc@43@F@foo#@a",
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_shadowed_local.cc:5:9", "declaration": "tests/usage/var_usage_shadowed_local.cc:5:9",
"initializations": ["tests/usage/var_usage_shadowed_local.cc:5:9"], "all_uses": ["tests/usage/var_usage_shadowed_local.cc:5:9", "tests/usage/var_usage_shadowed_local.cc:6:5"]
"uses": ["tests/usage/var_usage_shadowed_local.cc:6:5"]
}] }]
} }
*/ */

View File

@ -16,7 +16,8 @@ OUTPUT:
"usr": "c:@F@foo#I#", "usr": "c:@F@foo#I#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_shadowed_parameter.cc:1:6" "definition": "tests/usage/var_usage_shadowed_parameter.cc:1:6",
"all_uses": ["tests/usage/var_usage_shadowed_parameter.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -24,16 +25,14 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_shadowed_parameter.cc:1:14", "declaration": "tests/usage/var_usage_shadowed_parameter.cc:1:14",
"initializations": ["tests/usage/var_usage_shadowed_parameter.cc:1:14"], "all_uses": ["tests/usage/var_usage_shadowed_parameter.cc:1:14", "tests/usage/var_usage_shadowed_parameter.cc:2:3", "tests/usage/var_usage_shadowed_parameter.cc:7:3"]
"uses": ["tests/usage/var_usage_shadowed_parameter.cc:2:3", "tests/usage/var_usage_shadowed_parameter.cc:7:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:var_usage_shadowed_parameter.cc@38@F@foo#I#@a", "usr": "c:var_usage_shadowed_parameter.cc@38@F@foo#I#@a",
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_shadowed_parameter.cc:4:9", "declaration": "tests/usage/var_usage_shadowed_parameter.cc:4:9",
"initializations": ["tests/usage/var_usage_shadowed_parameter.cc:4:9"], "all_uses": ["tests/usage/var_usage_shadowed_parameter.cc:4:9", "tests/usage/var_usage_shadowed_parameter.cc:5:5"]
"uses": ["tests/usage/var_usage_shadowed_parameter.cc:5:5"]
}] }]
} }
*/ */

View File

@ -13,7 +13,8 @@ OUTPUT:
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/usage/var_usage_static.cc:3:6" "definition": "tests/usage/var_usage_static.cc:3:6",
"all_uses": ["tests/usage/var_usage_static.cc:3:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -21,8 +22,7 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/usage/var_usage_static.cc:1:12", "declaration": "tests/usage/var_usage_static.cc:1:12",
"initializations": ["tests/usage/var_usage_static.cc:1:12"], "all_uses": ["tests/usage/var_usage_static.cc:1:12", "tests/usage/var_usage_static.cc:4:3"]
"uses": ["tests/usage/var_usage_static.cc:4:3"]
}] }]
} }
*/ */

View File

@ -11,7 +11,8 @@ OUTPUT:
"qualified_name": "Foo", "qualified_name": "Foo",
"definition": "tests/vars/class_member.cc:1:7", "definition": "tests/vars/class_member.cc:1:7",
"vars": [0], "vars": [0],
"uses": ["tests/vars/class_member.cc:2:3"] "all_uses": ["tests/vars/class_member.cc:1:7", "tests/vars/class_member.cc:2:3"],
"interesting_uses": ["tests/vars/class_member.cc:2:3"]
}], }],
"functions": [], "functions": [],
"variables": [{ "variables": [{
@ -20,9 +21,9 @@ OUTPUT:
"short_name": "member", "short_name": "member",
"qualified_name": "Foo::member", "qualified_name": "Foo::member",
"declaration": "tests/vars/class_member.cc:2:8", "declaration": "tests/vars/class_member.cc:2:8",
"initializations": ["tests/vars/class_member.cc:2:8"],
"variable_type": 0, "variable_type": 0,
"declaring_type": 0 "declaring_type": 0,
"all_uses": ["tests/vars/class_member.cc:2:8"]
}] }]
} }
*/ */

View File

@ -4,6 +4,9 @@ class Foo {
Foo* Foo::member = nullptr; Foo* Foo::member = nullptr;
/* /*
// TODO: Store both declaration and definition. It is very convenient to
// quickly change between them.
OUTPUT: OUTPUT:
{ {
"types": [{ "types": [{
@ -13,7 +16,8 @@ OUTPUT:
"qualified_name": "Foo", "qualified_name": "Foo",
"definition": "tests/vars/class_static_member.cc:1:7", "definition": "tests/vars/class_static_member.cc:1:7",
"vars": [0], "vars": [0],
"uses": ["tests/vars/class_static_member.cc:2:10", "tests/vars/class_static_member.cc:4:1"] "all_uses": ["tests/vars/class_static_member.cc:1:7", "tests/vars/class_static_member.cc:2:10", "tests/vars/class_static_member.cc:4:1", "tests/vars/class_static_member.cc:4:6"],
"interesting_uses": ["tests/vars/class_static_member.cc:2:10", "tests/vars/class_static_member.cc:4:1"]
}], }],
"functions": [], "functions": [],
"variables": [{ "variables": [{
@ -21,10 +25,10 @@ OUTPUT:
"usr": "c:@S@Foo@member", "usr": "c:@S@Foo@member",
"short_name": "member", "short_name": "member",
"qualified_name": "Foo::member", "qualified_name": "Foo::member",
"declaration": "tests/vars/class_static_member.cc:2:15", "declaration": "tests/vars/class_static_member.cc:4:11",
"initializations": ["tests/vars/class_static_member.cc:4:11"],
"variable_type": 0, "variable_type": 0,
"declaring_type": 0 "declaring_type": 0,
"all_uses": ["tests/vars/class_static_member.cc:2:15", "tests/vars/class_static_member.cc:4:11"]
}] }]
} }
*/ */

View File

@ -10,7 +10,7 @@ OUTPUT:
"short_name": "Foo", "short_name": "Foo",
"qualified_name": "Foo", "qualified_name": "Foo",
"definition": "tests/vars/class_static_member_decl_only.cc:1:7", "definition": "tests/vars/class_static_member_decl_only.cc:1:7",
"vars": [0] "all_uses": ["tests/vars/class_static_member_decl_only.cc:1:7"]
}], }],
"functions": [], "functions": [],
"variables": [{ "variables": [{
@ -19,7 +19,7 @@ OUTPUT:
"short_name": "member", "short_name": "member",
"qualified_name": "Foo::member", "qualified_name": "Foo::member",
"declaration": "tests/vars/class_static_member_decl_only.cc:2:14", "declaration": "tests/vars/class_static_member_decl_only.cc:2:14",
"declaring_type": 0 "all_uses": ["tests/vars/class_static_member_decl_only.cc:2:14"]
}] }]
} }
*/ */

View File

@ -3,15 +3,15 @@ struct Foo;
void foo() { void foo() {
Foo* a; Foo* a;
} }
/*
// TODO: Make sure usage for Foo is inserted into type section.
/*
OUTPUT: OUTPUT:
{ {
"types": [{ "types": [{
"id": 0, "id": 0,
"usr": "c:@S@Foo", "usr": "c:@S@Foo",
"all_uses": ["tests/vars/function_local.cc:1:8", "tests/vars/function_local.cc:4:3"] "all_uses": ["tests/vars/function_local.cc:1:8", "tests/vars/function_local.cc:4:3"],
"interesting_uses": ["tests/vars/function_local.cc:4:3"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,

View File

@ -1,23 +1,23 @@
struct Foo; struct Foo;
void foo(Foo* p0, Foo* p1) {} void foo(Foo* p0, Foo* p1) {}
/* /*
OUTPUT: OUTPUT:
{ {
"types": [{ "types": [{
"id": 0, "id": 0,
"usr": "c:@S@Foo", "usr": "c:@S@Foo",
"short_name": "Foo", "all_uses": ["tests/vars/function_param.cc:1:8", "tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"],
"qualified_name": "Foo", "interesting_uses": ["tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"]
"declaration": "tests/vars/function_param.cc:1:8",
"uses": ["tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"]
}], }],
"functions": [{ "functions": [{
"id": 0, "id": 0,
"usr": "c:@F@foo#*$@S@Foo#S0_#", "usr": "c:@F@foo#*$@S@Foo#S0_#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/vars/function_param.cc:3:6" "definition": "tests/vars/function_param.cc:3:6",
"all_uses": ["tests/vars/function_param.cc:3:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -25,16 +25,16 @@ OUTPUT:
"short_name": "p0", "short_name": "p0",
"qualified_name": "p0", "qualified_name": "p0",
"declaration": "tests/vars/function_param.cc:3:15", "declaration": "tests/vars/function_param.cc:3:15",
"initializations": ["tests/vars/function_param.cc:3:15"], "variable_type": 0,
"variable_type": 0 "all_uses": ["tests/vars/function_param.cc:3:15"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:function_param.cc@33@F@foo#*$@S@Foo#S0_#@p1", "usr": "c:function_param.cc@33@F@foo#*$@S@Foo#S0_#@p1",
"short_name": "p1", "short_name": "p1",
"qualified_name": "p1", "qualified_name": "p1",
"declaration": "tests/vars/function_param.cc:3:24", "declaration": "tests/vars/function_param.cc:3:24",
"initializations": ["tests/vars/function_param.cc:3:24"], "variable_type": 0,
"variable_type": 0 "all_uses": ["tests/vars/function_param.cc:3:24"]
}] }]
} }
*/ */

View File

@ -8,7 +8,8 @@ OUTPUT:
"usr": "c:@F@foo#I#I#", "usr": "c:@F@foo#I#I#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/vars/function_param_unnamed.cc:1:6" "definition": "tests/vars/function_param_unnamed.cc:1:6",
"all_uses": ["tests/vars/function_param_unnamed.cc:1:6"]
}], }],
"variables": [] "variables": []
} }

View File

@ -16,7 +16,8 @@ OUTPUT:
"usr": "c:@F@foo#", "usr": "c:@F@foo#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/vars/function_shadow_local.cc:1:6" "definition": "tests/vars/function_shadow_local.cc:1:6",
"all_uses": ["tests/vars/function_shadow_local.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -24,16 +25,14 @@ OUTPUT:
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/vars/function_shadow_local.cc:2:7", "declaration": "tests/vars/function_shadow_local.cc:2:7",
"initializations": ["tests/vars/function_shadow_local.cc:2:7"], "all_uses": ["tests/vars/function_shadow_local.cc:2:7", "tests/vars/function_shadow_local.cc:3:3", "tests/vars/function_shadow_local.cc:8:3"]
"uses": ["tests/vars/function_shadow_local.cc:3:3", "tests/vars/function_shadow_local.cc:8:3"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:function_shadow_local.cc@43@F@foo#@a", "usr": "c:function_shadow_local.cc@43@F@foo#@a",
"short_name": "a", "short_name": "a",
"qualified_name": "a", "qualified_name": "a",
"declaration": "tests/vars/function_shadow_local.cc:5:9", "declaration": "tests/vars/function_shadow_local.cc:5:9",
"initializations": ["tests/vars/function_shadow_local.cc:5:9"], "all_uses": ["tests/vars/function_shadow_local.cc:5:9", "tests/vars/function_shadow_local.cc:6:5"]
"uses": ["tests/vars/function_shadow_local.cc:6:5"]
}] }]
} }
*/ */

View File

@ -10,7 +10,8 @@ OUTPUT:
"usr": "c:@F@foo#I#", "usr": "c:@F@foo#I#",
"short_name": "foo", "short_name": "foo",
"qualified_name": "foo", "qualified_name": "foo",
"definition": "tests/vars/function_shadow_param.cc:1:6" "definition": "tests/vars/function_shadow_param.cc:1:6",
"all_uses": ["tests/vars/function_shadow_param.cc:1:6"]
}], }],
"variables": [{ "variables": [{
"id": 0, "id": 0,
@ -18,14 +19,14 @@ OUTPUT:
"short_name": "p", "short_name": "p",
"qualified_name": "p", "qualified_name": "p",
"declaration": "tests/vars/function_shadow_param.cc:1:14", "declaration": "tests/vars/function_shadow_param.cc:1:14",
"initializations": ["tests/vars/function_shadow_param.cc:1:14"] "all_uses": ["tests/vars/function_shadow_param.cc:1:14"]
}, { }, {
"id": 1, "id": 1,
"usr": "c:function_shadow_param.cc@21@F@foo#I#@p", "usr": "c:function_shadow_param.cc@21@F@foo#I#@p",
"short_name": "p", "short_name": "p",
"qualified_name": "p", "qualified_name": "p",
"declaration": "tests/vars/function_shadow_param.cc:2:7", "declaration": "tests/vars/function_shadow_param.cc:2:7",
"initializations": ["tests/vars/function_shadow_param.cc:2:7"] "all_uses": ["tests/vars/function_shadow_param.cc:2:7"]
}] }]
} }
*/ */

View File

@ -10,7 +10,7 @@ OUTPUT:
"short_name": "global", "short_name": "global",
"qualified_name": "global", "qualified_name": "global",
"declaration": "tests/vars/global_variable.cc:1:12", "declaration": "tests/vars/global_variable.cc:1:12",
"initializations": ["tests/vars/global_variable.cc:1:12"] "all_uses": ["tests/vars/global_variable.cc:1:12"]
}] }]
} }
*/ */

View File

@ -9,7 +9,8 @@ OUTPUT:
"usr": "c:@global", "usr": "c:@global",
"short_name": "global", "short_name": "global",
"qualified_name": "global", "qualified_name": "global",
"declaration": "tests/vars/global_variable_decl_only.cc:1:12" "declaration": "tests/vars/global_variable_decl_only.cc:1:12",
"all_uses": ["tests/vars/global_variable_decl_only.cc:1:12"]
}] }]
} }
*/ */