sammccall created this revision.
Remove line number from Symbol identity.
For our purposes (include-fixer and clangd autocomplete), function overloads
within the same header should mostly be treated as a single combined symbol.
We may want to track individual occurrences (line number, full type info)
and aggregate this during mapreduce, but that's not done here.
https://reviews.llvm.org/D30685
Files:
include-fixer/IncludeFixer.cpp
include-fixer/find-all-symbols/FindAllMacros.cpp
include-fixer/find-all-symbols/FindAllSymbols.cpp
include-fixer/find-all-symbols/SymbolInfo.cpp
include-fixer/find-all-symbols/SymbolInfo.h
include-fixer/tool/ClangIncludeFixer.cpp
test/include-fixer/Inputs/fake_yaml_db.yaml
test/include-fixer/Inputs/merge/a.yaml
test/include-fixer/Inputs/merge/b.yaml
test/include-fixer/merge.test
unittests/include-fixer/IncludeFixerTest.cpp
unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp
Index: unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp
===================================================================
--- unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp
+++ unittests/include-fixer/find-all-symbols/FindAllSymbolsTests.cpp
@@ -42,14 +42,14 @@
Symbols[Entry.first] += Entry.second;
}
- bool hasSymbol(const SymbolInfo &Symbol) const {
+ int hasSymbol(const SymbolInfo &Symbol) const {
auto it = Symbols.find(Symbol);
- return it != Symbols.end() && it->second.Seen > 0;
+ return it == Symbols.end() ? 0 : it->second.Seen;
}
- bool hasUse(const SymbolInfo &Symbol) const {
+ int hasUse(const SymbolInfo &Symbol) const {
auto it = Symbols.find(Symbol);
- return it != Symbols.end() && it->second.Used > 0;
+ return it == Symbols.end() ? 0 : it->second.Used;
}
private:
@@ -86,9 +86,9 @@
std::string InternalCode =
"#include \"private.inc\"\nclass Internal {};";
SymbolInfo InternalSymbol("Internal", SymbolInfo::SymbolKind::Class,
- TopHeader, 2, {});
+ TopHeader, {});
SymbolInfo IncSymbol("IncHeaderClass", SymbolInfo::SymbolKind::Class,
- TopHeader, 1, {});
+ TopHeader, {});
InMemoryFileSystem->addFile(
IncHeader, 0, llvm::MemoryBuffer::getMemBuffer(IncHeaderCode));
InMemoryFileSystem->addFile(InternalHeader, 0,
@@ -120,9 +120,9 @@
InMemoryFileSystem->addFile(
DirtyHeader, 0, llvm::MemoryBuffer::getMemBuffer(DirtyHeaderContent));
SymbolInfo DirtyMacro("INTERNAL", SymbolInfo::SymbolKind::Macro,
- CleanHeader, 1, {});
+ CleanHeader, {});
SymbolInfo DirtySymbol("ExtraInternal", SymbolInfo::SymbolKind::Class,
- CleanHeader, 2, {});
+ CleanHeader, {});
#endif // _MSC_VER && __MINGW32__
Content += "\n" + MainCode.str();
InMemoryFileSystem->addFile(FileName, 0,
@@ -155,16 +155,16 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("xargc", SymbolInfo::SymbolKind::Variable, HeaderName, 2, {});
+ SymbolInfo("xargc", SymbolInfo::SymbolKind::Variable, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("SSSS", SymbolInfo::SymbolKind::Variable, HeaderName, 4,
+ Symbol = SymbolInfo("SSSS", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("XXXX", SymbolInfo::SymbolKind::Variable, HeaderName, 5,
+ Symbol = SymbolInfo("XXXX", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, "nb"},
{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
@@ -188,12 +188,12 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("C_Func", SymbolInfo::SymbolKind::Function, HeaderName, 3, {});
+ SymbolInfo("C_Func", SymbolInfo::SymbolKind::Function, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
Symbol =
- SymbolInfo("C_struct", SymbolInfo::SymbolKind::Class, HeaderName, 4, {});
+ SymbolInfo("C_struct", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -219,16 +219,16 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("Glob", SymbolInfo::SymbolKind::Class, HeaderName, 2, {});
+ SymbolInfo("Glob", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("A", SymbolInfo::SymbolKind::Class, HeaderName, 6,
+ Symbol = SymbolInfo("A", SymbolInfo::SymbolKind::Class, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("AAA", SymbolInfo::SymbolKind::Class, HeaderName, 7,
+ Symbol = SymbolInfo("AAA", SymbolInfo::SymbolKind::Class, HeaderName,
{{SymbolInfo::ContextType::Record, "A"},
{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_FALSE(hasSymbol(Symbol));
@@ -257,7 +257,7 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("T_TEMP", SymbolInfo::SymbolKind::Class, HeaderName, 3, {});
+ SymbolInfo("T_TEMP", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -274,14 +274,10 @@
)";
runFindAllSymbols(Code, "");
SymbolInfo Symbol =
- SymbolInfo("Class", SymbolInfo::SymbolKind::Class, HeaderName, 4, {});
+ SymbolInfo("Class", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
- Symbol =
- SymbolInfo("f", SymbolInfo::SymbolKind::Function, HeaderName, 7, {});
- EXPECT_TRUE(hasSymbol(Symbol));
- Symbol =
- SymbolInfo("f", SymbolInfo::SymbolKind::Function, HeaderName, 8, {});
- EXPECT_FALSE(hasSymbol(Symbol));
+ Symbol = SymbolInfo("f", SymbolInfo::SymbolKind::Function, HeaderName, {});
+ EXPECT_EQ(1, hasSymbol(Symbol));
}
TEST_F(FindAllSymbolsTest, FunctionSymbols) {
@@ -309,22 +305,22 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("gg", SymbolInfo::SymbolKind::Function, HeaderName, 3,
+ SymbolInfo("gg", SymbolInfo::SymbolKind::Function, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("f", SymbolInfo::SymbolKind::Function, HeaderName, 4,
+ Symbol = SymbolInfo("f", SymbolInfo::SymbolKind::Function, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("SSSFFF", SymbolInfo::SymbolKind::Function, HeaderName, 5,
+ Symbol = SymbolInfo("SSSFFF", SymbolInfo::SymbolKind::Function, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("fun", SymbolInfo::SymbolKind::Function, HeaderName, 10,
+ Symbol = SymbolInfo("fun", SymbolInfo::SymbolKind::Function, HeaderName,
{{SymbolInfo::ContextType::Namespace, "nb"},
{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
@@ -350,28 +346,28 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("X1", SymbolInfo::SymbolKind::Variable, HeaderName, 2, {});
+ SymbolInfo("X1", SymbolInfo::SymbolKind::Variable, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("X2", SymbolInfo::SymbolKind::Variable, HeaderName, 3,
+ Symbol = SymbolInfo("X2", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, ""}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("X3", SymbolInfo::SymbolKind::Variable, HeaderName, 4,
+ Symbol = SymbolInfo("X3", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, ""},
{SymbolInfo::ContextType::Namespace, ""}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("X4", SymbolInfo::SymbolKind::Variable, HeaderName, 5,
+ Symbol = SymbolInfo("X4", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, "nb"},
{SymbolInfo::ContextType::Namespace, ""}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("X5", SymbolInfo::SymbolKind::Variable, HeaderName, 6,
+ Symbol = SymbolInfo("X5", SymbolInfo::SymbolKind::Variable, HeaderName,
{{SymbolInfo::ContextType::Namespace, "na"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
@@ -382,7 +378,7 @@
static const char Main[] = R"(int main() { DecayedFunc(nullptr, nullptr); })";
runFindAllSymbols(Header, Main);
SymbolInfo Symbol = SymbolInfo(
- "DecayedFunc", SymbolInfo::SymbolKind::Function, HeaderName, 1, {});
+ "DecayedFunc", SymbolInfo::SymbolKind::Function, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -402,17 +398,16 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol = SymbolInfo("size_t_", SymbolInfo::SymbolKind::TypedefName,
- HeaderName, 2, {});
+ HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol =
- SymbolInfo("X", SymbolInfo::SymbolKind::TypedefName, HeaderName, 3, {});
+ Symbol = SymbolInfo("X", SymbolInfo::SymbolKind::TypedefName, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
Symbol =
- SymbolInfo("XX", SymbolInfo::SymbolKind::TypedefName, HeaderName, 4, {});
+ SymbolInfo("XX", SymbolInfo::SymbolKind::TypedefName, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -438,56 +433,55 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("Glob_E", SymbolInfo::SymbolKind::EnumDecl, HeaderName, 2, {});
+ SymbolInfo("Glob_E", SymbolInfo::SymbolKind::EnumDecl, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_FALSE(hasUse(Symbol));
Symbol =
- SymbolInfo("G1", SymbolInfo::SymbolKind::EnumConstantDecl, HeaderName, 2,
+ SymbolInfo("G1", SymbolInfo::SymbolKind::EnumConstantDecl, HeaderName,
{{SymbolInfo::ContextType::EnumDecl, "Glob_E"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
Symbol =
- SymbolInfo("G2", SymbolInfo::SymbolKind::EnumConstantDecl, HeaderName, 2,
+ SymbolInfo("G2", SymbolInfo::SymbolKind::EnumConstantDecl, HeaderName,
{{SymbolInfo::ContextType::EnumDecl, "Glob_E"}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("Altitude", SymbolInfo::SymbolKind::EnumDecl, HeaderName,
- 3, {});
+ Symbol =
+ SymbolInfo("Altitude", SymbolInfo::SymbolKind::EnumDecl, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
Symbol =
SymbolInfo("high", SymbolInfo::SymbolKind::EnumConstantDecl, HeaderName,
- 3, {{SymbolInfo::ContextType::EnumDecl, "Altitude"}});
+ {{SymbolInfo::ContextType::EnumDecl, "Altitude"}});
EXPECT_FALSE(hasSymbol(Symbol));
EXPECT_FALSE(hasUse(Symbol));
Symbol = SymbolInfo("A1", SymbolInfo::SymbolKind::EnumConstantDecl,
- HeaderName, 4, {{SymbolInfo::ContextType::EnumDecl, ""}});
+ HeaderName, {{SymbolInfo::ContextType::EnumDecl, ""}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
Symbol = SymbolInfo("A2", SymbolInfo::SymbolKind::EnumConstantDecl,
- HeaderName, 4, {{SymbolInfo::ContextType::EnumDecl, ""}});
+ HeaderName, {{SymbolInfo::ContextType::EnumDecl, ""}});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("", SymbolInfo::SymbolKind::EnumDecl, HeaderName, 4, {});
+ Symbol = SymbolInfo("", SymbolInfo::SymbolKind::EnumDecl, HeaderName, {});
EXPECT_FALSE(hasSymbol(Symbol));
EXPECT_FALSE(hasUse(Symbol));
- Symbol = SymbolInfo("A_ENUM", SymbolInfo::SymbolKind::EnumDecl, HeaderName, 7,
+ Symbol = SymbolInfo("A_ENUM", SymbolInfo::SymbolKind::EnumDecl, HeaderName,
{{SymbolInfo::ContextType::Record, "A"}});
EXPECT_FALSE(hasSymbol(Symbol));
EXPECT_FALSE(hasUse(Symbol));
- Symbol = SymbolInfo("X1", SymbolInfo::SymbolKind::EnumDecl, HeaderName, 7,
+ Symbol = SymbolInfo("X1", SymbolInfo::SymbolKind::EnumDecl, HeaderName,
{{SymbolInfo::ContextType::EnumDecl, "A_ENUM"},
{SymbolInfo::ContextType::Record, "A"}});
EXPECT_FALSE(hasSymbol(Symbol));
- Symbol =
- SymbolInfo("DECL", SymbolInfo::SymbolKind::EnumDecl, HeaderName, 9, {});
+ Symbol = SymbolInfo("DECL", SymbolInfo::SymbolKind::EnumDecl, HeaderName, {});
EXPECT_FALSE(hasSymbol(Symbol));
}
@@ -503,7 +497,7 @@
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("Bar", SymbolInfo::SymbolKind::Class, "bar.h", 3, {});
+ SymbolInfo("Bar", SymbolInfo::SymbolKind::Class, "bar.h", {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -521,15 +515,15 @@
)";
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("X", SymbolInfo::SymbolKind::Macro, HeaderName, 2, {});
+ SymbolInfo("X", SymbolInfo::SymbolKind::Macro, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("Y", SymbolInfo::SymbolKind::Macro, HeaderName, 3, {});
+ Symbol = SymbolInfo("Y", SymbolInfo::SymbolKind::Macro, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("MAX", SymbolInfo::SymbolKind::Macro, HeaderName, 4, {});
+ Symbol = SymbolInfo("MAX", SymbolInfo::SymbolKind::Macro, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -548,15 +542,15 @@
)";
runFindAllSymbols(Header, Main);
SymbolInfo Symbol =
- SymbolInfo("X", SymbolInfo::SymbolKind::Macro, "bar.h", 3, {});
+ SymbolInfo("X", SymbolInfo::SymbolKind::Macro, "bar.h", {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("Y", SymbolInfo::SymbolKind::Macro, "bar.h", 4, {});
+ Symbol = SymbolInfo("Y", SymbolInfo::SymbolKind::Macro, "bar.h", {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
- Symbol = SymbolInfo("MAX", SymbolInfo::SymbolKind::Macro, "bar.h", 5, {});
+ Symbol = SymbolInfo("MAX", SymbolInfo::SymbolKind::Macro, "bar.h", {});
EXPECT_TRUE(hasSymbol(Symbol));
EXPECT_TRUE(hasUse(Symbol));
}
@@ -569,16 +563,16 @@
};
)";
runFindAllSymbols(Header, "");
- SymbolInfo Symbol = SymbolInfo("WorstFriend", SymbolInfo::SymbolKind::Class,
- HeaderName, 2, {});
+ SymbolInfo Symbol =
+ SymbolInfo("WorstFriend", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_TRUE(hasSymbol(Symbol));
- Symbol = SymbolInfo("Friend", SymbolInfo::SymbolKind::Function, HeaderName,
- 3, {});
+ Symbol =
+ SymbolInfo("Friend", SymbolInfo::SymbolKind::Function, HeaderName, {});
EXPECT_FALSE(hasSymbol(Symbol));
- Symbol = SymbolInfo("BestFriend", SymbolInfo::SymbolKind::Class, HeaderName,
- 4, {});
+ Symbol =
+ SymbolInfo("BestFriend", SymbolInfo::SymbolKind::Class, HeaderName, {});
EXPECT_FALSE(hasSymbol(Symbol));
}
Index: unittests/include-fixer/IncludeFixerTest.cpp
===================================================================
--- unittests/include-fixer/IncludeFixerTest.cpp
+++ unittests/include-fixer/IncludeFixerTest.cpp
@@ -54,43 +54,43 @@
StringRef Code,
const std::vector<std::string> &ExtraArgs = std::vector<std::string>()) {
std::vector<SymbolAndSignals> Symbols = {
- {SymbolInfo("string", SymbolInfo::SymbolKind::Class, "<string>", 1,
+ {SymbolInfo("string", SymbolInfo::SymbolKind::Class, "<string>",
{{SymbolInfo::ContextType::Namespace, "std"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("sting", SymbolInfo::SymbolKind::Class, "\"sting\"", 1,
+ {SymbolInfo("sting", SymbolInfo::SymbolKind::Class, "\"sting\"",
{{SymbolInfo::ContextType::Namespace, "std"}}),
SymbolInfo::Signals{}},
{SymbolInfo("foo", SymbolInfo::SymbolKind::Class,
- "\"dir/otherdir/qux.h\"", 1,
+ "\"dir/otherdir/qux.h\"",
{{SymbolInfo::ContextType::Namespace, "b"},
{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar.h\"", 1,
+ {SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar.h\"",
{{SymbolInfo::ContextType::Namespace, "b"},
{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar2.h\"", 1,
+ {SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar2.h\"",
{{SymbolInfo::ContextType::Namespace, "c"},
{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("Green", SymbolInfo::SymbolKind::Class, "\"color.h\"", 1,
+ {SymbolInfo("Green", SymbolInfo::SymbolKind::Class, "\"color.h\"",
{{SymbolInfo::ContextType::EnumDecl, "Color"},
{SymbolInfo::ContextType::Namespace, "b"},
{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("Vector", SymbolInfo::SymbolKind::Class, "\"Vector.h\"", 1,
+ {SymbolInfo("Vector", SymbolInfo::SymbolKind::Class, "\"Vector.h\"",
{{SymbolInfo::ContextType::Namespace, "__a"},
{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{/*Seen=*/2, 0}},
- {SymbolInfo("Vector", SymbolInfo::SymbolKind::Class, "\"Vector.h\"", 2,
+ {SymbolInfo("Vector", SymbolInfo::SymbolKind::Class, "\"Vector.h\"",
{{SymbolInfo::ContextType::Namespace, "a"}}),
SymbolInfo::Signals{/*Seen=*/2, 0}},
- {SymbolInfo("StrCat", SymbolInfo::SymbolKind::Class, "\"strcat.h\"", 1,
+ {SymbolInfo("StrCat", SymbolInfo::SymbolKind::Class, "\"strcat.h\"",
{{SymbolInfo::ContextType::Namespace, "str"}}),
SymbolInfo::Signals{}},
- {SymbolInfo("str", SymbolInfo::SymbolKind::Class, "\"str.h\"", 1, {}),
+ {SymbolInfo("str", SymbolInfo::SymbolKind::Class, "\"str.h\"", {}),
SymbolInfo::Signals{}},
- {SymbolInfo("foo2", SymbolInfo::SymbolKind::Class, "\"foo2.h\"", 1, {}),
+ {SymbolInfo("foo2", SymbolInfo::SymbolKind::Class, "\"foo2.h\"", {}),
SymbolInfo::Signals{}},
};
auto SymbolIndexMgr = llvm::make_unique<SymbolIndexManager>();
Index: test/include-fixer/merge.test
===================================================================
--- test/include-fixer/merge.test
+++ test/include-fixer/merge.test
@@ -7,7 +7,6 @@
- ContextType: Namespace
ContextName: a
FilePath: ../include/bar.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 1
@@ -18,7 +17,6 @@
- ContextType: Namespace
ContextName: a
FilePath: ../include/barbar.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 0
@@ -29,7 +27,6 @@
- ContextType: Namespace
ContextName: a
FilePath: foo.h
-LineNumber: 1
Type: Class
Seen: 2
Used: 2
Index: test/include-fixer/Inputs/merge/b.yaml
===================================================================
--- test/include-fixer/Inputs/merge/b.yaml
+++ test/include-fixer/Inputs/merge/b.yaml
@@ -4,7 +4,6 @@
- ContextType: Namespace
ContextName: a
FilePath: foo.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 2
@@ -15,7 +14,6 @@
- ContextType: Namespace
ContextName: a
FilePath: ../include/barbar.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 0
Index: test/include-fixer/Inputs/merge/a.yaml
===================================================================
--- test/include-fixer/Inputs/merge/a.yaml
+++ test/include-fixer/Inputs/merge/a.yaml
@@ -4,7 +4,6 @@
- ContextType: Namespace
ContextName: a
FilePath: foo.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 1
@@ -15,7 +14,6 @@
- ContextType: Namespace
ContextName: a
FilePath: ../include/bar.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 2
Index: test/include-fixer/Inputs/fake_yaml_db.yaml
===================================================================
--- test/include-fixer/Inputs/fake_yaml_db.yaml
+++ test/include-fixer/Inputs/fake_yaml_db.yaml
@@ -6,7 +6,6 @@
- ContextType: Namespace
ContextName: b
FilePath: foo.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 0
@@ -18,7 +17,6 @@
- ContextType: Namespace
ContextName: b
FilePath: ../include/bar.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 0
@@ -30,7 +28,6 @@
- ContextType: Namespace
ContextName: b
FilePath: ../include/bar.h
-LineNumber: 2
Type: Class
Seen: 3
Used: 0
@@ -42,15 +39,13 @@
- ContextType: Namespace
ContextName: b
FilePath: ../include/zbar.h
-LineNumber: 1
Type: Class
Seen: 3
Used: 0
---
Name: b
Contexts:
FilePath: var.h
-LineNumber: 1
Type: Variable
Seen: 1
Used: 0
@@ -60,7 +55,6 @@
- ContextType: Namespace
ContextName: c
FilePath: test/include-fixer/baz.h
-LineNumber: 1
Type: Class
Seen: 1
Used: 0
Index: include-fixer/tool/ClangIncludeFixer.cpp
===================================================================
--- include-fixer/tool/ClangIncludeFixer.cpp
+++ include-fixer/tool/ClangIncludeFixer.cpp
@@ -178,7 +178,7 @@
for (size_t I = 0, E = CommaSplits.size(); I != E; ++I)
Symbols.push_back(
{SymbolInfo(Split.first.trim(), SymbolInfo::SymbolKind::Unknown,
- CommaSplits[I].trim(), 1, {}),
+ CommaSplits[I].trim(), {}),
// Use fake "seen" signal for tests, so first header wins.
SymbolInfo::Signals(/*Seen=*/static_cast<unsigned>(E - I),
/*Used=*/0)});
Index: include-fixer/find-all-symbols/SymbolInfo.h
===================================================================
--- include-fixer/find-all-symbols/SymbolInfo.h
+++ include-fixer/find-all-symbols/SymbolInfo.h
@@ -20,7 +20,11 @@
namespace clang {
namespace find_all_symbols {
-/// \brief Contains all information for a Symbol.
+/// \brief Describes a named symbol from a header.
+/// Symbols with the same qualified name and type (e.g. function overloads)
+/// that appear in the same header are represented by a single SymbolInfo.
+///
+/// TODO: keep track of instances, e.g. overload locations and signatures.
class SymbolInfo {
public:
/// \brief The SymbolInfo Type.
@@ -66,10 +70,10 @@
// The default constructor is required by YAML traits in
// LLVM_YAML_IS_DOCUMENT_LIST_VECTOR.
- SymbolInfo() : Type(SymbolKind::Unknown), LineNumber(-1) {}
+ SymbolInfo() : Type(SymbolKind::Unknown) {}
SymbolInfo(llvm::StringRef Name, SymbolKind Type, llvm::StringRef FilePath,
- int LineNumber, const std::vector<Context> &Contexts);
+ const std::vector<Context> &Contexts);
void SetFilePath(llvm::StringRef Path) { FilePath = Path; }
@@ -90,9 +94,6 @@
return Contexts;
}
- /// \brief Get a 1-based line number of the symbol's declaration.
- int getLineNumber() const { return LineNumber; }
-
bool operator<(const SymbolInfo &Symbol) const;
bool operator==(const SymbolInfo &Symbol) const;
@@ -121,9 +122,6 @@
///
/// If the symbol is declared in `TranslationUnitDecl`, it has no context.
std::vector<Context> Contexts;
-
- /// \brief The 1-based line number of of the symbol's declaration.
- int LineNumber;
};
struct SymbolAndSignals {
Index: include-fixer/find-all-symbols/SymbolInfo.cpp
===================================================================
--- include-fixer/find-all-symbols/SymbolInfo.cpp
+++ include-fixer/find-all-symbols/SymbolInfo.cpp
@@ -32,7 +32,6 @@
io.mapRequired("Name", Symbol.Symbol.Name);
io.mapRequired("Contexts", Symbol.Symbol.Contexts);
io.mapRequired("FilePath", Symbol.Symbol.FilePath);
- io.mapRequired("LineNumber", Symbol.Symbol.LineNumber);
io.mapRequired("Type", Symbol.Symbol.Type);
io.mapRequired("Seen", Symbol.Signals.Seen);
io.mapRequired("Used", Symbol.Signals.Used);
@@ -74,21 +73,18 @@
namespace find_all_symbols {
SymbolInfo::SymbolInfo(llvm::StringRef Name, SymbolKind Type,
- llvm::StringRef FilePath, int LineNumber,
+ llvm::StringRef FilePath,
const std::vector<Context> &Contexts)
- : Name(Name), Type(Type), FilePath(FilePath), Contexts(Contexts),
- LineNumber(LineNumber) {}
+ : Name(Name), Type(Type), FilePath(FilePath), Contexts(Contexts) {}
bool SymbolInfo::operator==(const SymbolInfo &Symbol) const {
- return std::tie(Name, Type, FilePath, LineNumber, Contexts) ==
- std::tie(Symbol.Name, Symbol.Type, Symbol.FilePath, Symbol.LineNumber,
- Symbol.Contexts);
+ return std::tie(Name, Type, FilePath, Contexts) ==
+ std::tie(Symbol.Name, Symbol.Type, Symbol.FilePath, Symbol.Contexts);
}
bool SymbolInfo::operator<(const SymbolInfo &Symbol) const {
- return std::tie(Name, Type, FilePath, LineNumber, Contexts) <
- std::tie(Symbol.Name, Symbol.Type, Symbol.FilePath, Symbol.LineNumber,
- Symbol.Contexts);
+ return std::tie(Name, Type, FilePath, Contexts) <
+ std::tie(Symbol.Name, Symbol.Type, Symbol.FilePath, Symbol.Contexts);
}
std::string SymbolInfo::getQualifiedName() const {
Index: include-fixer/find-all-symbols/FindAllSymbols.cpp
===================================================================
--- include-fixer/find-all-symbols/FindAllSymbols.cpp
+++ include-fixer/find-all-symbols/FindAllSymbols.cpp
@@ -109,8 +109,7 @@
std::string FilePath = getIncludePath(SM, Loc, Collector);
if (FilePath.empty()) return llvm::None;
- return SymbolInfo(ND->getNameAsString(), Type, FilePath,
- SM.getExpansionLineNumber(Loc), GetContexts(ND));
+ return SymbolInfo(ND->getNameAsString(), Type, FilePath, GetContexts(ND));
}
} // namespace
Index: include-fixer/find-all-symbols/FindAllMacros.cpp
===================================================================
--- include-fixer/find-all-symbols/FindAllMacros.cpp
+++ include-fixer/find-all-symbols/FindAllMacros.cpp
@@ -28,8 +28,7 @@
if (FilePath.empty())
return llvm::None;
return SymbolInfo(MacroNameTok.getIdentifierInfo()->getName(),
- SymbolInfo::SymbolKind::Macro, FilePath,
- SM->getSpellingLineNumber(info->getDefinitionLoc()), {});
+ SymbolInfo::SymbolKind::Macro, FilePath, {});
}
void FindAllMacros::MacroDefined(const Token &MacroNameTok,
Index: include-fixer/IncludeFixer.cpp
===================================================================
--- include-fixer/IncludeFixer.cpp
+++ include-fixer/IncludeFixer.cpp
@@ -333,8 +333,7 @@
: "\"" + FilePath + "\""),
SourceManager, HeaderSearch);
SymbolCandidates.emplace_back(Symbol.getName(), Symbol.getSymbolKind(),
- MinimizedFilePath, Symbol.getLineNumber(),
- Symbol.getContexts());
+ MinimizedFilePath, Symbol.getContexts());
}
return IncludeFixerContext(FilePath, QuerySymbolInfos, SymbolCandidates);
}
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits