mirror of
https://github.com/apple/swift.git
synced 2025-12-21 12:14:44 +01:00
[SourceKit/CursorInfo] Include line and column in result
Add line/column in addition to offset so clients need not map it themselves.
This commit is contained in:
@@ -96,7 +96,8 @@ struct TestCursorInfo {
|
||||
std::string Name;
|
||||
std::string Typename;
|
||||
std::string Filename;
|
||||
Optional<std::pair<unsigned, unsigned>> DeclarationLoc;
|
||||
unsigned Offset;
|
||||
unsigned Length;
|
||||
};
|
||||
|
||||
class CursorInfoTest : public ::testing::Test {
|
||||
@@ -162,8 +163,9 @@ public:
|
||||
const CursorSymbolInfo &MainSymbol = Info.Symbols[0];
|
||||
TestInfo.Name = std::string(MainSymbol.Name.str());
|
||||
TestInfo.Typename = MainSymbol.TypeName.str();
|
||||
TestInfo.Filename = MainSymbol.Filename.str();
|
||||
TestInfo.DeclarationLoc = MainSymbol.DeclarationLoc;
|
||||
TestInfo.Filename = MainSymbol.Location.Filename.str();
|
||||
TestInfo.Offset = MainSymbol.Location.Offset;
|
||||
TestInfo.Length = MainSymbol.Location.Length;
|
||||
}
|
||||
sema.signal();
|
||||
});
|
||||
@@ -223,9 +225,8 @@ TEST_F(CursorInfoTest, EditAfter) {
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("Int", Info.Typename.c_str());
|
||||
EXPECT_STREQ(DocName, Info.Filename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
|
||||
StringRef TextToReplace = "0";
|
||||
replaceText(DocName, findOffset(TextToReplace, Contents), TextToReplace.size(),
|
||||
@@ -239,9 +240,8 @@ TEST_F(CursorInfoTest, EditAfter) {
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("Int", Info.Typename.c_str());
|
||||
EXPECT_STREQ(DocName, Info.Filename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
}
|
||||
|
||||
TEST_F(CursorInfoTest, EditBefore) {
|
||||
@@ -258,9 +258,8 @@ TEST_F(CursorInfoTest, EditBefore) {
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("Int", Info.Typename.c_str());
|
||||
EXPECT_STREQ(DocName, Info.Filename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
|
||||
StringRef TextToReplace = "0";
|
||||
replaceText(DocName, findOffset(TextToReplace, Contents), TextToReplace.size(),
|
||||
@@ -276,9 +275,8 @@ TEST_F(CursorInfoTest, EditBefore) {
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("Int", Info.Typename.c_str());
|
||||
EXPECT_STREQ(DocName, Info.Filename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
}
|
||||
|
||||
TEST_F(CursorInfoTest, CursorInfoMustWaitDueDeclLoc) {
|
||||
@@ -306,9 +304,8 @@ TEST_F(CursorInfoTest, CursorInfoMustWaitDueDeclLoc) {
|
||||
Info = getCursor(DocName, FooRefOffs, Args);
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("[Int : Int]", Info.Typename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
}
|
||||
|
||||
TEST_F(CursorInfoTest, CursorInfoMustWaitDueOffset) {
|
||||
@@ -336,9 +333,8 @@ TEST_F(CursorInfoTest, CursorInfoMustWaitDueOffset) {
|
||||
Info = getCursor(DocName, FooRefOffs, Args);
|
||||
EXPECT_STREQ("foo", Info.Name.c_str());
|
||||
EXPECT_STREQ("[Int : Int]", Info.Typename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("foo"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("foo"), Info.Length);
|
||||
}
|
||||
|
||||
TEST_F(CursorInfoTest, CursorInfoMustWaitDueToken) {
|
||||
@@ -367,9 +363,8 @@ TEST_F(CursorInfoTest, CursorInfoMustWaitDueToken) {
|
||||
Info = getCursor(DocName, FooRefOffs, Args);
|
||||
EXPECT_STREQ("fog", Info.Name.c_str());
|
||||
EXPECT_STREQ("[Int : Int]", Info.Typename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("fog"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("fog"), Info.Length);
|
||||
}
|
||||
|
||||
TEST_F(CursorInfoTest, CursorInfoMustWaitDueTokenRace) {
|
||||
@@ -396,7 +391,6 @@ TEST_F(CursorInfoTest, CursorInfoMustWaitDueTokenRace) {
|
||||
auto Info = getCursor(DocName, FooRefOffs, Args);
|
||||
EXPECT_STREQ("fog", Info.Name.c_str());
|
||||
EXPECT_STREQ("Int", Info.Typename.c_str());
|
||||
ASSERT_TRUE(Info.DeclarationLoc.hasValue());
|
||||
EXPECT_EQ(FooOffs, Info.DeclarationLoc->first);
|
||||
EXPECT_EQ(strlen("fog"), Info.DeclarationLoc->second);
|
||||
EXPECT_EQ(FooOffs, Info.Offset);
|
||||
EXPECT_EQ(strlen("fog"), Info.Length);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user