mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-23 12:23:22 +00:00
Auto merge of #52348 - oli-obk:bugfix, r=petrochenkov
Reach the body of functions returning `impl Trait` but don't treat it as public fixes #52128 r? @pnkfelix cc @eddyb
This commit is contained in:
commit
cc903c64eb
@ -435,10 +435,6 @@ impl<'b, 'a, 'tcx> ReachEverythingInTheInterfaceVisitor<'b, 'a, 'tcx> {
|
||||
|
||||
fn ty(&mut self) -> &mut Self {
|
||||
let ty = self.ev.tcx.type_of(self.item_def_id);
|
||||
self.walk_ty(ty)
|
||||
}
|
||||
|
||||
fn walk_ty(&mut self, ty: Ty<'tcx>) -> &mut Self {
|
||||
ty.visit_with(self);
|
||||
if let ty::TyFnDef(def_id, _) = ty.sty {
|
||||
if def_id == self.item_def_id {
|
||||
@ -1570,7 +1566,7 @@ impl<'a, 'tcx> Visitor<'tcx> for PrivateItemsInPublicInterfacesVisitor<'a, 'tcx>
|
||||
// where `X` is the `impl Iterator<Item=T>` itself,
|
||||
// stored in `predicates_of`, not in the `Ty` itself.
|
||||
|
||||
self.check(item.id, self.inner_visibility).predicates();
|
||||
self.check(item.id, item_visibility).predicates();
|
||||
}
|
||||
// Subitems of these items have inherited publicity
|
||||
hir::ItemConst(..) | hir::ItemStatic(..) | hir::ItemFn(..) |
|
||||
|
@ -17,6 +17,10 @@ fn some_internal_fn() -> u32 {
|
||||
1
|
||||
}
|
||||
|
||||
fn other_internal_fn() -> u32 {
|
||||
1
|
||||
}
|
||||
|
||||
// See #40839
|
||||
pub fn return_closure_accessing_internal_fn() -> impl Fn() -> u32 {
|
||||
|| {
|
||||
@ -25,5 +29,5 @@ pub fn return_closure_accessing_internal_fn() -> impl Fn() -> u32 {
|
||||
}
|
||||
|
||||
pub fn return_internal_fn() -> impl Fn() -> u32 {
|
||||
some_internal_fn
|
||||
other_internal_fn
|
||||
}
|
||||
|
35
src/test/ui/impl-trait/issue-52128.rs
Normal file
35
src/test/ui/impl-trait/issue-52128.rs
Normal file
@ -0,0 +1,35 @@
|
||||
// Copyright 2018 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.
|
||||
|
||||
// compile-pass
|
||||
|
||||
#![deny(warnings)]
|
||||
|
||||
use std::collections::BTreeMap;
|
||||
|
||||
pub struct RangeMap {
|
||||
map: BTreeMap<Range, u8>,
|
||||
}
|
||||
|
||||
#[derive(Eq, PartialEq, Ord, PartialOrd)]
|
||||
struct Range;
|
||||
|
||||
impl RangeMap {
|
||||
fn iter_with_range<'a>(&'a self) -> impl Iterator<Item = (&'a Range, &'a u8)> + 'a {
|
||||
self.map.range(Range..Range)
|
||||
}
|
||||
|
||||
pub fn iter<'a>(&'a self) -> impl Iterator<Item = &'a u8> + 'a {
|
||||
self.iter_with_range().map(|(_, data)| data)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
fn main() {}
|
Loading…
Reference in New Issue
Block a user