Skip to content

Commit 3f8e774

Browse files
authored
Value::span(): return a ref instead of owned (#76)
1 parent 29f3361 commit 3f8e774

File tree

4 files changed

+37
-34
lines changed

4 files changed

+37
-34
lines changed

dbt-serde_yaml/src/value/de.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,7 @@ impl Value {
335335
where
336336
V: Visitor<'de>,
337337
{
338-
let span = self.span();
338+
let span = self.span().clone();
339339
self.broadcast_end_mark();
340340
maybe_why_not!(
341341
self,
@@ -349,7 +349,10 @@ impl Value {
349349

350350
#[cold]
351351
fn invalid_type(&self, exp: &dyn Expected) -> Error {
352-
error::set_span(de::Error::invalid_type(self.unexpected(), exp), self.span())
352+
error::set_span(
353+
de::Error::invalid_type(self.unexpected(), exp),
354+
self.span().clone(),
355+
)
353356
}
354357

355358
/// Returns an [Unexpected] that describes this Value

dbt-serde_yaml/src/value/de/borrowed.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -417,7 +417,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
417417
where
418418
V: Visitor<'de>,
419419
{
420-
let span = self.value.span();
420+
let span = self.value.span().clone();
421421
self.value.broadcast_end_mark();
422422
if super::should_short_circuit_any(self.field_transformer.is_some()) {
423423
// SAFETY: self.unused_key_callback and self.field_transformer are
@@ -467,7 +467,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
467467
{
468468
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_bool, visitor);
469469

470-
let span = self.value.span();
470+
let span = self.value.span().clone();
471471
self.value.broadcast_end_mark();
472472
maybe_why_not!(
473473
self.value,
@@ -600,7 +600,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
600600
{
601601
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_str, visitor);
602602

603-
let span = self.value.span();
603+
let span = self.value.span().clone();
604604
self.value.broadcast_end_mark();
605605
maybe_why_not!(
606606
self.value,
@@ -625,7 +625,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
625625
{
626626
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_bytes, visitor);
627627

628-
let span = self.value.span();
628+
let span = self.value.span().clone();
629629
self.value.broadcast_end_mark();
630630
maybe_why_not!(
631631
self.value,
@@ -657,7 +657,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
657657
{
658658
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_option, visitor);
659659

660-
let span = self.value.span();
660+
let span = self.value.span().clone();
661661
maybe_why_not!(
662662
self.value,
663663
match self.value {
@@ -679,7 +679,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
679679
{
680680
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_unit, visitor);
681681

682-
let span = self.value.span();
682+
let span = self.value.span().clone();
683683
self.value.broadcast_end_mark();
684684
maybe_why_not!(
685685
self.value,
@@ -724,7 +724,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
724724
visitor
725725
);
726726

727-
let span = self.value.span();
727+
let span = self.value.span().clone();
728728
self.value.broadcast_end_mark();
729729
maybe_why_not!(
730730
self.value,
@@ -747,7 +747,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
747747

748748
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_seq, visitor);
749749

750-
let span = self.value.span();
750+
let span = self.value.span().clone();
751751
self.value.broadcast_end_mark();
752752
maybe_why_not!(
753753
self.value,
@@ -797,7 +797,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
797797
{
798798
maybe_transform_and_forward_to_value_deserializer!(self, deserialize_map, visitor);
799799

800-
let span = self.value.span();
800+
let span = self.value.span().clone();
801801
self.value.broadcast_end_mark();
802802
maybe_why_not!(
803803
self.value,
@@ -833,7 +833,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
833833
visitor
834834
);
835835

836-
let span = self.value.span();
836+
let span = self.value.span().clone();
837837
self.value.broadcast_end_mark();
838838
maybe_why_not!(
839839
self.value,
@@ -870,7 +870,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
870870
visitor
871871
);
872872

873-
let span = self.value.span();
873+
let span = self.value.span().clone();
874874
self.value.broadcast_end_mark();
875875
maybe_why_not!(
876876
self.value,
@@ -912,7 +912,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueRefDeserializer<'de, '_, 'u, 'f> {
912912
where
913913
V: Visitor<'de>,
914914
{
915-
let span = self.value.span();
915+
let span = self.value.span().clone();
916916
self.value.broadcast_end_mark();
917917
maybe_why_not!(
918918
self.value,
@@ -1183,7 +1183,7 @@ impl<'de> SeqAccess<'de> for SeqRefDeserializer<'de, '_, '_, '_> {
11831183
self.current_idx += 1;
11841184
match self.iter.next() {
11851185
Some(value) => {
1186-
let span = value.span();
1186+
let span = value.span().clone();
11871187
let deserializer = ValueRefDeserializer::new_with(
11881188
value,
11891189
Path::Seq {

dbt-serde_yaml/src/value/de/owned.rs

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -428,7 +428,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
428428
where
429429
V: Visitor<'de>,
430430
{
431-
let span = self.value.span();
431+
let span = self.value.span().clone();
432432
self.value.broadcast_end_mark();
433433
if super::should_short_circuit_any(self.field_transformer.is_some()) {
434434
// SAFETY: self.unused_key_callback and self.field_transformer are
@@ -477,7 +477,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
477477
self.maybe_apply_transformation()?;
478478
maybe_expecting_should_be!(self, deserialize_bool, visitor);
479479

480-
let span = self.value.span();
480+
let span = self.value.span().clone();
481481
self.value.broadcast_end_mark();
482482
match self.value.untag() {
483483
Value::Bool(v, ..) => visitor.visit_bool(v),
@@ -603,7 +603,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
603603
self.maybe_apply_transformation()?;
604604
maybe_expecting_should_be!(self, deserialize_string, visitor);
605605

606-
let span = self.value.span();
606+
let span = self.value.span().clone();
607607
self.value.broadcast_end_mark();
608608
match self.value.untag() {
609609
Value::String(v, ..) => visitor.visit_string(v),
@@ -626,7 +626,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
626626
self.maybe_apply_transformation()?;
627627
maybe_expecting_should_be!(self, deserialize_byte_buf, visitor);
628628

629-
let span = self.value.span();
629+
let span = self.value.span().clone();
630630
self.value.broadcast_end_mark();
631631
match self.value.untag() {
632632
Value::String(v, ..) => visitor.visit_string(v),
@@ -649,7 +649,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
649649
self.maybe_apply_transformation()?;
650650
maybe_expecting_should_be!(self, deserialize_option, visitor);
651651

652-
let span = self.value.span();
652+
let span = self.value.span().clone();
653653
match self.value {
654654
Value::Null(..) => visitor.visit_unit(),
655655
_ => visitor.visit_some(ValueDeserializer {
@@ -670,7 +670,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
670670
self.maybe_apply_transformation()?;
671671
maybe_expecting_should_be!(self, deserialize_unit, visitor);
672672

673-
let span = self.value.span();
673+
let span = self.value.span().clone();
674674
self.value.broadcast_end_mark();
675675
match self.value {
676676
Value::Null(..) => visitor.visit_unit(),
@@ -697,7 +697,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
697697
self.maybe_apply_transformation()?;
698698
maybe_expecting_should_be!(self, deserialize_newtype_struct, name, visitor);
699699

700-
let span = self.value.span();
700+
let span = self.value.span().clone();
701701
self.value.broadcast_end_mark();
702702
visitor
703703
.visit_newtype_struct(self)
@@ -711,7 +711,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
711711
self.maybe_apply_transformation()?;
712712
maybe_expecting_should_be!(self, deserialize_seq, visitor);
713713

714-
let span = self.value.span();
714+
let span = self.value.span().clone();
715715
self.value.broadcast_end_mark();
716716
match self.value.untag() {
717717
Value::Sequence(v, ..) => visit_sequence(
@@ -759,7 +759,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
759759
self.maybe_apply_transformation()?;
760760
maybe_expecting_should_be!(self, deserialize_map, visitor);
761761

762-
let span = self.value.span();
762+
let span = self.value.span().clone();
763763
self.value.broadcast_end_mark();
764764
match self.value.untag() {
765765
Value::Mapping(v, ..) => visit_mapping(
@@ -793,7 +793,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
793793
self.maybe_apply_transformation()?;
794794
maybe_expecting_should_be!(self, deserialize_struct, name, fields, visitor);
795795

796-
let span = self.value.span();
796+
let span = self.value.span().clone();
797797
self.value.broadcast_end_mark();
798798
match self.value.untag() {
799799
Value::Mapping(v, ..) => visit_struct(
@@ -829,7 +829,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
829829
self.maybe_apply_transformation()?;
830830
maybe_expecting_should_be!(self, deserialize_enum, name, variants, visitor);
831831

832-
let span = self.value.span();
832+
let span = self.value.span().clone();
833833
self.value.broadcast_end_mark();
834834

835835
let tag;
@@ -878,7 +878,7 @@ impl<'de, 'u, 'f> Deserializer<'de> for ValueDeserializer<'_, 'u, 'f> {
878878
{
879879
maybe_expecting_should_be!(self, deserialize_ignored_any, visitor);
880880

881-
let span = self.value.span();
881+
let span = self.value.span().clone();
882882
self.value.broadcast_end_mark();
883883
drop(self);
884884
visitor.visit_unit().map_err(|e| error::set_span(e, span))
@@ -1135,7 +1135,7 @@ impl<'de, 'u, 'f> SeqAccess<'de> for SeqDeserializer<'_, 'u, 'f> {
11351135
self.current_idx += 1;
11361136
match self.iter.next() {
11371137
Some(value) => {
1138-
let span = value.span();
1138+
let span = value.span().clone();
11391139
let unused_key_callback = self
11401140
.unused_key_callback
11411141
.as_deref_mut()

dbt-serde_yaml/src/value/mod.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -732,15 +732,15 @@ impl Value {
732732
}
733733

734734
/// Returns the contained [Span].
735-
pub fn span(&self) -> Span {
735+
pub fn span(&self) -> &Span {
736736
match self {
737737
Value::Null(span)
738738
| Value::Bool(_, span)
739739
| Value::Number(_, span)
740740
| Value::Sequence(_, span)
741741
| Value::Mapping(_, span)
742742
| Value::Tagged(_, span)
743-
| Value::String(_, span) => span.clone(),
743+
| Value::String(_, span) => span,
744744
}
745745
}
746746

@@ -768,16 +768,16 @@ impl Value {
768768
fn broadcast_start_mark(&self) {
769769
spanned::set_marker(self.span().start);
770770
#[cfg(feature = "filename")]
771-
if let Some(filename) = self.span().filename {
772-
spanned::set_filename(filename);
771+
if let Some(filename) = &self.span().filename {
772+
spanned::set_filename(std::sync::Arc::clone(filename));
773773
}
774774
}
775775

776776
fn broadcast_end_mark(&self) {
777777
spanned::set_marker(self.span().end);
778778
#[cfg(feature = "filename")]
779-
if let Some(filename) = self.span().filename {
780-
spanned::set_filename(filename);
779+
if let Some(filename) = &self.span().filename {
780+
spanned::set_filename(std::sync::Arc::clone(filename));
781781
}
782782
}
783783
}

0 commit comments

Comments
 (0)