Skip to content

Commit

Permalink
Auto merge of rust-lang#109986 - JohnTitor:rollup-3aax38t, r=JohnTitor
Browse files Browse the repository at this point in the history
Rollup of 7 pull requests

Successful merges:

 - rust-lang#109909 (Deny `use`ing tool paths)
 - rust-lang#109921 (Don't ICE when encountering `dyn*` in statics or consts)
 - rust-lang#109922 (Disable `has_thread_local` on OpenHarmony)
 - rust-lang#109926 (write threads info into log only when debugging)
 - rust-lang#109968 (Add regression test for rust-lang#80409)
 - rust-lang#109969 (Add regression test for rust-lang#86351)
 - rust-lang#109973 (rustdoc: Improve logo display very small screen)

Failed merges:

r? `@ghost`
`@rustbot` modify labels: rollup
  • Loading branch information
bors committed Apr 5, 2023
2 parents 2eaeb1e + 9960e9f commit 8c7ad16
Show file tree
Hide file tree
Showing 17 changed files with 135 additions and 16 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -553,7 +553,7 @@ impl<'tcx> Visitor<'tcx> for Checker<'_, 'tcx> {
}

Rvalue::Cast(CastKind::DynStar, _, _) => {
unimplemented!()
// `dyn*` coercion is implemented for CTFE.
}

