mirror of
https://github.com/rust-lang/rust-analyzer.git
synced 2025-11-25 21:37:39 +00:00
parent
b3ef934ccb
commit
25242fe93f
395 changed files with 14569 additions and 5755 deletions
|
|
@ -83,7 +83,7 @@ impl Round {
|
|||
|
||||
let a = mean_y - b * mean_x;
|
||||
|
||||
self.plot = format!("y_pred = {:.3} + {:.3} * x\n\nx y y_pred\n", a, b);
|
||||
self.plot = format!("y_pred = {a:.3} + {b:.3} * x\n\nx y y_pred\n");
|
||||
|
||||
let mut se = 0.0;
|
||||
let mut max_error = 0.0f64;
|
||||
|
|
@ -100,7 +100,7 @@ impl Round {
|
|||
|
||||
self.linear = rmse < 0.05 && max_error < 0.1 && a > -0.1;
|
||||
|
||||
fn normalize(xs: &mut Vec<f64>) {
|
||||
fn normalize(xs: &mut [f64]) {
|
||||
let max = xs.iter().copied().max_by(|a, b| a.partial_cmp(b).unwrap()).unwrap();
|
||||
xs.iter_mut().for_each(|it| *it /= max);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -36,10 +36,10 @@ struct S{} {{
|
|||
|
||||
pub fn glorious_old_parser() -> String {
|
||||
let path = project_root().join("bench_data/glorious_old_parser");
|
||||
fs::read_to_string(&path).unwrap()
|
||||
fs::read_to_string(path).unwrap()
|
||||
}
|
||||
|
||||
pub fn numerous_macro_rules() -> String {
|
||||
let path = project_root().join("bench_data/numerous_macro_rules");
|
||||
fs::read_to_string(&path).unwrap()
|
||||
fs::read_to_string(path).unwrap()
|
||||
}
|
||||
|
|
|
|||
|
|
@ -78,6 +78,7 @@ pub struct Fixture {
|
|||
pub edition: Option<String>,
|
||||
pub env: FxHashMap<String, String>,
|
||||
pub introduce_new_source_root: Option<String>,
|
||||
pub target_data_layout: Option<String>,
|
||||
}
|
||||
|
||||
pub struct MiniCore {
|
||||
|
|
@ -134,11 +135,9 @@ impl Fixture {
|
|||
if line.contains("//-") {
|
||||
assert!(
|
||||
line.starts_with("//-"),
|
||||
"Metadata line {} has invalid indentation. \
|
||||
"Metadata line {ix} has invalid indentation. \
|
||||
All metadata lines need to have the same indentation.\n\
|
||||
The offending line: {:?}",
|
||||
ix,
|
||||
line
|
||||
The offending line: {line:?}"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -152,7 +151,7 @@ impl Fixture {
|
|||
&& !line.contains('.')
|
||||
&& line.chars().all(|it| !it.is_uppercase())
|
||||
{
|
||||
panic!("looks like invalid metadata line: {:?}", line);
|
||||
panic!("looks like invalid metadata line: {line:?}");
|
||||
}
|
||||
|
||||
if let Some(entry) = res.last_mut() {
|
||||
|
|
@ -171,7 +170,7 @@ impl Fixture {
|
|||
let components = meta.split_ascii_whitespace().collect::<Vec<_>>();
|
||||
|
||||
let path = components[0].to_string();
|
||||
assert!(path.starts_with('/'), "fixture path does not start with `/`: {:?}", path);
|
||||
assert!(path.starts_with('/'), "fixture path does not start with `/`: {path:?}");
|
||||
|
||||
let mut krate = None;
|
||||
let mut deps = Vec::new();
|
||||
|
|
@ -181,10 +180,10 @@ impl Fixture {
|
|||
let mut cfg_key_values = Vec::new();
|
||||
let mut env = FxHashMap::default();
|
||||
let mut introduce_new_source_root = None;
|
||||
let mut target_data_layout = None;
|
||||
for component in components[1..].iter() {
|
||||
let (key, value) = component
|
||||
.split_once(':')
|
||||
.unwrap_or_else(|| panic!("invalid meta line: {:?}", meta));
|
||||
let (key, value) =
|
||||
component.split_once(':').unwrap_or_else(|| panic!("invalid meta line: {meta:?}"));
|
||||
match key {
|
||||
"crate" => krate = Some(value.to_string()),
|
||||
"deps" => deps = value.split(',').map(|it| it.to_string()).collect(),
|
||||
|
|
@ -213,16 +212,15 @@ impl Fixture {
|
|||
}
|
||||
}
|
||||
"new_source_root" => introduce_new_source_root = Some(value.to_string()),
|
||||
_ => panic!("bad component: {:?}", component),
|
||||
"target_data_layout" => target_data_layout = Some(value.to_string()),
|
||||
_ => panic!("bad component: {component:?}"),
|
||||
}
|
||||
}
|
||||
|
||||
for prelude_dep in extern_prelude.iter().flatten() {
|
||||
assert!(
|
||||
deps.contains(prelude_dep),
|
||||
"extern-prelude {:?} must be a subset of deps {:?}",
|
||||
extern_prelude,
|
||||
deps
|
||||
"extern-prelude {extern_prelude:?} must be a subset of deps {deps:?}"
|
||||
);
|
||||
}
|
||||
|
||||
|
|
@ -237,6 +235,7 @@ impl Fixture {
|
|||
edition,
|
||||
env,
|
||||
introduce_new_source_root,
|
||||
target_data_layout,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -249,7 +248,7 @@ impl MiniCore {
|
|||
#[track_caller]
|
||||
fn assert_valid_flag(&self, flag: &str) {
|
||||
if !self.valid_flags.iter().any(|it| it == flag) {
|
||||
panic!("invalid flag: {:?}, valid flags: {:?}", flag, self.valid_flags);
|
||||
panic!("invalid flag: {flag:?}, valid flags: {:?}", self.valid_flags);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -259,7 +258,7 @@ impl MiniCore {
|
|||
let line = line.strip_prefix("//- minicore:").unwrap().trim();
|
||||
for entry in line.split(", ") {
|
||||
if res.has_flag(entry) {
|
||||
panic!("duplicate minicore flag: {:?}", entry);
|
||||
panic!("duplicate minicore flag: {entry:?}");
|
||||
}
|
||||
res.activated_flags.push(entry.to_owned());
|
||||
}
|
||||
|
|
@ -345,11 +344,7 @@ impl MiniCore {
|
|||
|
||||
let mut keep = true;
|
||||
for ®ion in &active_regions {
|
||||
assert!(
|
||||
!region.starts_with(' '),
|
||||
"region marker starts with a space: {:?}",
|
||||
region
|
||||
);
|
||||
assert!(!region.starts_with(' '), "region marker starts with a space: {region:?}");
|
||||
self.assert_valid_flag(region);
|
||||
seen_regions.push(region);
|
||||
keep &= self.has_flag(region);
|
||||
|
|
@ -365,7 +360,7 @@ impl MiniCore {
|
|||
|
||||
for flag in &self.valid_flags {
|
||||
if !seen_regions.iter().any(|it| it == flag) {
|
||||
panic!("unused minicore flag: {:?}", flag);
|
||||
panic!("unused minicore flag: {flag:?}");
|
||||
}
|
||||
}
|
||||
buf
|
||||
|
|
|
|||
|
|
@ -146,8 +146,8 @@ pub fn extract_range_or_offset(text: &str) -> (RangeOrOffset, String) {
|
|||
|
||||
/// Extracts ranges, marked with `<tag> </tag>` pairs from the `text`
|
||||
pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option<String>)>, String) {
|
||||
let open = format!("<{}", tag);
|
||||
let close = format!("</{}>", tag);
|
||||
let open = format!("<{tag}");
|
||||
let close = format!("</{tag}>");
|
||||
let mut ranges = Vec::new();
|
||||
let mut res = String::new();
|
||||
let mut stack = Vec::new();
|
||||
|
|
@ -169,8 +169,7 @@ pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option<String
|
|||
stack.push((from, attr));
|
||||
} else if text.starts_with(&close) {
|
||||
text = &text[close.len()..];
|
||||
let (from, attr) =
|
||||
stack.pop().unwrap_or_else(|| panic!("unmatched </{}>", tag));
|
||||
let (from, attr) = stack.pop().unwrap_or_else(|| panic!("unmatched </{tag}>"));
|
||||
let to = TextSize::of(&res);
|
||||
ranges.push((TextRange::new(from, to), attr));
|
||||
} else {
|
||||
|
|
@ -180,7 +179,7 @@ pub fn extract_tags(mut text: &str, tag: &str) -> (Vec<(TextRange, Option<String
|
|||
}
|
||||
}
|
||||
}
|
||||
assert!(stack.is_empty(), "unmatched <{}>", tag);
|
||||
assert!(stack.is_empty(), "unmatched <{tag}>");
|
||||
ranges.sort_by_key(|r| (r.0.start(), r.0.end()));
|
||||
(ranges, res)
|
||||
}
|
||||
|
|
@ -397,7 +396,7 @@ pub fn skip_slow_tests() -> bool {
|
|||
eprintln!("ignoring slow test");
|
||||
} else {
|
||||
let path = project_root().join("./target/.slow_tests_cookie");
|
||||
fs::write(&path, ".").unwrap();
|
||||
fs::write(path, ".").unwrap();
|
||||
}
|
||||
should_skip
|
||||
}
|
||||
|
|
@ -413,8 +412,8 @@ pub fn format_diff(chunks: Vec<dissimilar::Chunk<'_>>) -> String {
|
|||
for chunk in chunks {
|
||||
let formatted = match chunk {
|
||||
dissimilar::Chunk::Equal(text) => text.into(),
|
||||
dissimilar::Chunk::Delete(text) => format!("\x1b[41m{}\x1b[0m", text),
|
||||
dissimilar::Chunk::Insert(text) => format!("\x1b[42m{}\x1b[0m", text),
|
||||
dissimilar::Chunk::Delete(text) => format!("\x1b[41m{text}\x1b[0m"),
|
||||
dissimilar::Chunk::Insert(text) => format!("\x1b[42m{text}\x1b[0m"),
|
||||
};
|
||||
buf.push_str(&formatted);
|
||||
}
|
||||
|
|
@ -480,7 +479,7 @@ pub fn try_ensure_file_contents(file: &Path, contents: &str) -> Result<(), ()> {
|
|||
}
|
||||
_ => (),
|
||||
}
|
||||
let display_path = file.strip_prefix(&project_root()).unwrap_or(file);
|
||||
let display_path = file.strip_prefix(project_root()).unwrap_or(file);
|
||||
eprintln!(
|
||||
"\n\x1b[31;1merror\x1b[0m: {} was not up-to-date, updating\n",
|
||||
display_path.display()
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
//! derive:
|
||||
//! drop:
|
||||
//! eq: sized
|
||||
//! error: fmt
|
||||
//! fmt: result
|
||||
//! fn:
|
||||
//! from: sized
|
||||
|
|
@ -29,13 +30,16 @@
|
|||
//! index: sized
|
||||
//! iterator: option
|
||||
//! iterators: iterator, fn
|
||||
//! non_zero:
|
||||
//! option:
|
||||
//! ord: eq, option
|
||||
//! pin:
|
||||
//! range:
|
||||
//! result:
|
||||
//! send: sized
|
||||
//! sized:
|
||||
//! slice:
|
||||
//! sync: sized
|
||||
//! try:
|
||||
//! unsize: sized
|
||||
|
||||
|
|
@ -47,6 +51,24 @@ pub mod marker {
|
|||
pub trait Sized {}
|
||||
// endregion:sized
|
||||
|
||||
// region:send
|
||||
pub unsafe auto trait Send {}
|
||||
|
||||
impl<T: ?Sized> !Send for *const T {}
|
||||
impl<T: ?Sized> !Send for *mut T {}
|
||||
// region:sync
|
||||
unsafe impl<T: Sync + ?Sized> Send for &T {}
|
||||
unsafe impl<T: Send + ?Sized> Send for &mut T {}
|
||||
// endregion:sync
|
||||
// endregion:send
|
||||
|
||||
// region:sync
|
||||
pub unsafe auto trait Sync {}
|
||||
|
||||
impl<T: ?Sized> !Sync for *const T {}
|
||||
impl<T: ?Sized> !Sync for *mut T {}
|
||||
// endregion:sync
|
||||
|
||||
// region:unsize
|
||||
#[lang = "unsize"]
|
||||
pub trait Unsize<T: ?Sized> {}
|
||||
|
|
@ -91,7 +113,7 @@ pub mod default {
|
|||
fn default() -> Self;
|
||||
}
|
||||
// region:derive
|
||||
#[rustc_builtin_macro]
|
||||
#[rustc_builtin_macro(Default, attributes(default))]
|
||||
pub macro Default($item:item) {}
|
||||
// endregion:derive
|
||||
}
|
||||
|
|
@ -360,6 +382,12 @@ pub mod ops {
|
|||
type Output;
|
||||
fn add(self, rhs: Rhs) -> Self::Output;
|
||||
}
|
||||
|
||||
#[lang = "add_assign"]
|
||||
#[const_trait]
|
||||
pub trait AddAssign<Rhs = Self> {
|
||||
fn add_assign(&mut self, rhs: Rhs);
|
||||
}
|
||||
// endregion:add
|
||||
|
||||
// region:generator
|
||||
|
|
@ -438,6 +466,9 @@ pub mod fmt {
|
|||
pub trait Debug {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result;
|
||||
}
|
||||
pub trait Display {
|
||||
fn fmt(&self, f: &mut Formatter<'_>) -> Result;
|
||||
}
|
||||
}
|
||||
// endregion:fmt
|
||||
|
||||
|
|
@ -680,6 +711,15 @@ mod macros {
|
|||
}
|
||||
// endregion:derive
|
||||
|
||||
// region:non_zero
|
||||
pub mod num {
|
||||
#[repr(transparent)]
|
||||
#[rustc_layout_scalar_valid_range_start(1)]
|
||||
#[rustc_nonnull_optimization_guaranteed]
|
||||
pub struct NonZeroU8(u8);
|
||||
}
|
||||
// endregion:non_zero
|
||||
|
||||
// region:bool_impl
|
||||
#[lang = "bool"]
|
||||
impl bool {
|
||||
|
|
@ -693,6 +733,17 @@ impl bool {
|
|||
}
|
||||
// endregion:bool_impl
|
||||
|
||||
// region:error
|
||||
pub mod error {
|
||||
#[rustc_has_incoherent_inherent_impls]
|
||||
pub trait Error: crate::fmt::Debug + crate::fmt::Display {
|
||||
fn source(&self) -> Option<&(dyn Error + 'static)> {
|
||||
None
|
||||
}
|
||||
}
|
||||
}
|
||||
// endregion:error
|
||||
|
||||
pub mod prelude {
|
||||
pub mod v1 {
|
||||
pub use crate::{
|
||||
|
|
@ -705,7 +756,9 @@ pub mod prelude {
|
|||
iter::{IntoIterator, Iterator}, // :iterator
|
||||
macros::builtin::derive, // :derive
|
||||
marker::Copy, // :copy
|
||||
marker::Send, // :send
|
||||
marker::Sized, // :sized
|
||||
marker::Sync, // :sync
|
||||
mem::drop, // :drop
|
||||
ops::Drop, // :drop
|
||||
ops::{Fn, FnMut, FnOnce}, // :fn
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue