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 7 pull requests #109986

Merged
merged 15 commits into from
Apr 6, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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`.