Rvalue::Cast(_, _, _) => {}
Expand Down
2 changes: 1 addition & 1 deletion compiler/rustc_log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ pub fn init_env_logger(env: &str) -> Result<(), Error> {
.with_verbose_exit(verbose_entry_exit)
.with_verbose_entry(verbose_entry_exit)
.with_indent_amount(2);
#[cfg(parallel_compiler)]
#[cfg(all(parallel_compiler, debug_assertions))]
let layer = layer.with_thread_ids(true).with_thread_names(true);

let subscriber = tracing_subscriber::Registry::default().with(filter).with(layer);
Expand Down
4 changes: 4 additions & 0 deletions compiler/rustc_resolve/messages.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -207,5 +207,9 @@ resolve_expected_found =
resolve_indeterminate =
cannot determine resolution for the visibility
resolve_tool_module_imported =
cannot use a tool module through an import
.note = the tool module imported here
resolve_module_only =
visibility must resolve to a module
9 changes: 9 additions & 0 deletions compiler/rustc_resolve/src/errors.rs
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,15 @@ pub(crate) struct ExpectedFound {
#[diag(resolve_indeterminate, code = "E0578")]
pub(crate) struct Indeterminate(#[primary_span] pub(crate) Span);

#[derive(Diagnostic)]
#[diag(resolve_tool_module_imported)]
pub(crate) struct ToolModuleImported {
#[primary_span]
pub(crate) span: Span,
#[note]
pub(crate) import: Span,
}

#[derive(Diagnostic)]
#[diag(resolve_module_only)]
pub(crate) struct ModuleOnly(#[primary_span] pub(crate) Span);
18 changes: 7 additions & 11 deletions compiler/rustc_resolve/src/ident.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ use crate::late::{
ConstantHasGenerics, ConstantItemKind, HasGenericParams, PathSource, Rib, RibKind,
};
use crate::macros::{sub_namespace_match, MacroRulesScope};
use crate::{AmbiguityError, AmbiguityErrorMisc, AmbiguityKind, Determinacy, Finalize};
use crate::{errors, AmbiguityError, AmbiguityErrorMisc, AmbiguityKind, Determinacy, Finalize};
use crate::{Import, ImportKind, LexicalScopeBinding, Module, ModuleKind, ModuleOrUniformRoot};
use crate::{NameBinding, NameBindingKind, ParentScope, PathResult, PrivacyError, Res};
use crate::{ResolutionError, Resolver, Scope, ScopeSet, Segment, ToNameBinding, Weak};
Expand Down Expand Up @@ -1364,7 +1364,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
}
};

let is_last = i == path.len() - 1;
let is_last = i + 1 == path.len();
let ns = if is_last { opt_ns.unwrap_or(TypeNS) } else { TypeNS };
let name = ident.name;

Expand Down Expand Up @@ -1501,16 +1501,12 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
if let Some(next_module) = binding.module() {
module = Some(ModuleOrUniformRoot::Module(next_module));
record_segment_res(self, res);
} else if res == Res::ToolMod && i + 1 != path.len() {
} else if res == Res::ToolMod && !is_last && opt_ns.is_some() {
if binding.is_import() {
self.tcx
.sess
.struct_span_err(
ident.span,
"cannot use a tool module through an import",
)
.span_note(binding.span, "the tool module imported here")
.emit();
self.tcx.sess.emit_err(errors::ToolModuleImported {
span: ident.span,
import: binding.span,
});
}
let res = Res::NonMacroAttr(NonMacroAttrKind::Tool);
return PathResult::NonModule(PartialRes::new(res));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ pub fn target() -> Target {
features: "+reserve-x18".into(),
mcount: "\u{1}_mcount".into(),
force_emulated_tls: true,
has_thread_local: false,
supported_sanitizers: SanitizerSet::ADDRESS
| SanitizerSet::CFI
| SanitizerSet::LEAK
Expand Down
1 change: 1 addition & 0 deletions compiler/rustc_target/src/spec/armv7_unknown_linux_ohos.rs
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ pub fn target() -> Target {
crt_static_default: false,
mcount: "\u{1}mcount".into(),
force_emulated_tls: true,
has_thread_local: false,
..super::linux_musl_base::opts()
},
}
Expand Down
7 changes: 6 additions & 1 deletion src/librustdoc/html/static/css/rustdoc.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@
3. Copy the filenames with updated suffixes from the directory.
*/

:root {
--nav-sub-mobile-padding: 8px;
}

/* See FiraSans-LICENSE.txt for the Fira Sans license. */
@font-face {
font-family: 'Fira Sans';
Expand Down Expand Up @@ -1726,7 +1730,7 @@ in main.js

.source nav.sub {
margin: 0;
padding: 8px;
padding: var(--nav-sub-mobile-padding);
}
}

Expand Down Expand Up @@ -1783,6 +1787,7 @@ in main.js
.sub-logo-container > img {
height: 35px;
width: 35px;
margin-bottom: var(--nav-sub-mobile-padding);
}
}

Expand Down
2 changes: 1 addition & 1 deletion src/librustdoc/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,7 @@ fn init_logging() {
.with_verbose_exit(true)
.with_verbose_entry(true)
.with_indent_amount(2);
#[cfg(parallel_compiler)]
#[cfg(all(parallel_compiler, debug_assertions))]
let layer = layer.with_thread_ids(true).with_thread_names(true);

use tracing_subscriber::layer::SubscriberExt;
Expand Down
4 changes: 3 additions & 1 deletion tests/rustdoc-gui/huge-logo.goml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,6 @@ size: (1280, 1024)
assert-property: (".sub-logo-container", {"offsetWidth": "60", "offsetHeight": 60})

size: (400, 600)
assert-property: (".sub-logo-container", {"offsetWidth": "35", "offsetHeight": 35})
// 43 because 35px + 8px of margin
assert-css: (".sub-logo-container > img", {"margin-bottom": "8px"})
assert-property: (".sub-logo-container", {"offsetWidth": "35", "offsetHeight": 43})
5 changes: 5 additions & 0 deletions tests/rustdoc-gui/source-code-page.goml
Original file line number Diff line number Diff line change
Expand Up @@ -216,3 +216,8 @@ call-function: ("check-sidebar-dir-entry", {
"x": 0,
"y": |source_sidebar_title_y| + |source_sidebar_title_height| + 6,
})

// Now we check that the logo has a bottom margin so it's not stuck to the search input.
assert-css: (".sub-logo-container > img", {"margin-bottom": "8px"})
store-property: (logo_height, ".sub-logo-container", "clientHeight")
assert-position: (".search-form", {"y": |logo_height| + 8})
22 changes: 22 additions & 0 deletions tests/ui/const_prop/issue-86351.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
// compile-flags: --crate-type=lib -Zmir-opt-level=2
// build-pass
// ^-- Must be build-pass, because check-pass will not run const prop.

pub trait TestTrait {
type MyType;
fn func() -> Option<Self>
where
Self: Sized;
}

impl<T> dyn TestTrait<MyType = T>
where
Self: Sized,
{
pub fn other_func() -> Option<Self> {
match Self::func() {
Some(me) => Some(me),
None => None,
}
}
}
10 changes: 10 additions & 0 deletions tests/ui/dyn-star/const-and-static.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
// check-pass

#![feature(dyn_star)]
//~^ WARN the feature `dyn_star` is incomplete

const C: dyn* Send + Sync = &();

static S: dyn* Send + Sync = &();

fn main() {}
11 changes: 11 additions & 0 deletions tests/ui/dyn-star/const-and-static.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
warning: the feature `dyn_star` is incomplete and may not be safe to use and/or cause compiler crashes
--> $DIR/const-and-static.rs:3:12
|
LL | #![feature(dyn_star)]
| ^^^^^^^^
|
= note: see issue #102425 <https://github.com/rust-lang/rust/issues/102425> for more information
= note: `#[warn(incomplete_features)]` on by default

warning: 1 warning emitted

36 changes: 36 additions & 0 deletions tests/ui/inference/issue-80409.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
// check-pass

#![allow(unreachable_code, unused)]

use std::marker::PhantomData;

struct FsmBuilder<TFsm> {
_fsm: PhantomData<TFsm>,
}

impl<TFsm> FsmBuilder<TFsm> {
fn state(&mut self) -> FsmStateBuilder<TFsm> {
todo!()
}
}

struct FsmStateBuilder<TFsm> {
_state: PhantomData<TFsm>,
}

impl<TFsm> FsmStateBuilder<TFsm> {
fn on_entry<TAction: Fn(&mut StateContext<'_, TFsm>)>(&self, _action: TAction) {}
}

trait Fsm {
type Context;
}

struct StateContext<'a, TFsm: Fsm> {
context: &'a mut TFsm::Context,
}

fn main() {
let mut builder: FsmBuilder<usize> = todo!();
builder.state().on_entry(|_| {});
}
8 changes: 8 additions & 0 deletions tests/ui/resolve/tool-import.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
// edition: 2018

use clippy::time::Instant;
//~^ `clippy` is a tool module

fn main() {
Instant::now();
}
9 changes: 9 additions & 0 deletions tests/ui/resolve/tool-import.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
error[E0433]: failed to resolve: `clippy` is a tool module, not a module
--> $DIR/tool-import.rs:3:5
|
LL | use clippy::time::Instant;
| ^^^^^^ `clippy` is a tool module, not a module

error: aborting due to previous error

For more information about this error, try `rustc --explain E0433`.

0 comments on commit 8c7ad16

Please sign in to comment.