summaryrefslogtreecommitdiff
path: root/gcc/testsuite/gdc.test/compilable/test19097.d
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/testsuite/gdc.test/compilable/test19097.d')
-rw-r--r--gcc/testsuite/gdc.test/compilable/test19097.d40
1 files changed, 40 insertions, 0 deletions
diff --git a/gcc/testsuite/gdc.test/compilable/test19097.d b/gcc/testsuite/gdc.test/compilable/test19097.d
index 19e189caf5d..a6d30024881 100644
--- a/gcc/testsuite/gdc.test/compilable/test19097.d
+++ b/gcc/testsuite/gdc.test/compilable/test19097.d
@@ -21,3 +21,43 @@ void foo(scope int* pf)
betty(rf, pf);
boop(rf, pf);
}
+
+// https://issues.dlang.org/show_bug.cgi?id=22801
+struct Wrapper
+{
+ int* ptr;
+
+ this(return ref int var) @safe
+ {
+ this.ptr = &var;
+ }
+}
+
+void main() @safe
+{
+ int i;
+ auto w = Wrapper(i);
+ auto wt = WrapperT!()(i);
+}
+
+void assign(ref scope int* x, return ref int y) @safe
+{
+ x = &y;
+}
+
+// https://issues.dlang.org/show_bug.cgi?id=22967
+// inference of `return ref` when assigned to first parameter
+struct WrapperT()
+{
+ int* ptr;
+
+ this(ref int var) @safe
+ {
+ this.ptr = &var;
+ }
+
+ static void assignInferred(ref scope int* xi, ref int yi) @safe
+ {
+ xi = &yi;
+ }
+}