diff options
| author | bors <bors@rust-lang.org> | 2019-06-19 16:37:58 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2019-06-19 16:37:58 +0000 |
| commit | 5e0c6a69e075d9c7d19e28264bb8941f72ecaf4e (patch) | |
| tree | 340f2e3775fb368108e2fe31ba8b24c9aa521111 /src/libsyntax | |
| parent | e79b2a18a21e6b178d73473bb8fdbf3d18c66051 (diff) | |
| parent | bf6c505c23a1026282cc0518743c9cd6e727c2aa (diff) | |
| download | rust-5e0c6a69e075d9c7d19e28264bb8941f72ecaf4e.tar.gz rust-5e0c6a69e075d9c7d19e28264bb8941f72ecaf4e.zip | |
Auto merge of #61962 - Centril:rollup-y6sg1zw, r=Centril
Rollup of 4 pull requests Successful merges: - #60667 ( Add functions for building raw slices to libcore ) - #61547 (Support `cfg` and `cfg_attr` on generic parameters) - #61861 (Update rustfmt and rls) - #61940 (Make Place::ty iterate) Failed merges: r? @ghost
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/config.rs | 20 | ||||
| -rw-r--r-- | src/libsyntax/ext/expand.rs | 6 |
2 files changed, 7 insertions, 19 deletions
diff --git a/src/libsyntax/config.rs b/src/libsyntax/config.rs index 1cc13ac7878..3b42e1de614 100644 --- a/src/libsyntax/config.rs +++ b/src/libsyntax/config.rs @@ -240,6 +240,10 @@ impl<'a> StripUnconfigured<'a> { items.flat_map_in_place(|item| self.configure(item)); } + pub fn configure_generic_params(&mut self, params: &mut Vec<ast::GenericParam>) { + params.flat_map_in_place(|param| self.configure(param)); + } + fn configure_variant_data(&mut self, vdata: &mut ast::VariantData) { match vdata { ast::VariantData::Struct(fields, ..) | ast::VariantData::Tuple(fields, _) => @@ -301,22 +305,6 @@ impl<'a> StripUnconfigured<'a> { pub fn configure_fn_decl(&mut self, fn_decl: &mut ast::FnDecl) { fn_decl.inputs.flat_map_in_place(|arg| self.configure(arg)); } - - /// Denies `#[cfg]` on generic parameters until we decide what to do with it. - /// See issue #51279. - pub fn disallow_cfg_on_generic_param(&mut self, param: &ast::GenericParam) { - for attr in param.attrs() { - let offending_attr = if attr.check_name(sym::cfg) { - "cfg" - } else if attr.check_name(sym::cfg_attr) { - "cfg_attr" - } else { - continue; - }; - let msg = format!("#[{}] cannot be applied on a generic parameter", offending_attr); - self.sess.span_diagnostic.span_err(attr.span, &msg); - } - } } impl<'a> MutVisitor for StripUnconfigured<'a> { diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index be90def0bdd..cfd67575b6f 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -1329,9 +1329,9 @@ impl<'a, 'b> MutVisitor for InvocationCollector<'a, 'b> { } } - fn visit_generic_param(&mut self, param: &mut ast::GenericParam) { - self.cfg.disallow_cfg_on_generic_param(¶m); - noop_visit_generic_param(param, self) + fn visit_generic_params(&mut self, params: &mut Vec<ast::GenericParam>) { + self.cfg.configure_generic_params(params); + noop_visit_generic_params(params, self); } fn visit_attribute(&mut self, at: &mut ast::Attribute) { |
