Skip to content

Commit b15a82b

Browse files
committed
test: add test cases for dependent non-in parameters
1 parent bd22b1e commit b15a82b

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

regression-tests/pure2-bugfix-for-dependent-types.cpp2

+2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
identity: <T> type == T;
22

3+
f: <T> (inout _: T::value_type) = { }
4+
f: <T> (move _: T::value_type) = { }
35
f: <T, V: T::value_type> (x: T::value_type) -> T::value_type = {
46
assert(x is T::value_type);
57
y: T::value_type;

regression-tests/test-results/pure2-bugfix-for-dependent-types.cpp

+12-6
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88

99
#line 1 "pure2-bugfix-for-dependent-types.cpp2"
1010

11-
#line 47 "pure2-bugfix-for-dependent-types.cpp2"
11+
#line 49 "pure2-bugfix-for-dependent-types.cpp2"
1212
template<typename T> class t;
1313

1414

@@ -18,16 +18,18 @@ template<typename T> class t;
1818
template<typename T> using identity = T;
1919
#line 2 "pure2-bugfix-for-dependent-types.cpp2"
2020

21+
template<typename T> auto f([[maybe_unused]] typename T::value_type& unnamed_param_1) -> void;
22+
template<typename T> auto f([[maybe_unused]] typename T::value_type&& unnamed_param_1) -> void;
2123
template<typename T, T::value_type V> [[nodiscard]] auto f(cpp2::impl::in<typename T::value_type> x) -> T::value_type;
2224

23-
#line 47 "pure2-bugfix-for-dependent-types.cpp2"
25+
#line 49 "pure2-bugfix-for-dependent-types.cpp2"
2426
template<typename T> class t {
2527
struct u_x_as_base { typename T::value_type x; };
2628

27-
#line 48 "pure2-bugfix-for-dependent-types.cpp2"
29+
#line 50 "pure2-bugfix-for-dependent-types.cpp2"
2830
public: class u: public u_x_as_base, public T::type {
2931

30-
#line 51 "pure2-bugfix-for-dependent-types.cpp2"
32+
#line 53 "pure2-bugfix-for-dependent-types.cpp2"
3133
// Test that there's no `typename` in the member initializer list.
3234
public: u(u const& that);
3335
};
@@ -41,6 +43,10 @@ auto main() -> int;
4143
#line 1 "pure2-bugfix-for-dependent-types.cpp2"
4244

4345
#line 3 "pure2-bugfix-for-dependent-types.cpp2"
46+
template<typename T> auto f([[maybe_unused]] typename T::value_type& unnamed_param_1) -> void{}
47+
#line 4 "pure2-bugfix-for-dependent-types.cpp2"
48+
template<typename T> auto f([[maybe_unused]] typename T::value_type&& unnamed_param_1) -> void{}
49+
#line 5 "pure2-bugfix-for-dependent-types.cpp2"
4450
template<typename T, T::value_type V> [[nodiscard]] auto f(cpp2::impl::in<typename T::value_type> x) -> T::value_type{
4551
if (cpp2::cpp2_default.is_active() && !(cpp2::impl::is<typename T::value_type>(x)) ) { cpp2::cpp2_default.report_violation(""); }
4652
cpp2::impl::deferred_init<typename T::value_type> y;
@@ -85,12 +91,12 @@ template<typename T, T::value_type V> [[nodiscard]] auto f(cpp2::impl::in<typena
8591
}
8692
}
8793

88-
#line 52 "pure2-bugfix-for-dependent-types.cpp2"
94+
#line 54 "pure2-bugfix-for-dependent-types.cpp2"
8995
template <typename T> t<T>::u::u(u const& that)
9096
: u_x_as_base{ that.x }
9197
, T::type{ static_cast<typename T::type const&>(that) }{}
9298

93-
#line 57 "pure2-bugfix-for-dependent-types.cpp2"
99+
#line 59 "pure2-bugfix-for-dependent-types.cpp2"
94100
auto main() -> int{
95101
using zero = std::integral_constant<cpp2::i32,0>;
96102
static_cast<void>(f<zero,0>(0));

0 commit comments

Comments
 (0)