diff --git a/src/librustc_plugin/registry.rs b/src/librustc_plugin/registry.rs
index 3cfd6a76dda63..dc5a38bb7647e 100644
--- a/src/librustc_plugin/registry.rs
+++ b/src/librustc_plugin/registry.rs
@@ -92,8 +92,11 @@ impl<'a> Registry<'a> {
/// ```no_run
/// #![plugin(my_plugin_name(... args ...))]
/// ```
- pub fn args<'b>(&'b self) -> &'b Vec
> {
- self.args_hidden.as_ref().expect("args not set")
+ ///
+ /// Returns empty slice in case the plugin was loaded
+ /// with `--extra-plugins`
+ pub fn args<'b>(&'b self) -> &'b [P] {
+ self.args_hidden.as_ref().map(|v| &v[..]).unwrap_or(&[])
}
/// Register a syntax extension of any kind.
diff --git a/src/test/run-pass-fulldeps/auxiliary/plugin_args.rs b/src/test/run-pass-fulldeps/auxiliary/plugin_args.rs
index f6e80266a15f5..99321ad42418d 100644
--- a/src/test/run-pass-fulldeps/auxiliary/plugin_args.rs
+++ b/src/test/run-pass-fulldeps/auxiliary/plugin_args.rs
@@ -45,7 +45,7 @@ impl TTMacroExpander for Expander {
#[plugin_registrar]
pub fn plugin_registrar(reg: &mut Registry) {
- let args = reg.args().clone();
+ let args = reg.args().to_owned();
reg.register_syntax_extension(token::intern("plugin_args"),
// FIXME (#22405): Replace `Box::new` with `box` here when/if possible.
NormalTT(Box::new(Expander { args: args, }), None, false));