mirror of
https://github.com/danbulant/oxc
synced 2026-05-19 20:28:58 +00:00
perf(diagnostic): use Cow<'static, str> over String (#4175)
Allows us to use `&'static str` for error and help messages without allocating them into `String`s.
This commit is contained in:
parent
7a059ab53a
commit
ddfa343475
2 changed files with 7 additions and 6 deletions
|
|
@ -7,6 +7,7 @@ mod reporter;
|
|||
mod service;
|
||||
|
||||
use std::{
|
||||
borrow::Cow,
|
||||
fmt::{self, Display},
|
||||
ops::Deref,
|
||||
};
|
||||
|
|
@ -42,9 +43,9 @@ impl Deref for OxcDiagnostic {
|
|||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct OxcDiagnosticInner {
|
||||
pub message: String,
|
||||
pub message: Cow<'static, str>,
|
||||
pub labels: Option<Vec<LabeledSpan>>,
|
||||
pub help: Option<String>,
|
||||
pub help: Option<Cow<'static, str>>,
|
||||
pub severity: Severity,
|
||||
}
|
||||
|
||||
|
|
@ -76,7 +77,7 @@ impl Diagnostic for OxcDiagnostic {
|
|||
|
||||
impl OxcDiagnostic {
|
||||
#[must_use]
|
||||
pub fn error<T: Into<String>>(message: T) -> Self {
|
||||
pub fn error<T: Into<Cow<'static, str>>>(message: T) -> Self {
|
||||
Self {
|
||||
inner: Box::new(OxcDiagnosticInner {
|
||||
message: message.into(),
|
||||
|
|
@ -88,7 +89,7 @@ impl OxcDiagnostic {
|
|||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn warn<T: Into<String>>(message: T) -> Self {
|
||||
pub fn warn<T: Into<Cow<'static, str>>>(message: T) -> Self {
|
||||
Self {
|
||||
inner: Box::new(OxcDiagnosticInner {
|
||||
message: message.into(),
|
||||
|
|
@ -106,7 +107,7 @@ impl OxcDiagnostic {
|
|||
}
|
||||
|
||||
#[must_use]
|
||||
pub fn with_help<T: Into<String>>(mut self, help: T) -> Self {
|
||||
pub fn with_help<T: Into<Cow<'static, str>>>(mut self, help: T) -> Self {
|
||||
self.inner.help = Some(help.into());
|
||||
self
|
||||
}
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ fn no_optional_chaining_diagnostic(span0: Span, x1: &str) -> OxcDiagnostic {
|
|||
.with_label(span0)
|
||||
} else {
|
||||
OxcDiagnostic::warn("oxc(no-optional-chaining): Optional chaining is not allowed.")
|
||||
.with_help(x1)
|
||||
.with_help(x1.to_owned())
|
||||
.with_label(span0)
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue