diff --git a/main.cpp b/main.cpp index 3915d7c5..1b8ec90e 100644 --- a/main.cpp +++ b/main.cpp @@ -1207,6 +1207,7 @@ void indexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) { case CXIdxEntity_Field: case CXIdxEntity_Variable: + case CXIdxEntity_CXXStaticVariable: { VarId var_id = db->ToVarId(decl->entityInfo->USR); 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->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(); if (var_type_usr != "") { TypeId var_type_id = db->ToTypeId(var_type_usr); 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)) { @@ -1279,18 +1286,18 @@ void indexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) { if (decl->isDefinition) { - // Search for unnamed parameter and and mark them as interesting type - // usages. The clang indexer will not mark them as declarations. + // Mark type usage for parameters as interesting. We handle this here + // 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. clang::Cursor cursor = decl->cursor; for (clang::Cursor arg : cursor.get_arguments()) { switch (arg.get_kind()) { case CXCursor_ParmDecl: - if (arg.get_spelling() == "") { - std::string param_type_usr = arg.get_type().strip_qualifiers().get_usr(); - if (param_type_usr != "") { - InsertInterestingTypeReference(db, db->ToTypeId(param_type_usr), arg); - } + std::string param_type_usr = arg.get_type().strip_qualifiers().get_usr(); + if (param_type_usr != "") { + InsertInterestingTypeReference(db, db->ToTypeId(param_type_usr), arg); } break; } @@ -1401,6 +1408,7 @@ void indexEntityReference(CXClientData client_data, const CXIdxEntityRefInfo* re ParsingDatabase* db = param->db; clang::Cursor cursor(ref->cursor); + // TODO: Index entity call/ctor creation, like Foo().x = 3 switch (ref->referencedEntity->kind) { case CXIdxEntity_Variable: @@ -1696,11 +1704,12 @@ int main(int argc, char** argv) { // TODO: Fix all existing tests. //if (path == "tests/usage/type_usage_declare_extern.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/func_usage_addr_method.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; // Parse expected output from the test, parse it into JSON document. diff --git a/tests/usage/type_usage_declare_param_prototype.cc b/tests/usage/type_usage_declare_param_prototype.cc index 7ef7c485..39472edd 100644 --- a/tests/usage/type_usage_declare_param_prototype.cc +++ b/tests/usage/type_usage_declare_param_prototype.cc @@ -15,7 +15,7 @@ OUTPUT: "id": 0, "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"], - "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": [{ "id": 0, diff --git a/tests/usage/type_usage_declare_param_unnamed.cc b/tests/usage/type_usage_declare_param_unnamed.cc index 7d70dfba..929fcb13 100644 --- a/tests/usage/type_usage_declare_param_unnamed.cc +++ b/tests/usage/type_usage_declare_param_unnamed.cc @@ -6,7 +6,8 @@ OUTPUT: "types": [{ "id": 0, "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": [{ "id": 0, diff --git a/tests/usage/usage_inside_of_call.cc b/tests/usage/usage_inside_of_call.cc index d19abfd2..78c8ff34 100644 --- a/tests/usage/usage_inside_of_call.cc +++ b/tests/usage/usage_inside_of_call.cc @@ -7,6 +7,8 @@ struct Foo { int field_var; }; +int Foo::static_var = 0; + void foo() { int a = 5; called(a + gen() + Foo().field_var + Foo::static_var); @@ -21,24 +23,24 @@ OUTPUT: "short_name": "Foo", "qualified_name": "Foo", "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": [{ "id": 0, "usr": "c:@F@called#I#", "short_name": "called", "qualified_name": "called", - "declaration": "tests/usage/usage_inside_of_call.cc:1:6", - "callers": ["2@tests/usage/usage_inside_of_call.cc:12:3"], - "uses": ["tests/usage/usage_inside_of_call.cc:12:3"] + "callers": ["2@tests/usage/usage_inside_of_call.cc:14:3"], + "all_uses": ["tests/usage/usage_inside_of_call.cc:1:6", "tests/usage/usage_inside_of_call.cc:14:3"] }, { "id": 1, "usr": "c:@F@gen#", "short_name": "gen", "qualified_name": "gen", "declaration": "tests/usage/usage_inside_of_call.cc:3:5", - "callers": ["2@tests/usage/usage_inside_of_call.cc:12:14"], - "uses": ["tests/usage/usage_inside_of_call.cc:12:14"] + "callers": ["2@tests/usage/usage_inside_of_call.cc:14:14"], + "all_uses": ["tests/usage/usage_inside_of_call.cc:3:5", "tests/usage/usage_inside_of_call.cc:14:14"] }, { "id": 2, "usr": "c:@F@foo#", diff --git a/tests/usage/var_usage_call_function.cc b/tests/usage/var_usage_call_function.cc index 9686fb00..14005241 100644 --- a/tests/usage/var_usage_call_function.cc +++ b/tests/usage/var_usage_call_function.cc @@ -18,14 +18,15 @@ OUTPUT: "qualified_name": "called", "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"], - "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, "usr": "c:@F@caller#", "short_name": "caller", "qualified_name": "caller", "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": [{ "id": 0, @@ -33,8 +34,7 @@ OUTPUT: "short_name": "x", "qualified_name": "x", "declaration": "tests/usage/var_usage_call_function.cc:4:8", - "initializations": ["tests/usage/var_usage_call_function.cc:4:8"], - "uses": ["tests/usage/var_usage_call_function.cc:5:3"] + "all_uses": ["tests/usage/var_usage_call_function.cc:4:8", "tests/usage/var_usage_call_function.cc:5:3"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_class_member.cc b/tests/usage/var_usage_class_member.cc index 322a2b36..ead7acad 100644 --- a/tests/usage/var_usage_class_member.cc +++ b/tests/usage/var_usage_class_member.cc @@ -27,36 +27,31 @@ OUTPUT: "qualified_name": "Foo", "definition": "tests/usage/var_usage_class_member.cc:1:7", "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": [{ "id": 0, "usr": "c:@F@accept#I#", "short_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"], - "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, "usr": "c:@F@accept#*I#", "short_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"], - "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, "usr": "c:@F@foo#", "short_name": "foo", "qualified_name": "foo", "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"] - }, { - "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"] + "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"] }], "variables": [{ "id": 0, @@ -64,27 +59,24 @@ OUTPUT: "short_name": "x", "qualified_name": "Foo::x", "declaration": "tests/usage/var_usage_class_member.cc:3:7", - "initializations": ["tests/usage/var_usage_class_member.cc:3:7"], "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, "usr": "c:@S@Foo@FI@y", "short_name": "y", "qualified_name": "Foo::y", "declaration": "tests/usage/var_usage_class_member.cc:4:7", - "initializations": ["tests/usage/var_usage_class_member.cc:4:7"], "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, "usr": "c:var_usage_class_member.cc@105@F@foo#@f", "short_name": "f", "qualified_name": "f", "declaration": "tests/usage/var_usage_class_member.cc:11:7", - "initializations": ["tests/usage/var_usage_class_member.cc:11:7"], "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"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_extern.cc b/tests/usage/var_usage_extern.cc index ad819715..4db03362 100644 --- a/tests/usage/var_usage_extern.cc +++ b/tests/usage/var_usage_extern.cc @@ -12,7 +12,8 @@ OUTPUT: "usr": "c:@F@foo#", "short_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": [{ "id": 0, @@ -20,7 +21,7 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "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"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_func_parameter.cc b/tests/usage/var_usage_func_parameter.cc index 5ca76b82..1b1a6ff7 100644 --- a/tests/usage/var_usage_func_parameter.cc +++ b/tests/usage/var_usage_func_parameter.cc @@ -10,7 +10,8 @@ OUTPUT: "usr": "c:@F@foo#I#", "short_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": [{ "id": 0, @@ -18,8 +19,7 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_func_parameter.cc:1:14", - "initializations": ["tests/usage/var_usage_func_parameter.cc:1:14"], - "uses": ["tests/usage/var_usage_func_parameter.cc:2:3"] + "all_uses": ["tests/usage/var_usage_func_parameter.cc:1:14", "tests/usage/var_usage_func_parameter.cc:2:3"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_local.cc b/tests/usage/var_usage_local.cc index f1951664..0d86a45d 100644 --- a/tests/usage/var_usage_local.cc +++ b/tests/usage/var_usage_local.cc @@ -11,7 +11,8 @@ OUTPUT: "usr": "c:@F@foo#", "short_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": [{ "id": 0, @@ -19,8 +20,7 @@ OUTPUT: "short_name": "x", "qualified_name": "x", "declaration": "tests/usage/var_usage_local.cc:2:7", - "initializations": ["tests/usage/var_usage_local.cc:2:7"], - "uses": ["tests/usage/var_usage_local.cc:3:3"] + "all_uses": ["tests/usage/var_usage_local.cc:2:7", "tests/usage/var_usage_local.cc:3:3"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_shadowed_local.cc b/tests/usage/var_usage_shadowed_local.cc index f47ecdd9..c555c5c8 100644 --- a/tests/usage/var_usage_shadowed_local.cc +++ b/tests/usage/var_usage_shadowed_local.cc @@ -16,7 +16,8 @@ OUTPUT: "usr": "c:@F@foo#", "short_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": [{ "id": 0, @@ -24,16 +25,14 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_shadowed_local.cc:2:7", - "initializations": ["tests/usage/var_usage_shadowed_local.cc:2:7"], - "uses": ["tests/usage/var_usage_shadowed_local.cc:3:3", "tests/usage/var_usage_shadowed_local.cc:8:3"] + "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"] }, { "id": 1, "usr": "c:var_usage_shadowed_local.cc@43@F@foo#@a", "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_shadowed_local.cc:5:9", - "initializations": ["tests/usage/var_usage_shadowed_local.cc:5:9"], - "uses": ["tests/usage/var_usage_shadowed_local.cc:6:5"] + "all_uses": ["tests/usage/var_usage_shadowed_local.cc:5:9", "tests/usage/var_usage_shadowed_local.cc:6:5"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_shadowed_parameter.cc b/tests/usage/var_usage_shadowed_parameter.cc index f37c13a6..caaf653f 100644 --- a/tests/usage/var_usage_shadowed_parameter.cc +++ b/tests/usage/var_usage_shadowed_parameter.cc @@ -16,7 +16,8 @@ OUTPUT: "usr": "c:@F@foo#I#", "short_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": [{ "id": 0, @@ -24,16 +25,14 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_shadowed_parameter.cc:1:14", - "initializations": ["tests/usage/var_usage_shadowed_parameter.cc:1:14"], - "uses": ["tests/usage/var_usage_shadowed_parameter.cc:2:3", "tests/usage/var_usage_shadowed_parameter.cc:7:3"] + "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"] }, { "id": 1, "usr": "c:var_usage_shadowed_parameter.cc@38@F@foo#I#@a", "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_shadowed_parameter.cc:4:9", - "initializations": ["tests/usage/var_usage_shadowed_parameter.cc:4:9"], - "uses": ["tests/usage/var_usage_shadowed_parameter.cc:5:5"] + "all_uses": ["tests/usage/var_usage_shadowed_parameter.cc:4:9", "tests/usage/var_usage_shadowed_parameter.cc:5:5"] }] } */ \ No newline at end of file diff --git a/tests/usage/var_usage_static.cc b/tests/usage/var_usage_static.cc index 08733485..aae45312 100644 --- a/tests/usage/var_usage_static.cc +++ b/tests/usage/var_usage_static.cc @@ -13,7 +13,8 @@ OUTPUT: "usr": "c:@F@foo#", "short_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": [{ "id": 0, @@ -21,8 +22,7 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "declaration": "tests/usage/var_usage_static.cc:1:12", - "initializations": ["tests/usage/var_usage_static.cc:1:12"], - "uses": ["tests/usage/var_usage_static.cc:4:3"] + "all_uses": ["tests/usage/var_usage_static.cc:1:12", "tests/usage/var_usage_static.cc:4:3"] }] } */ \ No newline at end of file diff --git a/tests/vars/class_member.cc b/tests/vars/class_member.cc index 2983939b..30e65600 100644 --- a/tests/vars/class_member.cc +++ b/tests/vars/class_member.cc @@ -11,7 +11,8 @@ OUTPUT: "qualified_name": "Foo", "definition": "tests/vars/class_member.cc:1:7", "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": [], "variables": [{ @@ -20,9 +21,9 @@ OUTPUT: "short_name": "member", "qualified_name": "Foo::member", "declaration": "tests/vars/class_member.cc:2:8", - "initializations": ["tests/vars/class_member.cc:2:8"], "variable_type": 0, - "declaring_type": 0 + "declaring_type": 0, + "all_uses": ["tests/vars/class_member.cc:2:8"] }] } */ \ No newline at end of file diff --git a/tests/vars/class_static_member.cc b/tests/vars/class_static_member.cc index c1aa9b8e..0d3b0230 100644 --- a/tests/vars/class_static_member.cc +++ b/tests/vars/class_static_member.cc @@ -4,6 +4,9 @@ class Foo { Foo* Foo::member = nullptr; /* +// TODO: Store both declaration and definition. It is very convenient to +// quickly change between them. + OUTPUT: { "types": [{ @@ -13,7 +16,8 @@ OUTPUT: "qualified_name": "Foo", "definition": "tests/vars/class_static_member.cc:1:7", "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": [], "variables": [{ @@ -21,10 +25,10 @@ OUTPUT: "usr": "c:@S@Foo@member", "short_name": "member", "qualified_name": "Foo::member", - "declaration": "tests/vars/class_static_member.cc:2:15", - "initializations": ["tests/vars/class_static_member.cc:4:11"], + "declaration": "tests/vars/class_static_member.cc:4:11", "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"] }] } */ \ No newline at end of file diff --git a/tests/vars/class_static_member_decl_only.cc b/tests/vars/class_static_member_decl_only.cc index b3ef0431..58e3007d 100644 --- a/tests/vars/class_static_member_decl_only.cc +++ b/tests/vars/class_static_member_decl_only.cc @@ -10,7 +10,7 @@ OUTPUT: "short_name": "Foo", "qualified_name": "Foo", "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": [], "variables": [{ @@ -19,7 +19,7 @@ OUTPUT: "short_name": "member", "qualified_name": "Foo::member", "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"] }] } */ \ No newline at end of file diff --git a/tests/vars/function_local.cc b/tests/vars/function_local.cc index 59b95ff2..59168a70 100644 --- a/tests/vars/function_local.cc +++ b/tests/vars/function_local.cc @@ -3,15 +3,15 @@ struct Foo; void foo() { Foo* a; } -/* -// TODO: Make sure usage for Foo is inserted into type section. +/* OUTPUT: { "types": [{ "id": 0, "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": [{ "id": 0, diff --git a/tests/vars/function_param.cc b/tests/vars/function_param.cc index c42d4d7b..3149bfbe 100644 --- a/tests/vars/function_param.cc +++ b/tests/vars/function_param.cc @@ -1,23 +1,23 @@ struct Foo; void foo(Foo* p0, Foo* p1) {} + /* OUTPUT: { "types": [{ "id": 0, "usr": "c:@S@Foo", - "short_name": "Foo", - "qualified_name": "Foo", - "declaration": "tests/vars/function_param.cc:1:8", - "uses": ["tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"] + "all_uses": ["tests/vars/function_param.cc:1:8", "tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"], + "interesting_uses": ["tests/vars/function_param.cc:3:10", "tests/vars/function_param.cc:3:19"] }], "functions": [{ "id": 0, "usr": "c:@F@foo#*$@S@Foo#S0_#", "short_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": [{ "id": 0, @@ -25,16 +25,16 @@ OUTPUT: "short_name": "p0", "qualified_name": "p0", "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, "usr": "c:function_param.cc@33@F@foo#*$@S@Foo#S0_#@p1", "short_name": "p1", "qualified_name": "p1", "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"] }] } */ \ No newline at end of file diff --git a/tests/vars/function_param_unnamed.cc b/tests/vars/function_param_unnamed.cc index 5aa93ab9..d3feba0a 100644 --- a/tests/vars/function_param_unnamed.cc +++ b/tests/vars/function_param_unnamed.cc @@ -8,7 +8,8 @@ OUTPUT: "usr": "c:@F@foo#I#I#", "short_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": [] } diff --git a/tests/vars/function_shadow_local.cc b/tests/vars/function_shadow_local.cc index 624ce3ee..63e5b391 100644 --- a/tests/vars/function_shadow_local.cc +++ b/tests/vars/function_shadow_local.cc @@ -16,7 +16,8 @@ OUTPUT: "usr": "c:@F@foo#", "short_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": [{ "id": 0, @@ -24,16 +25,14 @@ OUTPUT: "short_name": "a", "qualified_name": "a", "declaration": "tests/vars/function_shadow_local.cc:2:7", - "initializations": ["tests/vars/function_shadow_local.cc:2:7"], - "uses": ["tests/vars/function_shadow_local.cc:3:3", "tests/vars/function_shadow_local.cc:8:3"] + "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"] }, { "id": 1, "usr": "c:function_shadow_local.cc@43@F@foo#@a", "short_name": "a", "qualified_name": "a", "declaration": "tests/vars/function_shadow_local.cc:5:9", - "initializations": ["tests/vars/function_shadow_local.cc:5:9"], - "uses": ["tests/vars/function_shadow_local.cc:6:5"] + "all_uses": ["tests/vars/function_shadow_local.cc:5:9", "tests/vars/function_shadow_local.cc:6:5"] }] } */ \ No newline at end of file diff --git a/tests/vars/function_shadow_param.cc b/tests/vars/function_shadow_param.cc index c1d41017..1f30342f 100644 --- a/tests/vars/function_shadow_param.cc +++ b/tests/vars/function_shadow_param.cc @@ -10,7 +10,8 @@ OUTPUT: "usr": "c:@F@foo#I#", "short_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": [{ "id": 0, @@ -18,14 +19,14 @@ OUTPUT: "short_name": "p", "qualified_name": "p", "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, "usr": "c:function_shadow_param.cc@21@F@foo#I#@p", "short_name": "p", "qualified_name": "p", "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"] }] } */ \ No newline at end of file diff --git a/tests/vars/global_variable.cc b/tests/vars/global_variable.cc index 1afd4204..67ead27e 100644 --- a/tests/vars/global_variable.cc +++ b/tests/vars/global_variable.cc @@ -10,7 +10,7 @@ OUTPUT: "short_name": "global", "qualified_name": "global", "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"] }] } */ \ No newline at end of file diff --git a/tests/vars/global_variable_decl_only.cc b/tests/vars/global_variable_decl_only.cc index 335126fa..17058bd7 100644 --- a/tests/vars/global_variable_decl_only.cc +++ b/tests/vars/global_variable_decl_only.cc @@ -9,7 +9,8 @@ OUTPUT: "usr": "c:@global", "short_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"] }] } */ \ No newline at end of file