Skip to content

Commit 297d81d

Browse files
authored
Merge pull request #479 from Kmeakin/no-self
Use explicit type names in place of `Self` where possible
2 parents 98711d0 + 26f6db3 commit 297d81d

File tree

8 files changed

+66
-60
lines changed

8 files changed

+66
-60
lines changed

fathom/src/alloc.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,7 @@ impl<'a, Elem> Deref for SliceVec<'a, Elem> {
9191
}
9292

9393
impl<'a, Elem> From<SliceVec<'a, Elem>> for &'a [Elem] {
94-
fn from(slice: SliceVec<'a, Elem>) -> Self {
94+
fn from(slice: SliceVec<'a, Elem>) -> &'a [Elem] {
9595
// SAFETY: This is safe because we know that `self.elems[..self.next_index]`
9696
// only ever contains elements initialized with `MaybeUninit::new`.
9797
// We know this because:

fathom/src/core.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -600,7 +600,7 @@ pub enum Const {
600600
}
601601

602602
impl PartialEq for Const {
603-
fn eq(&self, other: &Self) -> bool {
603+
fn eq(&self, other: &Const) -> bool {
604604
match (*self, *other) {
605605
(Const::Bool(a), Const::Bool(b)) => a == b,
606606
(Const::U8(a, _), Const::U8(b, _)) => a == b,
@@ -623,13 +623,13 @@ impl PartialEq for Const {
623623
impl Eq for Const {}
624624

625625
impl PartialOrd for Const {
626-
fn partial_cmp(&self, other: &Self) -> Option<std::cmp::Ordering> {
626+
fn partial_cmp(&self, other: &Const) -> Option<std::cmp::Ordering> {
627627
Some(self.cmp(other))
628628
}
629629
}
630630

631631
impl Ord for Const {
632-
fn cmp(&self, other: &Self) -> std::cmp::Ordering {
632+
fn cmp(&self, other: &Const) -> std::cmp::Ordering {
633633
match (*self, *other) {
634634
(Const::Bool(a), Const::Bool(b)) => a.cmp(&b),
635635
(Const::U8(a, _), Const::U8(b, _)) => a.cmp(&b),

fathom/src/core/binary.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ impl<'arena> fmt::Display for ReadError<'arena> {
4040
impl<'arena> std::error::Error for ReadError<'arena> {}
4141

4242
impl<'arena> From<BufferError> for ReadError<'arena> {
43-
fn from(err: BufferError) -> Self {
43+
fn from(err: BufferError) -> ReadError<'arena> {
4444
ReadError::BufferError(Span::Empty, err)
4545
}
4646
}

fathom/src/files.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
//! `FileId` as the file id, instead of `usize`.
33
44
use std::fmt;
5-
use std::num::NonZeroU32;
5+
use std::num::{NonZeroU32, TryFromIntError};
66
use std::ops::Range;
77

88
use codespan_reporting::files::{Error, SimpleFile};
@@ -21,28 +21,28 @@ impl fmt::Display for FileId {
2121
}
2222

2323
impl TryFrom<u32> for FileId {
24-
type Error = <NonZeroU32 as TryFrom<u32>>::Error;
24+
type Error = TryFromIntError;
2525

26-
fn try_from(value: u32) -> Result<Self, Self::Error> {
26+
fn try_from(value: u32) -> Result<FileId, TryFromIntError> {
2727
let id = NonZeroU32::try_from(value)?;
28-
Ok(Self(id))
28+
Ok(FileId(id))
2929
}
3030
}
3131

3232
impl From<FileId> for NonZeroU32 {
33-
fn from(value: FileId) -> Self {
33+
fn from(value: FileId) -> NonZeroU32 {
3434
value.0
3535
}
3636
}
3737

3838
impl From<FileId> for u32 {
39-
fn from(value: FileId) -> Self {
39+
fn from(value: FileId) -> u32 {
4040
value.0.get()
4141
}
4242
}
4343

4444
impl From<FileId> for usize {
45-
fn from(value: FileId) -> Self {
45+
fn from(value: FileId) -> usize {
4646
value.0.get() as usize
4747
}
4848
}

fathom/src/source.rs

Lines changed: 25 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -12,25 +12,24 @@ pub type StringId = string_interner::symbol::SymbolU32;
1212
pub struct StringInterner {
1313
alphabetic_names: Vec<StringId>,
1414
tuple_labels: Vec<StringId>,
15-
strings: string_interner::StringInterner<
16-
string_interner::backend::BucketBackend<StringId>,
17-
std::hash::BuildHasherDefault<fxhash::FxHasher32>,
18-
>,
15+
strings: Strings,
1916
}
2017

18+
type Strings = string_interner::StringInterner<
19+
string_interner::backend::BucketBackend<StringId>,
20+
std::hash::BuildHasherDefault<fxhash::FxHasher32>,
21+
>;
22+
2123
impl Deref for StringInterner {
22-
type Target = string_interner::StringInterner<
23-
string_interner::backend::BucketBackend<StringId>,
24-
std::hash::BuildHasherDefault<fxhash::FxHasher32>,
25-
>;
24+
type Target = Strings;
2625

27-
fn deref(&self) -> &Self::Target {
26+
fn deref(&self) -> &Strings {
2827
&self.strings
2928
}
3029
}
3130

3231
impl DerefMut for StringInterner {
33-
fn deref_mut(&mut self) -> &mut Self::Target {
32+
fn deref_mut(&mut self) -> &mut Strings {
3433
&mut self.strings
3534
}
3635
}
@@ -152,11 +151,11 @@ pub struct Spanned<T> {
152151
}
153152

154153
impl<T> Spanned<T> {
155-
pub fn new(span: Span, inner: T) -> Self {
154+
pub fn new(span: Span, inner: T) -> Spanned<T> {
156155
Spanned { span, inner }
157156
}
158157

159-
pub fn empty(inner: T) -> Self {
158+
pub fn empty(inner: T) -> Spanned<T> {
160159
Spanned {
161160
span: Span::Empty,
162161
inner,
@@ -184,13 +183,13 @@ impl<T> Spanned<T> {
184183
impl<T> Deref for Spanned<T> {
185184
type Target = T;
186185

187-
fn deref(&self) -> &Self::Target {
186+
fn deref(&self) -> &T {
188187
&self.inner
189188
}
190189
}
191190

192191
impl<T> DerefMut for Spanned<T> {
193-
fn deref_mut(&mut self) -> &mut Self::Target {
192+
fn deref_mut(&mut self) -> &mut T {
194193
&mut self.inner
195194
}
196195
}
@@ -211,13 +210,13 @@ impl Span {
211210
}
212211

213212
impl From<FileRange> for Span {
214-
fn from(range: FileRange) -> Self {
213+
fn from(range: FileRange) -> Span {
215214
Span::Range(range)
216215
}
217216
}
218217

219218
impl From<&FileRange> for Span {
220-
fn from(range: &FileRange) -> Self {
219+
fn from(range: &FileRange) -> Span {
221220
Span::Range(*range)
222221
}
223222
}
@@ -285,7 +284,7 @@ impl FileRange {
285284
}
286285

287286
impl From<FileRange> for Range<usize> {
288-
fn from(file_range: FileRange) -> Self {
287+
fn from(file_range: FileRange) -> Range<usize> {
289288
file_range.byte_range.into()
290289
}
291290
}
@@ -303,8 +302,8 @@ impl fmt::Debug for ByteRange {
303302
}
304303

305304
impl ByteRange {
306-
pub fn new(start: BytePos, end: BytePos) -> Self {
307-
Self { start, end }
305+
pub fn new(start: BytePos, end: BytePos) -> ByteRange {
306+
ByteRange { start, end }
308307
}
309308

310309
pub const fn start(&self) -> BytePos {
@@ -315,13 +314,13 @@ impl ByteRange {
315314
self.end
316315
}
317316

318-
pub fn merge(self, other: Self) -> Self {
319-
Self::new(self.start.min(other.start), self.end.max(other.end))
317+
pub fn merge(self, other: ByteRange) -> ByteRange {
318+
ByteRange::new(self.start.min(other.start), self.end.max(other.end))
320319
}
321320
}
322321

323322
impl From<ByteRange> for Range<usize> {
324-
fn from(range: ByteRange) -> Self {
323+
fn from(range: ByteRange) -> Range<usize> {
325324
(range.start as usize)..(range.end as usize)
326325
}
327326
}
@@ -342,7 +341,7 @@ impl fmt::Display for ProgramSource {
342341
impl Deref for ProgramSource {
343342
type Target = String;
344343

345-
fn deref(&self) -> &Self::Target {
344+
fn deref(&self) -> &String {
346345
&self.0
347346
}
348347
}
@@ -354,7 +353,7 @@ impl AsRef<str> for ProgramSource {
354353
}
355354

356355
impl From<ProgramSource> for String {
357-
fn from(source: ProgramSource) -> Self {
356+
fn from(source: ProgramSource) -> String {
358357
source.0
359358
}
360359
}
@@ -367,9 +366,9 @@ pub struct SourceTooBig {
367366
impl TryFrom<String> for ProgramSource {
368367
type Error = SourceTooBig;
369368

370-
fn try_from(string: String) -> Result<Self, Self::Error> {
369+
fn try_from(string: String) -> Result<ProgramSource, SourceTooBig> {
371370
if string.len() <= MAX_SOURCE_LEN {
372-
Ok(Self(string))
371+
Ok(ProgramSource(string))
373372
} else {
374373
Err(SourceTooBig {
375374
actual_len: string.len(),

fathom/src/surface/elaboration/order.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,9 @@ struct ModuleOrderContext<'a, 'interner, 'arena> {
7171
}
7272

7373
impl<'a, 'interner, 'arena> ModuleOrderContext<'a, 'interner, 'arena> {
74-
fn new(elab_context: &'a mut elaboration::Context<'interner, 'arena>) -> Self {
74+
fn new(
75+
elab_context: &'a mut elaboration::Context<'interner, 'arena>,
76+
) -> ModuleOrderContext<'a, 'interner, 'arena> {
7577
ModuleOrderContext {
7678
elab_context,
7779
output: Vec::new(),

fathom/src/surface/pretty.rs

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::cell::RefCell;
22

3-
use pretty::{Doc, DocAllocator, DocBuilder, DocPtr, RefDoc};
3+
use pretty::{Doc, DocAllocator, DocPtr, RefDoc};
44
use scoped_arena::Scope;
55

66
use crate::source::{StringId, StringInterner};
@@ -9,6 +9,8 @@ use crate::surface::{Arg, FormatField, Item, Module, Param, Pattern, Plicity, Te
99

1010
const INDENT: isize = 4;
1111

12+
type DocBuilder<'interner, 'arena> = pretty::DocBuilder<'arena, Context<'interner, 'arena>>;
13+
1214
pub struct Context<'interner, 'arena> {
1315
interner: &'interner RefCell<StringInterner>,
1416
scope: &'arena Scope<'arena>,
@@ -22,29 +24,32 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
2224
Context { interner, scope }
2325
}
2426

25-
fn string_id(&'arena self, name: StringId) -> DocBuilder<'arena, Self> {
27+
fn string_id(&'arena self, name: StringId) -> DocBuilder<'interner, 'arena> {
2628
match self.interner.borrow().resolve(name) {
2729
Some(name) => self.text(name.to_owned()),
2830
None => self.text("#error"),
2931
}
3032
}
3133

32-
fn ident(&'arena self, name: StringId) -> DocBuilder<'arena, Self> {
34+
fn ident(&'arena self, name: StringId) -> DocBuilder<'interner, 'arena> {
3335
match self.interner.borrow().resolve(name) {
3436
Some(name) if is_keyword(name) => self.text(format!("r#{name}")),
3537
Some(name) => self.text(name.to_owned()),
3638
None => self.text("#error"),
3739
}
3840
}
3941

40-
pub fn module<Range>(&'arena self, module: &Module<'_, Range>) -> DocBuilder<'arena, Self> {
42+
pub fn module<Range>(
43+
&'arena self,
44+
module: &Module<'_, Range>,
45+
) -> DocBuilder<'interner, 'arena> {
4146
self.intersperse(
4247
module.items.iter().map(|item| self.item(item)),
4348
self.hardline(),
4449
)
4550
}
4651

47-
fn item<Range>(&'arena self, item: &Item<'_, Range>) -> DocBuilder<'arena, Self> {
52+
fn item<Range>(&'arena self, item: &Item<'_, Range>) -> DocBuilder<'interner, 'arena> {
4853
match item {
4954
Item::Def(item) => self
5055
.concat([
@@ -79,7 +84,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
7984
}
8085
}
8186

82-
fn pattern<Range>(&'arena self, pattern: &Pattern<Range>) -> DocBuilder<'arena, Self> {
87+
fn pattern<Range>(&'arena self, pattern: &Pattern<Range>) -> DocBuilder<'interner, 'arena> {
8388
match pattern {
8489
Pattern::Placeholder(_) => self.text("_"),
8590
Pattern::Name(_, name) => self.ident(*name),
@@ -92,7 +97,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
9297
}
9398
}
9499

95-
fn plicity(&'arena self, plicity: Plicity) -> DocBuilder<'arena, Self> {
100+
fn plicity(&'arena self, plicity: Plicity) -> DocBuilder<'interner, 'arena> {
96101
match plicity {
97102
Plicity::Explicit => self.nil(),
98103
Plicity::Implicit => self.text("@"),
@@ -103,7 +108,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
103108
&'arena self,
104109
pattern: &Pattern<Range>,
105110
r#type: Option<&Term<'_, Range>>,
106-
) -> DocBuilder<'arena, Self> {
111+
) -> DocBuilder<'interner, 'arena> {
107112
match r#type {
108113
None => self.pattern(pattern),
109114
Some(r#type) => self.concat([
@@ -115,7 +120,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
115120
}
116121
}
117122

118-
fn param<Range>(&'arena self, param: &Param<'_, Range>) -> DocBuilder<'arena, Self> {
123+
fn param<Range>(&'arena self, param: &Param<'_, Range>) -> DocBuilder<'interner, 'arena> {
119124
match &param.r#type {
120125
None => self.concat([self.plicity(param.plicity), self.pattern(&param.pattern)]),
121126
Some(r#type) => self.concat([
@@ -134,15 +139,15 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
134139
}
135140
}
136141

137-
fn params<Range>(&'arena self, params: &[Param<'_, Range>]) -> DocBuilder<'arena, Self> {
142+
fn params<Range>(&'arena self, params: &[Param<'_, Range>]) -> DocBuilder<'interner, 'arena> {
138143
self.concat((params.iter()).map(|param| self.concat([self.space(), self.param(param)])))
139144
}
140145

141-
fn arg<Range>(&'arena self, arg: &Arg<'_, Range>) -> DocBuilder<'arena, Self> {
146+
fn arg<Range>(&'arena self, arg: &Arg<'_, Range>) -> DocBuilder<'interner, 'arena> {
142147
self.concat([self.plicity(arg.plicity), self.term(&arg.term)])
143148
}
144149

145-
pub fn term<Range>(&'arena self, term: &Term<'_, Range>) -> DocBuilder<'arena, Self> {
150+
pub fn term<Range>(&'arena self, term: &Term<'_, Range>) -> DocBuilder<'interner, 'arena> {
146151
// FIXME: indentation and grouping
147152

148153
match term {
@@ -337,7 +342,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
337342
fn format_field<Range>(
338343
&'arena self,
339344
format_field: &FormatField<'_, Range>,
340-
) -> DocBuilder<'arena, Self> {
345+
) -> DocBuilder<'interner, 'arena> {
341346
match format_field {
342347
FormatField::Format {
343348
label,
@@ -385,7 +390,7 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
385390
}
386391

387392
/// Wrap a document in parens.
388-
fn paren(&'arena self, doc: DocBuilder<'arena, Self>) -> DocBuilder<'arena, Self> {
393+
fn paren(&'arena self, doc: DocBuilder<'interner, 'arena>) -> DocBuilder<'interner, 'arena> {
389394
self.concat([self.text("("), doc, self.text(")")])
390395
}
391396

@@ -396,11 +401,11 @@ impl<'interner, 'arena> Context<'interner, 'arena> {
396401
pub fn sequence(
397402
&'arena self,
398403
space: bool,
399-
start_delim: DocBuilder<'arena, Self>,
400-
docs: impl ExactSizeIterator<Item = DocBuilder<'arena, Self>> + Clone,
401-
separator: DocBuilder<'arena, Self>,
402-
end_delim: DocBuilder<'arena, Self>,
403-
) -> DocBuilder<'arena, Self> {
404+
start_delim: DocBuilder<'interner, 'arena>,
405+
docs: impl ExactSizeIterator<Item = DocBuilder<'interner, 'arena>> + Clone,
406+
separator: DocBuilder<'interner, 'arena>,
407+
end_delim: DocBuilder<'interner, 'arena>,
408+
) -> DocBuilder<'interner, 'arena> {
404409
if docs.len() == 0 {
405410
return self.concat([start_delim, end_delim]);
406411
}

0 commit comments

Comments
 (0)