diff --git a/src/indexer.cc b/src/indexer.cc index 91b40f03..9e0ee81c 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -1027,6 +1027,11 @@ void OnIndexDeclaration(CXClientData client_data, const CXIdxDeclInfo* decl) { std::string type_name = ToString(clang_getTypeSpelling(clang_getCursorType(decl->cursor))); + // clang may report "(lambda at foo.cc)" which end up being a very long + // string. Shorten it to just "lambda". + if (type_name.find("(lambda at") != std::string::npos) + type_name = "lambda"; + var->def.detailed_name = type_name + " " + ns->QualifiedName(decl->semanticContainer, var->def.short_name); diff --git a/tests/lambdas/lambda.cc b/tests/lambdas/lambda.cc index cb3c2be4..91dbfe77 100644 --- a/tests/lambdas/lambda.cc +++ b/tests/lambdas/lambda.cc @@ -74,8 +74,8 @@ OUTPUT: "id": 1, "usr": "c:lambda.cc@28@F@foo#@dosomething", "short_name": "dosomething", - "detailed_name": "(lambda at C:/Users/jacob/Desktop/cquery/tests/lambdas/lambda.cc:4:22) dosomething", - "hover": "(lambda at C:/Users/jacob/Desktop/cquery/tests/lambdas/lambda.cc:4:22)", + "detailed_name": "lambda dosomething", + "hover": "lambda", "definition_spelling": "4:8-4:19", "definition_extent": "4:3-7:4", "variable_type": 0,