Skip to content

Commit 1f0c05f

Browse files
committed
auto merge of #7018 : bill-myers/rust/fix_7017, r=thestinger
Minimally fixes #7017, we were overwriting the result and thus ignoring attributes before the last. csearch::get_item_attrs and decoder::get_item_attrs should probably also be changed to each_item_attrs using the for protocol, but that's just a minor performance/style issue.
2 parents 470bf0d + 54ec7ab commit 1f0c05f

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

src/librustc/middle/ty.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4045,7 +4045,7 @@ pub fn has_attr(tcx: ctxt, did: def_id, attr: &str) -> bool {
40454045
} else {
40464046
let mut ret = false;
40474047
do csearch::get_item_attrs(tcx.cstore, did) |meta_items| {
4048-
ret = attr::contains_name(meta_items, attr);
4048+
ret = ret || attr::contains_name(meta_items, attr);
40494049
}
40504050
ret
40514051
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
// Copyright 2013 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
extern mod extra;
12+
13+
fn o<T: Owned>(_: &T) {}
14+
fn c<T: Const>(_: &T) {}
15+
16+
fn main() {
17+
let x = extra::rc::rc_mut_from_owned(0);
18+
o(&x); //~ ERROR instantiating a type parameter with an incompatible type `extra::rc::RcMut<int>`, which does not fulfill `Owned`
19+
c(&x); //~ ERROR instantiating a type parameter with an incompatible type `extra::rc::RcMut<int>`, which does not fulfill `Const`
20+
}

0 commit comments

Comments
 (0)