From 7485903b6b4373d9ce39f8aca06ab7b97b6f0a5f Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 4 May 2018 10:59:33 -0700 Subject: Add catch and proc macros to the edition (fixes #50443) --- src/libsyntax/feature_gate.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index d8db76a95ff..9164694a1b7 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -300,7 +300,7 @@ declare_features! ( (active, abi_unadjusted, "1.16.0", None, None), // Procedural macros 2.0. - (active, proc_macro, "1.16.0", Some(38356), None), + (active, proc_macro, "1.16.0", Some(38356), Some(Edition::Edition2018)), // Declarative macros 2.0 (`macro`). (active, decl_macro, "1.17.0", Some(39412), None), @@ -324,7 +324,7 @@ declare_features! ( // Allows the `catch {...}` expression - (active, catch_expr, "1.17.0", Some(31436), None), + (active, catch_expr, "1.17.0", Some(31436), Some(Edition::Edition2018)), // Used to preserve symbols (see llvm.used) (active, used, "1.18.0", Some(40289), None), -- cgit 1.4.1-3-g733a5 From 10f66c71723bb7a674ddb698e7d188ec98e7a7a8 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 4 May 2018 11:01:08 -0700 Subject: Rename breakage lints --- src/libsyntax/edition.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src/libsyntax') diff --git a/src/libsyntax/edition.rs b/src/libsyntax/edition.rs index 3fc1c279f5a..7341941c242 100644 --- a/src/libsyntax/edition.rs +++ b/src/libsyntax/edition.rs @@ -50,8 +50,8 @@ impl fmt::Display for Edition { impl Edition { pub fn lint_name(&self) -> &'static str { match *self { - Edition::Edition2015 => "edition_2015", - Edition::Edition2018 => "edition_2018", + Edition::Edition2015 => "rust_2015_breakage", + Edition::Edition2018 => "rust_2018_breakage", } } -- cgit 1.4.1-3-g733a5 From b1951f450ae5ed34c3a14cda74036fe63a3abe91 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 4 May 2018 11:18:33 -0700 Subject: Make --edition imply the preview flag --- src/libsyntax/feature_gate.rs | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'src/libsyntax') diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 9164694a1b7..4c6d0282c2a 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -1848,6 +1848,12 @@ pub fn get_features(span_handler: &Handler, krate_attrs: &[ast::Attribute], let mut feature_checker = FeatureChecker::default(); + for &(.., f_edition, set) in ACTIVE_FEATURES.iter() { + if f_edition <= crate_edition { + set(&mut features, DUMMY_SP); + } + } + for attr in krate_attrs { if !attr.check_name("feature") { continue -- cgit 1.4.1-3-g733a5 From 9d34e8dd21264a0e23d87e12b6c0ec9bef835af3 Mon Sep 17 00:00:00 2001 From: Manish Goregaokar Date: Fri, 4 May 2018 11:37:27 -0700 Subject: Make extern_absolute_paths only work on the new edition --- src/librustc_resolve/lib.rs | 5 ++--- src/librustc_resolve/resolve_imports.rs | 3 ++- src/libsyntax/feature_gate.rs | 6 ++++-- .../compile-fail/rfc-2126-extern-absolute-paths/non-existent-1.rs | 2 ++ .../compile-fail/rfc-2126-extern-absolute-paths/non-existent-2.rs | 2 ++ .../compile-fail/rfc-2126-extern-absolute-paths/non-existent-3.rs | 2 ++ .../compile-fail/rfc-2126-extern-absolute-paths/single-segment.rs | 1 + src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile | 4 ++-- src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs | 1 + src/test/run-pass/rfc-2126-extern-absolute-paths/test.rs | 2 +- 10 files changed, 19 insertions(+), 9 deletions(-) (limited to 'src/libsyntax') diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index d4b212a15d8..0f931d4374e 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -3277,9 +3277,8 @@ impl<'a> Resolver<'a> { let prev_name = path[0].name; if prev_name == keywords::Extern.name() || prev_name == keywords::CrateRoot.name() && - // Note: When this feature stabilizes, this should - // be gated on sess.rust_2018() - self.session.features_untracked().extern_absolute_paths { + self.session.features_untracked().extern_absolute_paths && + self.session.rust_2018() { // `::extern_crate::a::b` let crate_id = self.crate_loader.process_path_extern(name, ident.span); let crate_root = diff --git a/src/librustc_resolve/resolve_imports.rs b/src/librustc_resolve/resolve_imports.rs index 17aa510b565..6a5a31a885f 100644 --- a/src/librustc_resolve/resolve_imports.rs +++ b/src/librustc_resolve/resolve_imports.rs @@ -646,7 +646,8 @@ impl<'a, 'b:'a> ImportResolver<'a, 'b> { if module_path.len() == 1 && (module_path[0].name == keywords::CrateRoot.name() || module_path[0].name == keywords::Extern.name()) { let is_extern = module_path[0].name == keywords::Extern.name() || - self.session.features_untracked().extern_absolute_paths; + (self.session.features_untracked().extern_absolute_paths && + self.session.rust_2018()); match directive.subclass { GlobImport { .. } if is_extern => { return Some((directive.span, diff --git a/src/libsyntax/feature_gate.rs b/src/libsyntax/feature_gate.rs index 4c6d0282c2a..5155408ba63 100644 --- a/src/libsyntax/feature_gate.rs +++ b/src/libsyntax/feature_gate.rs @@ -1849,8 +1849,10 @@ pub fn get_features(span_handler: &Handler, krate_attrs: &[ast::Attribute], let mut feature_checker = FeatureChecker::default(); for &(.., f_edition, set) in ACTIVE_FEATURES.iter() { - if f_edition <= crate_edition { - set(&mut features, DUMMY_SP); + if let Some(f_edition) = f_edition { + if f_edition <= crate_edition { + set(&mut features, DUMMY_SP); + } } } diff --git a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-1.rs b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-1.rs index 14d5d9caa31..fcf4714ba96 100644 --- a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-1.rs +++ b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-1.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// compile-flags: --edition=2018 -Zunstable-options + #![feature(extern_absolute_paths)] use xcrate::S; //~ ERROR can't find crate for `xcrate` diff --git a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-2.rs b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-2.rs index defd103f9e4..c256c5592c2 100644 --- a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-2.rs +++ b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-2.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// compile-flags: --edition=2018 -Zunstable-options + #![feature(extern_absolute_paths)] fn main() { diff --git a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-3.rs b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-3.rs index be1708e2b57..837dc617b3a 100644 --- a/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-3.rs +++ b/src/test/compile-fail/rfc-2126-extern-absolute-paths/non-existent-3.rs @@ -8,6 +8,8 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// compile-flags: --edition=2018 -Zunstable-options + #![feature(extern_absolute_paths)] use ycrate; //~ ERROR can't find crate for `ycrate` diff --git a/src/test/compile-fail/rfc-2126-extern-absolute-paths/single-segment.rs b/src/test/compile-fail/rfc-2126-extern-absolute-paths/single-segment.rs index e44465750d1..9b7baa00163 100644 --- a/src/test/compile-fail/rfc-2126-extern-absolute-paths/single-segment.rs +++ b/src/test/compile-fail/rfc-2126-extern-absolute-paths/single-segment.rs @@ -9,6 +9,7 @@ // except according to those terms. // aux-build:xcrate.rs +// compile-flags: --edition=2018 -Zunstable-options #![feature(crate_in_paths)] #![feature(extern_absolute_paths)] diff --git a/src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile b/src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile index a132668ec7c..6a67b5862a8 100644 --- a/src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile +++ b/src/test/run-make-fulldeps/save-analysis-rfc2126/Makefile @@ -1,9 +1,9 @@ -include ../tools.mk all: extern_absolute_paths.rs extern_in_paths.rs krate2 - $(RUSTC) extern_absolute_paths.rs -Zsave-analysis + $(RUSTC) extern_absolute_paths.rs -Zsave-analysis --edition=2018 cat $(TMPDIR)/save-analysis/extern_absolute_paths.json | "$(PYTHON)" validate_json.py - $(RUSTC) extern_in_paths.rs -Zsave-analysis + $(RUSTC) extern_in_paths.rs -Zsave-analysis --edition=2018 cat $(TMPDIR)/save-analysis/extern_in_paths.json | "$(PYTHON)" validate_json.py krate2: krate2.rs diff --git a/src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs b/src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs index 0fa125a3e50..bbe066481a8 100644 --- a/src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs +++ b/src/test/run-pass/rfc-2126-extern-absolute-paths/basic.rs @@ -9,6 +9,7 @@ // except according to those terms. // aux-build:xcrate.rs +// compile-flags: --edition=2018 -Zunstable-options #![feature(extern_absolute_paths)] diff --git a/src/test/run-pass/rfc-2126-extern-absolute-paths/test.rs b/src/test/run-pass/rfc-2126-extern-absolute-paths/test.rs index 796f652d6b5..ead462cf0d2 100644 --- a/src/test/run-pass/rfc-2126-extern-absolute-paths/test.rs +++ b/src/test/run-pass/rfc-2126-extern-absolute-paths/test.rs @@ -12,7 +12,7 @@ // // Regression test for #47075. -// compile-flags: --test +// compile-flags: --test --edition=2018 -Zunstable-options #![feature(extern_absolute_paths)] -- cgit 1.4.1-3-g733a5