Skip to content

Commit 53dcccd

Browse files
authored
Merge pull request #387 from brendanzab/rename-environment-structs
Rename environment structs in semantics
2 parents c37ce99 + 555790b commit 53dcccd

File tree

7 files changed

+171
-190
lines changed

7 files changed

+171
-190
lines changed

fathom/src/core.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,8 @@ pub enum Term<'arena> {
116116
/// [entry information]: EntryInfo
117117
/// [function literals]: Term::FunLit
118118
/// [function applications]: Term::FunApp
119-
/// [evaluation]: semantics::EvalContext::eval
120-
/// [quoting]: semantics::QuoteContext::quote
119+
/// [evaluation]: semantics::EvalEnv::eval
120+
/// [quoting]: semantics::QuoteEnv::quote
121121
//
122122
// TODO: Bit-vectors might make this a bit more compact and cheaper to
123123
// construct. For example:

fathom/src/core/binary.rs

Lines changed: 14 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -279,12 +279,12 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
279279
}
280280
}
281281

282-
fn elim_context(&self) -> semantics::ElimContext<'arena, 'env> {
283-
semantics::ElimContext::new(self.item_exprs, self.flexible_exprs)
282+
fn elim_env(&self) -> semantics::ElimEnv<'arena, 'env> {
283+
semantics::ElimEnv::new(self.item_exprs, self.flexible_exprs)
284284
}
285285

286-
fn conversion_context(&self) -> semantics::ConversionContext<'arena, 'env> {
287-
semantics::ConversionContext::new(self.item_exprs, EnvLen::new(), self.flexible_exprs)
286+
fn conversion_env(&self) -> semantics::ConversionEnv<'arena, 'env> {
287+
semantics::ConversionEnv::new(self.item_exprs, EnvLen::new(), self.flexible_exprs)
288288
}
289289

290290
pub fn read_entrypoint(
@@ -307,7 +307,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
307307
reader: &mut BufferReader<'data>,
308308
format: &ArcValue<'arena>,
309309
) -> Result<ArcValue<'arena>, ReadError<'arena>> {
310-
let val = self.elim_context().force(format);
310+
let val = self.elim_env().force(format);
311311
let format_span = val.span();
312312
match val.as_ref() {
313313
Value::Stuck(Head::Prim(prim), slice) => {
@@ -317,9 +317,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
317317
let mut formats = formats.clone();
318318
let mut exprs = Vec::with_capacity(formats.len());
319319

320-
while let Some((format, next_formats)) =
321-
self.elim_context().split_telescope(formats)
322-
{
320+
while let Some((format, next_formats)) = self.elim_env().split_telescope(formats) {
323321
let expr = self.read_format(reader, &format)?;
324322
exprs.push(expr.clone());
325323
formats = next_formats(expr);
@@ -332,7 +330,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
332330
}
333331
Value::FormatCond(_label, format, cond) => {
334332
let value = self.read_format(reader, &format)?;
335-
let cond_res = self.elim_context().apply_closure(cond, value.clone());
333+
let cond_res = self.elim_env().apply_closure(cond, value.clone());
336334

337335
match cond_res.as_ref() {
338336
Value::ConstLit(Const::Bool(true)) => Ok(value),
@@ -351,9 +349,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
351349
let mut formats = formats.clone();
352350
let mut exprs = Vec::with_capacity(formats.len());
353351

354-
while let Some((format, next_formats)) =
355-
self.elim_context().split_telescope(formats)
356-
{
352+
while let Some((format, next_formats)) = self.elim_env().split_telescope(formats) {
357353
let mut reader = reader.clone();
358354

359355
let expr = self.read_format(&mut reader, &format)?;
@@ -445,7 +441,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
445441
len: &ArcValue<'arena>,
446442
elem_format: &ArcValue<'arena>,
447443
) -> Result<ArcValue<'arena>, ReadError<'arena>> {
448-
let len = match self.elim_context().force(len).as_ref() {
444+
let len = match self.elim_env().force(len).as_ref() {
449445
Value::ConstLit(Const::U8(len, _)) => u64::from(*len),
450446
Value::ConstLit(Const::U16(len, _)) => u64::from(*len),
451447
Value::ConstLit(Const::U32(len, _)) => u64::from(*len),
@@ -495,7 +491,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
495491
elem_format: &ArcValue<'arena>,
496492
) -> Result<ArcValue<'arena>, ReadError<'arena>> {
497493
let len_span = len.span();
498-
let len = match self.elim_context().force(len).as_ref() {
494+
let len = match self.elim_env().force(len).as_ref() {
499495
Value::ConstLit(Const::U8(len, _)) => Some(usize::from(*len)),
500496
Value::ConstLit(Const::U16(len, _)) => Some(usize::from(*len)),
501497
Value::ConstLit(Const::U32(len, _)) => usize::try_from(*len).ok(),
@@ -518,7 +514,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
518514
pos_value: &ArcValue<'arena>,
519515
elem_format: &ArcValue<'arena>,
520516
) -> Result<ArcValue<'arena>, ReadError<'arena>> {
521-
let pos = match self.elim_context().force(pos_value).as_ref() {
517+
let pos = match self.elim_env().force(pos_value).as_ref() {
522518
Value::ConstLit(Const::Pos(pos)) => *pos,
523519
_ => return Err(ReadError::InvalidValue(pos_value.span())),
524520
};
@@ -536,7 +532,7 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
536532
format: &ArcValue<'arena>,
537533
r#ref: &ArcValue<'arena>,
538534
) -> Result<ArcValue<'arena>, ReadError<'arena>> {
539-
let pos = match self.elim_context().force(r#ref).as_ref() {
535+
let pos = match self.elim_env().force(r#ref).as_ref() {
540536
Value::ConstLit(Const::Ref(pos)) => *pos,
541537
_ => return Err(ReadError::InvalidValue(r#ref.span())),
542538
};
@@ -549,14 +545,14 @@ impl<'arena, 'env, 'data> Context<'arena, 'env, 'data> {
549545
pos: usize,
550546
format: &ArcValue<'_>,
551547
) -> Option<&'context ParsedRef<'arena>> {
552-
// NOTE: The number of calls to `semantics::ConversionContext::is_equal`
548+
// NOTE: The number of calls to `semantics::ConversionEnv::is_equal`
553549
// when looking up cached references is a bit of a pain. If this ever
554550
// becomes a problem we could improve performance by pre-allocating a
555551
// `ParsedRef` in the cache during `read_link`, and storing the index of
556552
// that parsed reference alongside the position in `Const::Ref`.
557553

558554
(self.cached_refs.get(&pos)?.iter())
559-
.find(|r| self.conversion_context().is_equal(&r.format, &format))
555+
.find(|r| self.conversion_env().is_equal(&r.format, &format))
560556
}
561557

562558
fn lookup_or_read_ref(

0 commit comments

Comments
 (0)