Skip to content

Commit ef003d6

Browse files
committed
Remove implicit unsigned integer extensions
1 parent 45d6d7b commit ef003d6

File tree

13 files changed

+120
-143
lines changed

13 files changed

+120
-143
lines changed

fathom/src/surface/elaboration.rs

Lines changed: 1 addition & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -596,31 +596,7 @@ impl<'arena> Context<'arena> {
596596
self.scope.to_scope(expr),
597597
)
598598
}
599-
600-
(_, _) => {
601-
// Implictly extend unsigned integer types
602-
let extend_prim = match Option::zip(from.match_prim_spine(), to.match_prim_spine())
603-
{
604-
Some(((Prim::U8Type, []), (Prim::U16Type, []))) => Prim::U8ExtendU16,
605-
Some(((Prim::U8Type, []), (Prim::U32Type, []))) => Prim::U8ExtendU32,
606-
Some(((Prim::U8Type, []), (Prim::U64Type, []))) => Prim::U8ExtendU64,
607-
608-
Some(((Prim::U16Type, []), (Prim::U32Type, []))) => Prim::U16ExtendU32,
609-
Some(((Prim::U16Type, []), (Prim::U64Type, []))) => Prim::U16ExtendU64,
610-
611-
Some(((Prim::U32Type, []), (Prim::U64Type, []))) => Prim::U32ExtendU64,
612-
613-
// Otherwise, unify the types
614-
_ => return self.convert(surface_range, expr, &from, &to),
615-
};
616-
617-
core::Term::FunApp(
618-
span,
619-
Plicity::Explicit,
620-
self.scope.to_scope(core::Term::Prim(span, extend_prim)),
621-
self.scope.to_scope(expr),
622-
)
623-
}
599+
_ => return self.convert(surface_range, expr, &from, &to),
624600
}
625601
}
626602

formats/gif.fathom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ def color_table_entry = {
5050
///
5151
/// - [GIF89a Specification: Section 19](https://www.w3.org/Graphics/GIF/spec-gif89a.txt)
5252
def global_color_table (len : U16) = {
53-
entries <- repeat_len64 len color_table_entry,
53+
entries <- repeat_len64 (u16_extend_u64 len) color_table_entry,
5454
};
5555

5656
def main = {

formats/image.fathom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,5 +15,5 @@ def main = {
1515
/// The height of the image, in pixels.
1616
height <- u32be,
1717
/// The pixel data.
18-
pixels <- repeat_len64 (width * height) pixel,
18+
pixels <- repeat_len64 (u32_extend_u64 (width * height)) pixel,
1919
};

formats/image.snap

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ def pixel : Format = { red <- s32be, green <- s32be, blue <- s32be };
33
def main : Format = {
44
width <- u32be,
55
height <- u32be,
6-
pixels <- repeat_len64 (u32_extend_u64 width * u32_extend_u64 height) pixel,
6+
pixels <- repeat_len64 (u32_extend_u64 (width * height)) pixel,
77
};
88
'''
99
stderr = ''

formats/opentype.fathom

Lines changed: 94 additions & 94 deletions
Large diffs are not rendered by default.

formats/opentype.snap

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -57,15 +57,15 @@ def cmap_subtable_format4 : Repr platform_id -> Format = fun platform => {
5757
length <- u16be,
5858
language <- cmap_language_id platform,
5959
seg_count_x2 <- u16be,
60-
let seg_count : U16 = seg_count_x2 / (2 : U16),
60+
let seg_count : U64 = u16_extend_u64 (seg_count_x2 / (2 : U16)),
6161
search_range <- u16be,
6262
entry_selector <- u16be,
6363
range_shift <- u16be,
64-
end_code <- repeat_len64 (u16_extend_u64 seg_count) u16be,
64+
end_code <- repeat_len64 seg_count u16be,
6565
_reserved_pad <- reserved s16be 0,
66-
start_code <- repeat_len64 (u16_extend_u64 seg_count) u16be,
67-
id_delta <- repeat_len64 (u16_extend_u64 seg_count) s16be,
68-
id_range_offsets <- repeat_len64 (u16_extend_u64 seg_count) u16be,
66+
start_code <- repeat_len64 seg_count u16be,
67+
id_delta <- repeat_len64 seg_count s16be,
68+
id_range_offsets <- repeat_len64 seg_count u16be,
6969
};
7070
def cmap_subtable_format6 : Repr platform_id -> Format = fun platform => {
7171
length <- u16be,
@@ -384,7 +384,8 @@ def simple_glyph : U16 -> Format = fun number_of_contours => {
384384
end_pts_of_contours <- repeat_len64 (u16_extend_u64 number_of_contours) u16be,
385385
instruction_length <- u16be,
386386
instructions <- repeat_len64 (u16_extend_u64 instruction_length) u8,
387-
let last_end_point_index : U16 = array64_index @(u16_extend_u64 number_of_contours) @U16 (u16_extend_u64 number_of_contours - u16_extend_u64 1) end_pts_of_contours,
387+
let last_end_point_index : U16 = array64_index @(u16_extend_u64 number_of_contours) @U16 (u16_extend_u64 (number_of_contours - (1 :
388+
U16))) end_pts_of_contours,
388389
let number_of_coords : U16 = last_end_point_index + (1 : U16),
389390
};
390391
def glyph : Format = {

formats/stl-binary.fathom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,5 +28,5 @@ def triangle = {
2828
def main = {
2929
header <- repeat_len64 80 u8,
3030
triangle_count <- u32le,
31-
triangles <- repeat_len64 triangle_count triangle,
31+
triangles <- repeat_len64 (u32_extend_u64 triangle_count) triangle,
3232
};

tests/succeed/binops/synth.fathom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ let device_table = (
3232
/// Array of compressed data
3333
delta_values <-
3434
let delta_bits = delta_bits delta_format (num_sizes start_size end_size);
35-
repeat_len64 (u16_div_ceil delta_bits 16) u16be,
35+
repeat_len64 (u16_extend_u64 (u16_div_ceil delta_bits 16)) u16be,
3636
}
3737
);
3838

tests/succeed/format-deref/simple.fathom

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@
33
link <- link start u16be,
44
len <- deref link,
55
_reserved <- u16be,
6-
data <- repeat_len64 len u16be,
6+
data <- repeat_len64 (u16_extend_u64 len) u16be,
77
}

tests/succeed/format-overlap/dependent.fathom

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ let record0 = {
77

88
let record1 = fun (length : U8) => {
99
_length <- u8, // Skip length
10-
data <- repeat_len64 length u8,
10+
data <- repeat_len64 (u8_extend_u64 length) u8,
1111
};
1212

1313
let silly = overlap {
@@ -18,7 +18,7 @@ let silly = overlap {
1818
let _ :
1919
Repr silly -> {
2020
record0 : { length : U8 },
21-
record1 : { _length : U8, data : Array64 record0.length U8 },
21+
record1 : { _length : U8, data : Array64 (u8_extend_u64 record0.length) U8 },
2222
}
2323
= fun silly => silly;
2424

0 commit comments

Comments
 (0)