diff --git a/include/vara/Feature/FeatureSourceRange.h b/include/vara/Feature/FeatureSourceRange.h index 56dfdc17..089f2b99 100644 --- a/include/vara/Feature/FeatureSourceRange.h +++ b/include/vara/Feature/FeatureSourceRange.h @@ -116,6 +116,9 @@ class FeatureSourceRange { assert(Nested.value() < Class.size()); return Class[Class.size() - Nested.value() - 1]; } + if (Class.empty()) { + return ""; + } std::stringstream StrS; StrS << Class[0]; for (size_t Idx = 1; Idx < Class.size(); ++Idx) { @@ -158,6 +161,9 @@ class FeatureSourceRange { static llvm::SmallVector splitClass(llvm::StringRef Class) { + if (Class.empty()) { + return {}; + } llvm::SmallVector Split; Class.split(Split, "::"); return Split; diff --git a/unittests/Feature/FeatureSourceRange.cpp b/unittests/Feature/FeatureSourceRange.cpp index c2140934..5b674299 100644 --- a/unittests/Feature/FeatureSourceRange.cpp +++ b/unittests/Feature/FeatureSourceRange.cpp @@ -133,6 +133,7 @@ TEST(FeatureMemberOffset, individualAccessors) { EXPECT_EQ(Member.value().className(0), "bar"); EXPECT_EQ(Member.value().className(1), "foo"); EXPECT_EQ(Member.value().memberName(), "member"); + EXPECT_EQ(Member.value().nestingDepth(), 2); } TEST(FeatureMemberOffset, anonymous) { @@ -143,6 +144,7 @@ TEST(FeatureMemberOffset, anonymous) { EXPECT_EQ(Member->toString(), "::member"); EXPECT_EQ(Member.value().className(), ""); EXPECT_EQ(Member.value().memberName(), "member"); + EXPECT_EQ(Member.value().nestingDepth(), 0); } TEST(FeatureMemberOffset, comparison) {