aboutsummaryrefslogtreecommitdiff
path: root/build2/test/script/script.cxx
diff options
context:
space:
mode:
authorKaren Arutyunov <karen@codesynthesis.com>2017-01-23 12:12:02 +0300
committerKaren Arutyunov <karen@codesynthesis.com>2017-01-24 14:53:00 +0300
commit7d292e2ab53dfc2cf6595f30bcdb6efa4bf260a3 (patch)
treeb1ef941923f1ab1634fda8baa2d1df9cfc45b8e5 /build2/test/script/script.cxx
parent28106f96de8ae5cdb3a0ee0e3a8a8185551e3b00 (diff)
Add support for shared here-documents
Diffstat (limited to 'build2/test/script/script.cxx')
-rw-r--r--build2/test/script/script.cxx26
1 files changed, 23 insertions, 3 deletions
diff --git a/build2/test/script/script.cxx b/build2/test/script/script.cxx
index f5cec44..342cae9 100644
--- a/build2/test/script/script.cxx
+++ b/build2/test/script/script.cxx
@@ -153,6 +153,8 @@ namespace build2
print_path (r.file.path);
break;
}
+
+ case redirect_type::here_doc_ref: assert (false); break;
}
};
@@ -206,9 +208,14 @@ namespace build2
// Redirects.
//
- if (c.in.type != redirect_type::none) print_redirect (c.in, "<");
- if (c.out.type != redirect_type::none) print_redirect (c.out, ">");
- if (c.err.type != redirect_type::none) print_redirect (c.err, "2>");
+ if (c.in.effective ().type != redirect_type::none)
+ print_redirect (c.in.effective (), "<");
+
+ if (c.out.effective ().type != redirect_type::none)
+ print_redirect (c.out.effective (), ">");
+
+ if (c.err.effective ().type != redirect_type::none)
+ print_redirect (c.err.effective (), "2>");
for (const auto& p: c.cleanups)
{
@@ -322,6 +329,8 @@ namespace build2
}
case redirect_type::file: new (&file) file_type (); break;
+
+ case redirect_type::here_doc_ref: assert (false); break;
}
}
@@ -358,6 +367,11 @@ namespace build2
new (&file) file_type (move (r.file));
break;
}
+ case redirect_type::here_doc_ref:
+ {
+ new (&ref) reference_wrapper<const redirect> (r.ref);
+ break;
+ }
}
}
@@ -378,6 +392,12 @@ namespace build2
case redirect_type::here_doc_regex: regex.~regex_lines (); break;
case redirect_type::file: file.~file_type (); break;
+
+ case redirect_type::here_doc_ref:
+ {
+ ref.~reference_wrapper<const redirect> ();
+ break;
+ }
}
}