about summary refs log tree commit diff
diff options
context:
space:
mode:
authorVadim Petrochenkov <vadim.petrochenkov@gmail.com>2017-01-20 20:11:42 +0300
committerVadim Petrochenkov <vadim.petrochenkov@gmail.com>2017-01-29 02:57:14 +0300
commitc9788fdd5b8d136b1c32e0130f8e2fdbc8f8073b (patch)
tree6ba278299c864fea6a0a9496bed7ce46ab80074f
parent8b060e25ba80eb2866839335302b31359c18421a (diff)
downloadrust-c9788fdd5b8d136b1c32e0130f8e2fdbc8f8073b.tar.gz
rust-c9788fdd5b8d136b1c32e0130f8e2fdbc8f8073b.zip
Remove no longer necessary ctor checks in rustc_privacy
-rw-r--r--src/librustc_privacy/diagnostics.rs43
-rw-r--r--src/librustc_privacy/lib.rs29
-rw-r--r--src/librustdoc/html/markdown.rs2
3 files changed, 5 insertions, 69 deletions
diff --git a/src/librustc_privacy/diagnostics.rs b/src/librustc_privacy/diagnostics.rs
index 8506b1d75c5..49f2ccb7c57 100644
--- a/src/librustc_privacy/diagnostics.rs
+++ b/src/librustc_privacy/diagnostics.rs
@@ -115,45 +115,6 @@ pub enum Foo {
 ```
 "##,
 
-E0450: r##"
-A tuple constructor was invoked while some of its fields are private. Erroneous
-code example:
-
-```compile_fail
-mod Bar {
-    pub struct Foo(isize);
-}
-
-let f = Bar::Foo(0); // error: cannot invoke tuple struct constructor with
-                     //        private fields
-```
-
-To solve this issue, please ensure that all of the fields of the tuple struct
-are public. Alternatively, provide a `new()` method to the tuple struct to
-construct it from a given inner value. Example:
-
-```
-mod Bar {
-    pub struct Foo(pub isize); // we set its field to public
-}
-
-let f = Bar::Foo(0); // ok!
-
-// or:
-mod bar {
-    pub struct Foo(isize);
-
-    impl Foo {
-        pub fn new(x: isize) -> Foo {
-            Foo(x)
-        }
-    }
-}
-
-let f = bar::Foo::new(1);
-```
-"##,
-
 E0451: r##"
 A struct constructor with private fields was invoked. Erroneous code example:
 
@@ -204,3 +165,7 @@ let f = Bar::Foo::new(); // ok!
 "##,
 
 }
+
+register_diagnostics! {
+//  E0450, moved into resolve
+}
diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs
index 7357d6f38b6..9dc94745cff 100644
--- a/src/librustc_privacy/lib.rs
+++ b/src/librustc_privacy/lib.rs
@@ -27,7 +27,7 @@ extern crate syntax_pos;
 
 use rustc::dep_graph::DepNode;
 use rustc::hir::{self, PatKind};
-use rustc::hir::def::{self, Def, CtorKind};
+use rustc::hir::def::{self, Def};
 use rustc::hir::def_id::{CRATE_DEF_INDEX, DefId};
 use rustc::hir::intravisit::{self, Visitor, NestedVisitorMap};
 use rustc::hir::itemlikevisit::DeepVisitor;
@@ -478,33 +478,6 @@ impl<'a, 'tcx> Visitor<'tcx> for PrivacyVisitor<'a, 'tcx> {
                     }
                 }
             }
-            hir::ExprPath(hir::QPath::Resolved(_, ref path)) => {
-                if let Def::StructCtor(_, CtorKind::Fn) = path.def {
-                    let adt_def = self.tcx.expect_variant_def(path.def);
-                    let private_indexes = adt_def.fields.iter().enumerate().filter(|&(_, field)| {
-                        !field.vis.is_accessible_from(self.curitem, self.tcx)
-                    }).map(|(i, _)| i).collect::<Vec<_>>();
-
-                    if !private_indexes.is_empty() {
-                        let mut error = struct_span_err!(self.tcx.sess, expr.span, E0450,
-                                                         "cannot invoke tuple struct constructor \
-                                                          with private fields");
-                        error.span_label(expr.span,
-                                         &format!("cannot construct with a private field"));
-
-                        if let Some(node_id) = self.tcx.hir.as_local_node_id(adt_def.did) {
-                            let node = self.tcx.hir.find(node_id);
-                            if let Some(hir::map::NodeStructCtor(vdata)) = node {
-                                for i in private_indexes {
-                                    error.span_label(vdata.fields()[i].span,
-                                                     &format!("private field declared here"));
-                                }
-                            }
-                        }
-                        error.emit();
-                    }
-                }
-            }
             _ => {}
         }
 
diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs
index 8cc3b60a184..442a2f40742 100644
--- a/src/librustdoc/html/markdown.rs
+++ b/src/librustdoc/html/markdown.rs
@@ -660,8 +660,6 @@ mod tests {
         t("no_run",                false,        true,   false,  true,  false, false, Vec::new());
         t("test_harness",          false,        false,  false,  true,  true,  false, Vec::new());
         t("compile_fail",          false,        true,   false,  true,  false, true,  Vec::new());
-        t("E0450",                 false,        false,  false,  true,  false, false,
-                                   vec!["E0450".to_owned()]);
         t("{.no_run .example}",    false,        true,   false,  true,  false, false, Vec::new());
         t("{.sh .should_panic}",   true,         false,  false,  true,  false, false, Vec::new());
         t("{.example .rust}",      false,        false,  false,  true,  false, false, Vec::new());