Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Rollup of 5 pull requests #114922

Merged
merged 10 commits into from
Aug 17, 2023
4 changes: 2 additions & 2 deletions compiler/rustc_middle/src/ty/sty.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2827,11 +2827,11 @@ impl<'tcx> Ty<'tcx> {

ty::Adt(def, _args) => def.sized_constraint(tcx).skip_binder().is_empty(),

ty::Alias(..) | ty::Param(_) | ty::Placeholder(..) => false,
ty::Alias(..) | ty::Param(_) | ty::Placeholder(..) | ty::Bound(..) => false,

ty::Infer(ty::TyVar(_)) => false,

ty::Bound(..) | ty::Infer(ty::FreshTy(_) | ty::FreshIntTy(_) | ty::FreshFloatTy(_)) => {
ty::Infer(ty::FreshTy(_) | ty::FreshIntTy(_) | ty::FreshFloatTy(_)) => {
bug!("`is_trivially_sized` applied to unexpected type: {:?}", self)
}
}
Expand Down
8 changes: 4 additions & 4 deletions library/core/src/ffi/c_str.rs
Original file line number Diff line number Diff line change
Expand Up @@ -20,10 +20,10 @@ use crate::str;
/// in each pair are borrowed references; the latter are owned
/// strings.
///
/// Note that this structure is **not** `repr(C)` and is not recommended to be
/// placed in the signatures of FFI functions. Instead, safe wrappers of FFI
/// functions may leverage the unsafe [`CStr::from_ptr`] constructor to provide
/// a safe interface to other consumers.
/// Note that this structure does **not** have a guaranteed layout (the `repr(transparent)`
/// notwithstanding) and is not recommended to be placed in the signatures of FFI functions.
/// Instead, safe wrappers of FFI functions may leverage the unsafe [`CStr::from_ptr`] constructor
/// to provide a safe interface to other consumers.
///
/// [`CString`]: ../../std/ffi/struct.CString.html
/// [`String`]: ../../std/string/struct.String.html
Expand Down
5 changes: 2 additions & 3 deletions library/std/src/sync/mpsc/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -303,12 +303,11 @@ pub struct IntoIter<T> {
rx: Receiver<T>,
}

/// The sending-half of Rust's asynchronous [`channel`] type. This half can only be
/// owned by one thread, but it can be cloned to send to other threads.
/// The sending-half of Rust's asynchronous [`channel`] type.
///
/// Messages can be sent through this channel with [`send`].
///
/// Note: all senders (the original and the clones) need to be dropped for the receiver
/// Note: all senders (the original and its clones) need to be dropped for the receiver
/// to stop blocking to receive messages with [`Receiver::recv`].
///
/// [`send`]: Sender::send
Expand Down
16 changes: 16 additions & 0 deletions src/librustdoc/doctest.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,7 +469,9 @@ fn run_test(
// Run the code!
let mut cmd;

let output_file = make_maybe_absolute_path(output_file);
if let Some(tool) = runtool {
let tool = make_maybe_absolute_path(tool.into());
cmd = Command::new(tool);
cmd.args(runtool_args);
cmd.arg(output_file);
Expand Down Expand Up @@ -503,6 +505,20 @@ fn run_test(
Ok(())
}

/// Converts a path intended to use as a command to absolute if it is
/// relative, and not a single component.
///
/// This is needed to deal with relative paths interacting with
/// `Command::current_dir` in a platform-specific way.
fn make_maybe_absolute_path(path: PathBuf) -> PathBuf {
if path.components().count() == 1 {
// Look up process via PATH.
path
} else {
std::env::current_dir().map(|c| c.join(&path)).unwrap_or_else(|_| path)
}
}

/// Transforms a test into code that can be compiled into a Rust binary, and returns the number of
/// lines before the test code begins as well as if the output stream supports colors or not.
pub(crate) fn make_test(
Expand Down
13 changes: 12 additions & 1 deletion tests/run-make/doctests-keep-binaries/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ include ../tools.mk

# Check that valid binaries are persisted by running them, regardless of whether the --run or --no-run option is used.

all: run no_run
MY_SRC_DIR := ${CURDIR}

all: run no_run test_run_directory

run:
mkdir -p $(TMPDIR)/doctests
Expand All @@ -20,3 +22,12 @@ no_run:
$(TMPDIR)/doctests/t_rs_2_0/rust_out
$(TMPDIR)/doctests/t_rs_8_0/rust_out
rm -rf $(TMPDIR)/doctests

# Behavior with --test-run-directory with relative paths.
test_run_directory:
mkdir -p $(TMPDIR)/doctests
mkdir -p $(TMPDIR)/rundir
$(RUSTC) --crate-type rlib t.rs
( cd $(TMPDIR); \
$(RUSTDOC) -Zunstable-options --test --persist-doctests doctests --test-run-directory rundir --extern t=libt.rlib $(MY_SRC_DIR)/t.rs )
rm -rf $(TMPDIR)/doctests $(TMPDIR)/rundir
20 changes: 20 additions & 0 deletions tests/run-make/doctests-runtool/Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# ignore-cross-compile
include ../tools.mk

# Tests behavior of rustdoc --runtool

MY_SRC_DIR := ${CURDIR}

all: with_test_run_directory

# Behavior with --runtool with relative paths and --test-run-directory.
with_test_run_directory:
mkdir -p $(TMPDIR)/rundir
mkdir -p $(TMPDIR)/runtool
$(RUSTC) --crate-type rlib t.rs
$(RUSTC) runtool.rs -o $(TMPDIR)/runtool/runtool
( cd $(TMPDIR); \
$(RUSTDOC) -Zunstable-options --test --test-run-directory rundir \
--runtool runtool/runtool --extern t=libt.rlib $(MY_SRC_DIR)/t.rs \
)
rm -rf $(TMPDIR)/rundir $(TMPDIR)/runtool
3 changes: 3 additions & 0 deletions tests/run-make/doctests-runtool/runtool.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
fn main() {
eprintln!("{:?}", std::env::args().collect::<Vec<_>>());
}
11 changes: 11 additions & 0 deletions tests/run-make/doctests-runtool/t.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/// Fungle the foople.
/// ```
/// t::foople();
/// ```
pub fn foople() {}

/// Flomble the florp
/// ```
/// t::florp();
/// ```
pub fn florp() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
// check-pass

#![feature(non_lifetime_binders)]
//~^ WARN is incomplete and may not be safe

pub fn foo()
where
for<V> V: Sized,
{
bar();
}

pub fn bar()
where
for<V> V: Sized,
{
}

pub fn main() {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
warning: the feature `non_lifetime_binders` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/sized-late-bound-issue-114872.rs:3:12
|
LL | #![feature(non_lifetime_binders)]
| ^^^^^^^^^^^^^^^^^^^^
|
= note: see issue #108185 <https://github.com/rust-lang/rust/issues/108185> for more information
= note: `#[warn(incomplete_features)]` on by default

warning: 1 warning emitted

1 change: 0 additions & 1 deletion triagebot.toml
Original file line number Diff line number Diff line change
Expand Up @@ -386,7 +386,6 @@ cc = ["@camelid"]
message = "Some changes occurred in HTML/CSS/JS."
cc = [
"@GuillaumeGomez",
"@Folyd",
"@jsha",
]

Expand Down