Fork of daniellemaywood.uk/gleam — Wasm codegen work
2

Configure Feed

Select the types of activity you want to include in your feed.

Fix rebase

+83 -17
+1 -1
compiler-core/src/ast.rs
··· 2429 2429 | Pattern::Invalid { .. } => {} 2430 2430 2431 2431 Pattern::Variable { name, .. } => variables.push(name.clone()), 2432 - Pattern::VarUsage { .. } => {} 2432 + Pattern::BitArraySize { .. } => {} 2433 2433 Pattern::Assign { name, pattern, .. } => { 2434 2434 variables.push(name.clone()); 2435 2435 pattern.collect_bound_variables(variables);
+1 -2
compiler-core/src/javascript/tests/bit_arrays.rs
··· 2500 2500 assert_js!( 2501 2501 " 2502 2502 pub fn go(x) { 2503 - <<x:bits-size(4)-unit(8)> 2503 + <<x:bits-size(4)-unit(8)>> 2504 2504 } 2505 2505 " 2506 2506 ); ··· 2512 2512 " 2513 2513 pub const bits = <<1, 2, 3>> 2514 2514 pub const more_bits = <<bits:bits-size(3)-unit(8)>> 2515 - } 2516 2515 " 2517 2516 ); 2518 2517 }
+19 -3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__block_in_pattern_size.snap
··· 16 16 17 17 export function main() { 18 18 let $ = toBitArray([]); 19 - if ($.bitSize < 8 || $.bitSize !== 8 + ($.byteAt(0) - 1) * 8) { 19 + let len$1; 20 + let payload; 21 + if ($.bitSize >= 8) { 22 + let len = $.byteAt(0); 23 + if ((len - 1) * 8 >= 0 && $.bitSize === 8 + (len - 1) * 8) { 24 + len$1 = len; 25 + payload = bitArraySliceToInt($, 8, 8 + (len$1 - 1) * 8, true, false); 26 + } else { 27 + throw makeError( 28 + "let_assert", 29 + FILEPATH, 30 + "my/mod", 31 + 3, 32 + "main", 33 + "Pattern match failed, no pattern matched the value.", 34 + { value: $, start: 19, end: 75, pattern_start: 30, pattern_end: 68 } 35 + ) 36 + } 37 + } else { 20 38 throw makeError( 21 39 "let_assert", 22 40 FILEPATH, ··· 27 45 { value: $, start: 19, end: 75, pattern_start: 30, pattern_end: 68 } 28 46 ) 29 47 } 30 - let len = $.byteAt(0); 31 - let payload = bitArraySliceToInt($, 8, 8 + (len - 1) * 8, true, false); 32 48 return $; 33 49 }
+1 -1
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__dynamic_size_pattern_with_unit.snap
··· 18 18 export function go(x) { 19 19 let size = 3; 20 20 if (!( 21 - size >= 0 && 21 + size * 2 >= 0 && 22 22 x.bitSize === size * 2 && 23 23 bitArraySliceToInt(x, 0, size * 2, true, false) === 1 24 24 )) {
+1 -1
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__match_dynamic_bytes_size.snap
··· 18 18 export function go(x) { 19 19 let n = 3; 20 20 let a; 21 - if (n >= 0 && x.bitSize === n * 8) { 21 + if (n * 8 >= 0 && x.bitSize === n * 8) { 22 22 a = bitArraySlice(x, 0, n * 8); 23 23 } else { 24 24 throw makeError(
+19 -3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__operator_in_pattern_size.snap
··· 16 16 17 17 export function main() { 18 18 let $ = toBitArray([]); 19 - if ($.bitSize < 8 || $.bitSize !== 8 + $.byteAt(0) * 8) { 19 + let len$1; 20 + let payload; 21 + if ($.bitSize >= 8) { 22 + let len = $.byteAt(0); 23 + if ($.bitSize === 8 + len * 8) { 24 + len$1 = len; 25 + payload = bitArraySliceToInt($, 8, 8 + len$1 * 8, true, false); 26 + } else { 27 + throw makeError( 28 + "let_assert", 29 + FILEPATH, 30 + "my/mod", 31 + 3, 32 + "main", 33 + "Pattern match failed, no pattern matched the value.", 34 + { value: $, start: 19, end: 67, pattern_start: 30, pattern_end: 60 } 35 + ) 36 + } 37 + } else { 20 38 throw makeError( 21 39 "let_assert", 22 40 FILEPATH, ··· 27 45 { value: $, start: 19, end: 67, pattern_start: 30, pattern_end: 60 } 28 46 ) 29 47 } 30 - let len = $.byteAt(0); 31 - let payload = bitArraySliceToInt($, 8, 8 + len * 8, true, false); 32 48 return $; 33 49 }
+22 -3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__operator_in_pattern_size2.snap
··· 16 16 17 17 export function main() { 18 18 let $ = toBitArray([]); 19 - if ($.bitSize < 8 || $.bitSize !== 8 + (divideInt($.byteAt(0), 8)) - 1) { 19 + let len$1; 20 + let payload; 21 + if ($.bitSize >= 8) { 22 + let len = $.byteAt(0); 23 + if ( 24 + (divideInt(len, 8)) - 1 >= 0 && 25 + $.bitSize === 8 + (divideInt(len, 8)) - 1 26 + ) { 27 + len$1 = len; 28 + payload = bitArraySliceToInt($, 8, 8 + (divideInt(len$1, 8)) - 1, true, false); 29 + } else { 30 + throw makeError( 31 + "let_assert", 32 + FILEPATH, 33 + "my/mod", 34 + 3, 35 + "main", 36 + "Pattern match failed, no pattern matched the value.", 37 + { value: $, start: 19, end: 71, pattern_start: 30, pattern_end: 64 } 38 + ) 39 + } 40 + } else { 20 41 throw makeError( 21 42 "let_assert", 22 43 FILEPATH, ··· 27 48 { value: $, start: 19, end: 71, pattern_start: 30, pattern_end: 64 } 28 49 ) 29 50 } 30 - let len = $.byteAt(0); 31 - let payload = bitArraySliceToInt($, 8, 8 + (divideInt(len, 8)) - 1, true, false); 32 51 return $; 33 52 }
+19 -3
compiler-core/src/javascript/tests/snapshots/gleam_core__javascript__tests__bit_arrays__operator_in_pattern_size3.snap
··· 18 18 export function main() { 19 19 let additional = 10; 20 20 let $ = toBitArray([]); 21 - if ($.bitSize < 8 || $.bitSize !== 8 + $.byteAt(0) + additional * 8) { 21 + let len$1; 22 + let payload; 23 + if ($.bitSize >= 8) { 24 + let len = $.byteAt(0); 25 + if (len + (additional * 8) >= 0 && $.bitSize === 8 + len + additional * 8) { 26 + len$1 = len; 27 + payload = bitArraySliceToInt($, 8, 8 + len$1 + (additional * 8), true, false); 28 + } else { 29 + throw makeError( 30 + "let_assert", 31 + FILEPATH, 32 + "my/mod", 33 + 4, 34 + "main", 35 + "Pattern match failed, no pattern matched the value.", 36 + { value: $, start: 41, end: 102, pattern_start: 52, pattern_end: 95 } 37 + ) 38 + } 39 + } else { 22 40 throw makeError( 23 41 "let_assert", 24 42 FILEPATH, ··· 29 47 { value: $, start: 41, end: 102, pattern_start: 52, pattern_end: 95 } 30 48 ) 31 49 } 32 - let len = $.byteAt(0); 33 - let payload = bitArraySliceToInt($, 8, 8 + len + (additional * 8), true, false); 34 50 return $; 35 51 }