Skip to content

Commit

Permalink
Auto merge of #43270 - petrochenkov:fixstab, r=alexcrichton
Browse files Browse the repository at this point in the history
Fix checking for missing stability annotations

This was a regression from #37676 causing "unmarked API" ICEs like #43027.

r? @alexcrichton
  • Loading branch information
bors committed Jul 20, 2017
2 parents 381d51d + 465ada6 commit 1edbc3d
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 7 deletions.
4 changes: 2 additions & 2 deletions src/liballoc/lib.rs
Expand Up @@ -244,10 +244,10 @@ mod std {
pub enum Bound<T> {
/// An inclusive bound.
#[stable(feature = "collections_bound", since = "1.17.0")]
Included(T),
Included(#[stable(feature = "collections_bound", since = "1.17.0")] T),
/// An exclusive bound.
#[stable(feature = "collections_bound", since = "1.17.0")]
Excluded(T),
Excluded(#[stable(feature = "collections_bound", since = "1.17.0")] T),
/// An infinite endpoint. Indicates that there is no bound in this direction.
#[stable(feature = "collections_bound", since = "1.17.0")]
Unbounded,
Expand Down
4 changes: 2 additions & 2 deletions src/librustc/middle/stability.rs
Expand Up @@ -313,8 +313,9 @@ struct MissingStabilityAnnotations<'a, 'tcx: 'a> {
impl<'a, 'tcx: 'a> MissingStabilityAnnotations<'a, 'tcx> {
fn check_missing_stability(&self, id: NodeId, span: Span) {
let def_id = self.tcx.hir.local_def_id(id);
let stab = self.tcx.stability.borrow().stab_map.get(&def_id).cloned();
let is_error = !self.tcx.sess.opts.test &&
!self.tcx.stability.borrow().stab_map.contains_key(&def_id) &&
(stab == None || stab == Some(None)) &&
self.access_levels.is_reachable(id);
if is_error {
self.tcx.sess.span_err(span, "This node does not have a stability attribute");
Expand Down Expand Up @@ -420,7 +421,6 @@ impl<'a, 'tcx> Index<'tcx> {
let is_staged_api =
sess.opts.debugging_opts.force_unstable_if_unmarked ||
sess.features.borrow().staged_api;

let mut staged_api = FxHashMap();
staged_api.insert(LOCAL_CRATE, is_staged_api);
Index {
Expand Down
1 change: 0 additions & 1 deletion src/libterm/lib.rs
Expand Up @@ -51,7 +51,6 @@
#![deny(missing_docs)]
#![deny(warnings)]

#![feature(staged_api)]
#![cfg_attr(windows, feature(libc))]
// Handle rustfmt skips
#![feature(custom_attribute)]
Expand Down
1 change: 0 additions & 1 deletion src/test/compile-fail-fulldeps/explore-issue-38412.rs
Expand Up @@ -10,7 +10,6 @@

// aux-build:pub_and_stability.rs

#![feature(staged_api)]
#![feature(unused_feature)]

// A big point of this test is that we *declare* `unstable_declared`,
Expand Down
1 change: 0 additions & 1 deletion src/test/compile-fail/lint-forbid-cmdline.rs
Expand Up @@ -10,7 +10,6 @@

// compile-flags: -F deprecated

#![feature(staged_api)]
#[allow(deprecated)] //~ ERROR allow(deprecated) overruled by outer forbid(deprecated)
fn main() {
}
20 changes: 20 additions & 0 deletions src/test/compile-fail/stability-attribute-issue-43027.rs
@@ -0,0 +1,20 @@
// 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 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.

#![feature(staged_api)]
#![stable(feature = "test", since = "0")]

#[stable(feature = "test", since = "0")]
pub struct Reverse<T>(pub T); //~ ERROR This node does not have a stability attribute

fn main() {
// Make sure the field is used to fill the stability cache
Reverse(0).0;
}

0 comments on commit 1edbc3d

Please sign in to comment.