More track_caller annotations

This commit is contained in:
Laurenz 2023-01-27 12:16:54 +01:00
parent 43ef60c09c
commit 9d962c5c40
6 changed files with 10 additions and 2 deletions

View File

@ -216,6 +216,7 @@ fn convert_json(value: serde_json::Value) -> Value {
}
/// Format the user-facing JSON error message.
#[track_caller]
fn format_json_error(error: serde_json::Error) -> String {
assert!(error.is_syntax() || error.is_eof());
format!("failed to parse json file: syntax error in line {}", error.line())

View File

@ -83,6 +83,7 @@ impl Scope {
}
/// Bind a value to a name.
#[track_caller]
pub fn define(&mut self, name: impl Into<EcoString>, value: impl Into<Value>) {
let name = name.into();

View File

@ -406,7 +406,7 @@ impl Shorthand {
"|->" => '↦',
"<->" => '↔',
"<=>" => '⇔',
_ => panic!("shorthand is invalid"),
_ => char::default(),
}
}
}
@ -879,7 +879,7 @@ impl Numeric {
"em" => Unit::Em,
"fr" => Unit::Fr,
"%" => Unit::Percent,
_ => panic!("number has invalid suffix"),
_ => Unit::Percent,
};
(value, unit)

View File

@ -1025,6 +1025,7 @@ impl<'s> Parser<'s> {
self.current == kind
}
#[track_caller]
fn assert(&mut self, kind: SyntaxKind) {
assert_eq!(self.current, kind);
self.eat();

View File

@ -38,6 +38,7 @@ impl Span {
/// Create a new span from a source id and a unique number.
///
/// Panics if the `number` is not contained in `FULL`.
#[track_caller]
pub const fn new(id: SourceId, number: u64) -> Self {
assert!(
Self::FULL.start <= number && number < Self::FULL.end,
@ -53,6 +54,7 @@ impl Span {
}
/// Pack the components into a span.
#[track_caller]
const fn pack(id: SourceId, number: u64) -> Span {
let bits = ((id.into_u16() as u64) << Self::BITS) | number;
match NonZeroU64::new(bits) {

View File

@ -14,6 +14,7 @@ use std::mem;
/// Must only be called when `T` is a `dyn Trait`. The data address must point
/// to a value whose type implements the trait of `T` and the `vtable` must have
/// been extracted with [`vtable`].
#[track_caller]
pub unsafe fn from_raw_parts<T: ?Sized>(data: *const (), vtable: *const ()) -> *const T {
let fat = FatPointer { data, vtable };
debug_assert_eq!(Layout::new::<*const T>(), Layout::new::<FatPointer>());
@ -26,6 +27,7 @@ pub unsafe fn from_raw_parts<T: ?Sized>(data: *const (), vtable: *const ()) -> *
/// Must only be called when `T` is a `dyn Trait`. The data address must point
/// to a value whose type implements the trait of `T` and the `vtable` must have
/// been extracted with [`vtable`].
#[track_caller]
pub unsafe fn from_raw_parts_mut<T: ?Sized>(data: *mut (), vtable: *const ()) -> *mut T {
let fat = FatPointer { data, vtable };
debug_assert_eq!(Layout::new::<*mut T>(), Layout::new::<FatPointer>());
@ -36,6 +38,7 @@ pub unsafe fn from_raw_parts_mut<T: ?Sized>(data: *mut (), vtable: *const ()) ->
///
/// # Safety
/// Must only be called when `T` is a `dyn Trait`.
#[track_caller]
pub unsafe fn vtable<T: ?Sized>(ptr: *const T) -> *const () {
debug_assert_eq!(Layout::new::<*const T>(), Layout::new::<FatPointer>());
mem::transmute_copy::<*const T, FatPointer>(&ptr).vtable