Add testcase that uses template metaprogramming
diff --git a/lldb-eval/eval_test.cc b/lldb-eval/eval_test.cc
index c7deec0..82de2da 100644
--- a/lldb-eval/eval_test.cc
+++ b/lldb-eval/eval_test.cc
@@ -1001,6 +1001,12 @@
IsEqual("1.10000002"));
EXPECT_THAT(Eval("(::T_2<T_1<T_1<int> >, T_1<char> >::myint)1.1"),
IsEqual("1.10000002"));
+
+ EXPECT_THAT(Eval("ns::is_same<bool, int>::value"), IsEqual("false"));
+ EXPECT_THAT(Eval("::ns::is_same<bool, int>::value"), IsEqual("false"));
+
+ EXPECT_THAT(Eval("ns::is_same<char, char>::value"), IsEqual("true"));
+ EXPECT_THAT(Eval("::ns::is_same<char, char>::value"), IsEqual("true"));
}
TEST_F(EvalTest, TestValueScope) {
diff --git a/testdata/fuzzer_binary.cc b/testdata/fuzzer_binary.cc
index 30a7660..9867f96 100644
--- a/testdata/fuzzer_binary.cc
+++ b/testdata/fuzzer_binary.cc
@@ -101,6 +101,19 @@
int f1 = 10;
};
+template <typename T, typename U>
+struct is_same {
+ static constexpr bool value = false;
+};
+
+template <typename T>
+struct is_same<T, T> {
+ static constexpr bool value = true;
+};
+
+template struct is_same<bool, int>;
+template struct is_same<char, char>;
+
int main() {
auto char_min = std::numeric_limits<char>::min();
auto char_max = std::numeric_limits<char>::max();
diff --git a/testdata/test_binary.cc b/testdata/test_binary.cc
index 07ac9cf..7952b14 100644
--- a/testdata/test_binary.cc
+++ b/testdata/test_binary.cc
@@ -365,6 +365,19 @@
T x;
};
+template <typename T, typename U>
+struct is_same {
+ static constexpr bool value = false;
+};
+
+template <typename T>
+struct is_same<T, T> {
+ static constexpr bool value = true;
+};
+
+template struct is_same<bool, int>;
+template struct is_same<char, char>;
+
template <typename T>
const int T_1<T>::cx = 46;