Skip to content

Commit 2faaac7

Browse files
authored
Merge pull request #72 from alexcrichton/tweak-interfaces
Tweak implementation details for upcoming changes
2 parents b28f38a + a914a61 commit 2faaac7

File tree

3 files changed

+228
-243
lines changed

3 files changed

+228
-243
lines changed

src/lib.rs

Lines changed: 20 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,6 @@ pub struct LineColumn {
169169
}
170170

171171
#[derive(Copy, Clone)]
172-
#[cfg_attr(procmacro2_semver_exempt, derive(PartialEq, Eq))]
173172
pub struct Span {
174173
inner: imp::Span,
175174
_marker: marker::PhantomData<Rc<()>>,
@@ -239,6 +238,11 @@ impl Span {
239238
pub fn join(&self, other: Span) -> Option<Span> {
240239
self.inner.join(other.inner).map(Span::_new)
241240
}
241+
242+
#[cfg(procmacro2_semver_exempt)]
243+
pub fn eq(&self, other: &Span) -> bool {
244+
self.inner.eq(&other.inner)
245+
}
242246
}
243247

244248
impl fmt::Debug for Span {
@@ -405,33 +409,31 @@ impl fmt::Display for Op {
405409
#[derive(Copy, Clone)]
406410
pub struct Term {
407411
inner: imp::Term,
408-
span: Span,
409412
_marker: marker::PhantomData<Rc<()>>,
410413
}
411414

412415
impl Term {
413-
fn _new(inner: imp::Term, span: Span) -> Term {
416+
fn _new(inner: imp::Term) -> Term {
414417
Term {
415418
inner: inner,
416-
span: span,
417419
_marker: marker::PhantomData,
418420
}
419421
}
420422

421423
pub fn new(string: &str, span: Span) -> Term {
422-
Term::_new(imp::Term::intern(string), span)
424+
Term::_new(imp::Term::new(string, span.inner))
423425
}
424426

425427
pub fn as_str(&self) -> &str {
426428
self.inner.as_str()
427429
}
428430

429431
pub fn span(&self) -> Span {
430-
self.span
432+
Span::_new(self.inner.span())
431433
}
432434

433435
pub fn set_span(&mut self, span: Span) {
434-
self.span = span;
436+
self.inner.set_span(span.inner);
435437
}
436438
}
437439

@@ -450,24 +452,13 @@ impl fmt::Debug for Term {
450452
#[derive(Clone)]
451453
pub struct Literal {
452454
inner: imp::Literal,
453-
span: Span,
454455
_marker: marker::PhantomData<Rc<()>>,
455456
}
456457

457-
macro_rules! suffixed_int_literals {
458+
macro_rules! int_literals {
458459
($($name:ident => $kind:ident,)*) => ($(
459-
#[allow(unused_comparisons)]
460460
pub fn $name(n: $kind) -> Literal {
461-
Literal::_new(n.into())
462-
}
463-
)*)
464-
}
465-
466-
macro_rules! unsuffixed_int_literals {
467-
($($name:ident => $kind:ident,)*) => ($(
468-
#[allow(unused_comparisons)]
469-
pub fn $name(n: $kind) -> Literal {
470-
Literal::_new(imp::Literal::integer(n as i64))
461+
Literal::_new(imp::Literal::$name(n))
471462
}
472463
)*)
473464
}
@@ -476,12 +467,11 @@ impl Literal {
476467
fn _new(inner: imp::Literal) -> Literal {
477468
Literal {
478469
inner: inner,
479-
span: Span::call_site(),
480470
_marker: marker::PhantomData,
481471
}
482472
}
483473

484-
suffixed_int_literals! {
474+
int_literals! {
485475
u8_suffixed => u8,
486476
u16_suffixed => u16,
487477
u32_suffixed => u32,
@@ -492,9 +482,7 @@ impl Literal {
492482
i32_suffixed => i32,
493483
i64_suffixed => i64,
494484
isize_suffixed => isize,
495-
}
496485

497-
unsuffixed_int_literals! {
498486
u8_unsuffixed => u8,
499487
u16_unsuffixed => u16,
500488
u32_unsuffixed => u32,
@@ -509,42 +497,42 @@ impl Literal {
509497

510498
pub fn f64_unsuffixed(f: f64) -> Literal {
511499
assert!(f.is_finite());
512-
Literal::_new(imp::Literal::float(f))
500+
Literal::_new(imp::Literal::f64_unsuffixed(f))
513501
}
514502

515503
pub fn f64_suffixed(f: f64) -> Literal {
516504
assert!(f.is_finite());
517-
Literal::_new(f.into())
505+
Literal::_new(imp::Literal::f64_suffixed(f))
518506
}
519507

520508
pub fn f32_unsuffixed(f: f32) -> Literal {
521509
assert!(f.is_finite());
522-
Literal::_new(imp::Literal::float(f as f64))
510+
Literal::_new(imp::Literal::f32_unsuffixed(f))
523511
}
524512

525513
pub fn f32_suffixed(f: f32) -> Literal {
526514
assert!(f.is_finite());
527-
Literal::_new(f.into())
515+
Literal::_new(imp::Literal::f32_suffixed(f))
528516
}
529517

530518
pub fn string(string: &str) -> Literal {
531-
Literal::_new(string.into())
519+
Literal::_new(imp::Literal::string(string))
532520
}
533521

534522
pub fn character(ch: char) -> Literal {
535-
Literal::_new(ch.into())
523+
Literal::_new(imp::Literal::character(ch))
536524
}
537525

538526
pub fn byte_string(s: &[u8]) -> Literal {
539527
Literal::_new(imp::Literal::byte_string(s))
540528
}
541529

542530
pub fn span(&self) -> Span {
543-
self.span
531+
Span::_new(self.inner.span())
544532
}
545533

546534
pub fn set_span(&mut self, span: Span) {
547-
self.span = span;
535+
self.inner.set_span(span.inner);
548536
}
549537
}
550538

0 commit comments

Comments
 (0)