diff --git a/src/librustc_resolve/macros.rs b/src/librustc_resolve/macros.rs index df3be8fa0f810..f83413095934d 100644 --- a/src/librustc_resolve/macros.rs +++ b/src/librustc_resolve/macros.rs @@ -230,12 +230,12 @@ impl<'a> base::Resolver for Resolver<'a> { attrs.remove(i); } else { let mut tokens = Vec::new(); - for (i, path) in traits.iter().enumerate() { - if i > 0 { + for (j, path) in traits.iter().enumerate() { + if j > 0 { tokens.push(TokenTree::Token(attrs[i].span, Token::Comma).into()); } - for (j, segment) in path.segments.iter().enumerate() { - if j > 0 { + for (k, segment) in path.segments.iter().enumerate() { + if k > 0 { tokens.push(TokenTree::Token(path.span, Token::ModSep).into()); } let tok = Token::Ident(segment.identifier); diff --git a/src/test/run-pass-fulldeps/auxiliary/custom_derive_plugin.rs b/src/test/run-pass-fulldeps/auxiliary/custom_derive_plugin.rs index e46e4fb3766d3..16856d3041749 100644 --- a/src/test/run-pass-fulldeps/auxiliary/custom_derive_plugin.rs +++ b/src/test/run-pass-fulldeps/auxiliary/custom_derive_plugin.rs @@ -34,8 +34,14 @@ pub fn plugin_registrar(reg: &mut Registry) { reg.register_custom_derive( Symbol::intern("derive_TotalSum"), MultiDecorator(box expand)); + + reg.register_custom_derive( + Symbol::intern("derive_Nothing"), + MultiDecorator(box noop)); } +fn noop(_: &mut ExtCtxt, _: Span, _: &ast::MetaItem, _: &Annotatable, _: &mut FnMut(Annotatable)) {} + fn expand(cx: &mut ExtCtxt, span: Span, mitem: &ast::MetaItem, diff --git a/src/test/run-pass-fulldeps/issue-40663.rs b/src/test/run-pass-fulldeps/issue-40663.rs new file mode 100644 index 0000000000000..d030eab64e564 --- /dev/null +++ b/src/test/run-pass-fulldeps/issue-40663.rs @@ -0,0 +1,19 @@ +// Copyright 2017 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +// aux-build:custom_derive_plugin.rs + +#![feature(plugin, custom_derive)] +#![plugin(custom_derive_plugin)] + +#[derive(Nothing, Nothing, Nothing)] +struct S; + +fn main() {}