Skip to content

Commit 462356c

Browse files
committed
feat: remove boxing of 'PreSymbolicExpression' strutrure
1 parent 93a918d commit 462356c

File tree

4 files changed

+62
-65
lines changed

4 files changed

+62
-65
lines changed

clarity/src/vm/ast/parser/v1.rs

Lines changed: 26 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -525,7 +525,7 @@ pub fn parse_lexed(input: Vec<(LexItem, u32, u32)>) -> ParseResult<Vec<PreSymbol
525525
if let Some((list, start_line, start_column, parse_context)) = parse_stack.pop() {
526526
match parse_context {
527527
ParseContext::CollectList => {
528-
let checked_list: ParseResult<Box<[PreSymbolicExpression]>> = list
528+
let checked_list: ParseResult<Vec<PreSymbolicExpression>> = list
529529
.into_iter()
530530
.map(|i| match i {
531531
ParseStackItem::Expression(e) => Ok(e),
@@ -601,8 +601,7 @@ pub fn parse_lexed(input: Vec<(LexItem, u32, u32)>) -> ParseResult<Vec<PreSymbol
601601
_ => unreachable!("More than four modulos of four."),
602602
}?;
603603
}
604-
let mut pre_expr =
605-
PreSymbolicExpression::tuple(checked_list.into_boxed_slice());
604+
let mut pre_expr = PreSymbolicExpression::tuple(checked_list);
606605
pre_expr.set_span(start_line, start_column, line_pos, column_pos);
607606
handle_expression(&mut parse_stack, &mut output_list, pre_expr);
608607
}
@@ -772,7 +771,7 @@ mod test {
772771
start_column: u32,
773772
end_line: u32,
774773
end_column: u32,
775-
x: Box<[PreSymbolicExpression]>,
774+
x: Vec<PreSymbolicExpression>,
776775
) -> PreSymbolicExpression {
777776
let mut e = PreSymbolicExpression::list(x);
778777
e.set_span(start_line, start_column, end_line, end_column);
@@ -784,7 +783,7 @@ mod test {
784783
start_column: u32,
785784
end_line: u32,
786785
end_column: u32,
787-
x: Box<[PreSymbolicExpression]>,
786+
x: Vec<PreSymbolicExpression>,
788787
) -> PreSymbolicExpression {
789788
let mut e = PreSymbolicExpression::tuple(x);
790789
e.set_span(start_line, start_column, end_line, end_column);
@@ -808,84 +807,84 @@ mod test {
808807
3,
809808
6,
810809
11,
811-
Box::new([
810+
vec![
812811
make_atom("let", 1, 4, 1, 6),
813812
make_list(
814813
1,
815814
8,
816815
1,
817816
20,
818-
Box::new([
817+
vec![
819818
make_list(
820819
1,
821820
9,
822821
1,
823822
13,
824-
Box::new([
823+
vec![
825824
make_atom("x", 1, 10, 1, 10),
826825
make_atom_value(Value::Int(1), 1, 12, 1, 12),
827-
]),
826+
],
828827
),
829828
make_list(
830829
1,
831830
15,
832831
1,
833832
19,
834-
Box::new([
833+
vec![
835834
make_atom("y", 1, 16, 1, 16),
836835
make_atom_value(Value::Int(2), 1, 18, 1, 18),
837-
]),
836+
],
838837
),
839-
]),
838+
],
840839
),
841840
make_list(
842841
2,
843842
5,
844843
6,
845844
10,
846-
Box::new([
845+
vec![
847846
make_atom("+", 2, 6, 2, 6),
848847
make_atom("x", 2, 8, 2, 8),
849848
make_list(
850849
4,
851850
9,
852851
5,
853852
16,
854-
Box::new([
853+
vec![
855854
make_atom("let", 4, 10, 4, 12),
856855
make_list(
857856
4,
858857
14,
859858
4,
860859
20,
861-
Box::new([make_list(
860+
vec![make_list(
862861
4,
863862
15,
864863
4,
865864
19,
866-
Box::new([
865+
vec![
867866
make_atom("x", 4, 16, 4, 16),
868867
make_atom_value(Value::Int(3), 4, 18, 4, 18),
869-
]),
870-
)]),
868+
],
869+
)],
871870
),
872871
make_list(
873872
5,
874873
9,
875874
5,
876875
15,
877-
Box::new([
876+
vec![
878877
make_atom("+", 5, 10, 5, 10),
879878
make_atom("x", 5, 12, 5, 12),
880879
make_atom("y", 5, 14, 5, 14),
881-
]),
880+
],
882881
),
883-
]),
882+
],
884883
),
885884
make_atom("x", 6, 9, 6, 9),
886-
]),
885+
],
887886
),
888-
]),
887+
],
889888
),
890889
make_atom("x", 6, 13, 6, 13),
891890
make_atom("y", 6, 15, 6, 15),
@@ -907,11 +906,11 @@ mod test {
907906
9,
908907
2,
909908
17,
910-
Box::new([
909+
vec![
911910
make_atom("-", 2, 10, 2, 10),
912911
make_atom_value(Value::Int(12), 2, 12, 2, 13),
913912
make_atom_value(Value::Int(34), 2, 15, 2, 16),
914-
]),
913+
],
915914
),
916915
];
917916

@@ -931,10 +930,10 @@ mod test {
931930
1,
932931
1,
933932
11,
934-
Box::new([
933+
vec![
935934
make_atom("id", 1, 2, 1, 3),
936935
make_atom_value(Value::Int(1337), 1, 6, 1, 9),
937-
]),
936+
],
938937
)];
939938
let parsed = ast::parser::v1::parse(input);
940939
assert_eq!(Ok(program), parsed, "Should match expected tuple literal");

clarity/src/vm/ast/parser/v2/mod.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -236,7 +236,7 @@ impl<'a> Parser<'a> {
236236
span.end_line = token.span.end_line;
237237
span.end_column = token.span.end_column;
238238
let out_nodes: Vec<_> = std::mem::take(nodes);
239-
let mut e = PreSymbolicExpression::list(out_nodes.into_boxed_slice());
239+
let mut e = PreSymbolicExpression::list(out_nodes);
240240
e.copy_span(span);
241241
Ok(Some(e))
242242
}
@@ -253,7 +253,7 @@ impl<'a> Parser<'a> {
253253
span.end_line = token.span.end_line;
254254
span.end_column = token.span.end_column;
255255
let out_nodes: Vec<_> = std::mem::take(nodes);
256-
let mut e = PreSymbolicExpression::list(out_nodes.into_boxed_slice());
256+
let mut e = PreSymbolicExpression::list(out_nodes);
257257
e.copy_span(span);
258258
Ok(Some(e))
259259
}
@@ -301,8 +301,7 @@ impl<'a> Parser<'a> {
301301
open_tuple.span.clone(),
302302
)?;
303303
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
304-
let mut e =
305-
PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
304+
let mut e = PreSymbolicExpression::tuple(out_nodes);
306305
let span_before_eof = &self.tokens[self.tokens.len() - 2].span;
307306
open_tuple.span.end_line = span_before_eof.end_line;
308307
open_tuple.span.end_column = span_before_eof.end_column;
@@ -341,7 +340,7 @@ impl<'a> Parser<'a> {
341340
placeholder.copy_span(&token.span);
342341
open_tuple.nodes.push(placeholder); // Placeholder value
343342
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
344-
let mut e = PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
343+
let mut e = PreSymbolicExpression::tuple(out_nodes);
345344
let span_before_eof = &self.tokens[self.tokens.len() - 2].span;
346345
open_tuple.span.end_line = span_before_eof.end_line;
347346
open_tuple.span.end_column = span_before_eof.end_column;
@@ -386,8 +385,7 @@ impl<'a> Parser<'a> {
386385
placeholder.copy_span(&eof_span);
387386
open_tuple.nodes.push(placeholder); // Placeholder value
388387
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
389-
let mut e =
390-
PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
388+
let mut e = PreSymbolicExpression::tuple(out_nodes);
391389
open_tuple.span.end_line =
392390
open_tuple.diagnostic_token.span.end_line;
393391
open_tuple.span.end_column =
@@ -422,7 +420,7 @@ impl<'a> Parser<'a> {
422420
open_tuple.span.end_column = token.span.end_column;
423421
self.next_token();
424422
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
425-
let mut e = PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
423+
let mut e = PreSymbolicExpression::tuple(out_nodes);
426424
e.copy_span(&open_tuple.span);
427425
return Ok(Some(e));
428426
}
@@ -440,7 +438,7 @@ impl<'a> Parser<'a> {
440438
open_tuple.span.end_column = token.span.end_column;
441439
self.next_token();
442440
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
443-
let mut e = PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
441+
let mut e = PreSymbolicExpression::tuple(out_nodes);
444442
e.copy_span(&open_tuple.span);
445443
return Ok(Some(e));
446444
}
@@ -479,7 +477,7 @@ impl<'a> Parser<'a> {
479477
open_tuple.span.end_column = token.span.end_column;
480478
self.next_token();
481479
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
482-
let mut e = PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
480+
let mut e = PreSymbolicExpression::tuple(out_nodes);
483481
e.copy_span(&open_tuple.span);
484482
return Ok(SetupTupleResult::Closed(e));
485483
}
@@ -496,7 +494,7 @@ impl<'a> Parser<'a> {
496494
open_tuple.span.end_column = token.span.end_column;
497495
self.next_token();
498496
let out_nodes: Vec<_> = open_tuple.nodes.drain(..).collect();
499-
let mut e = PreSymbolicExpression::tuple(out_nodes.into_boxed_slice());
497+
let mut e = PreSymbolicExpression::tuple(out_nodes);
500498
e.copy_span(&open_tuple.span);
501499
return Ok(SetupTupleResult::Closed(e));
502500
}

clarity/src/vm/ast/sugar_expander/mod.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -205,7 +205,7 @@ mod test {
205205
start_column: u32,
206206
end_line: u32,
207207
end_column: u32,
208-
x: Box<[PreSymbolicExpression]>,
208+
x: Vec<PreSymbolicExpression>,
209209
) -> PreSymbolicExpression {
210210
let mut e = PreSymbolicExpression::list(x);
211211
e.set_span(start_line, start_column, end_line, end_column);
@@ -217,7 +217,7 @@ mod test {
217217
start_column: u32,
218218
end_line: u32,
219219
end_column: u32,
220-
x: Box<[PreSymbolicExpression]>,
220+
x: Vec<PreSymbolicExpression>,
221221
) -> PreSymbolicExpression {
222222
let mut e = PreSymbolicExpression::tuple(x);
223223
e.set_span(start_line, start_column, end_line, end_column);
@@ -305,84 +305,84 @@ mod test {
305305
3,
306306
6,
307307
11,
308-
Box::new([
308+
vec![
309309
make_pre_atom("let", 1, 4, 1, 6),
310310
make_pre_list(
311311
1,
312312
8,
313313
1,
314314
20,
315-
Box::new([
315+
vec![
316316
make_pre_list(
317317
1,
318318
9,
319319
1,
320320
13,
321-
Box::new([
321+
vec![
322322
make_pre_atom("x", 1, 10, 1, 10),
323323
make_pre_atom_value(Value::Int(1), 1, 12, 1, 12),
324-
]),
324+
],
325325
),
326326
make_pre_list(
327327
1,
328328
15,
329329
1,
330330
19,
331-
Box::new([
331+
vec![
332332
make_pre_atom("y", 1, 16, 1, 16),
333333
make_pre_atom_value(Value::Int(2), 1, 18, 1, 18),
334-
]),
334+
],
335335
),
336-
]),
336+
],
337337
),
338338
make_pre_list(
339339
2,
340340
5,
341341
6,
342342
10,
343-
Box::new([
343+
vec![
344344
make_pre_atom("+", 2, 6, 2, 6),
345345
make_pre_atom("x", 2, 8, 2, 8),
346346
make_pre_list(
347347
4,
348348
9,
349349
5,
350350
16,
351-
Box::new([
351+
vec![
352352
make_pre_atom("let", 4, 10, 4, 12),
353353
make_pre_list(
354354
4,
355355
14,
356356
4,
357357
20,
358-
Box::new([make_pre_list(
358+
vec![make_pre_list(
359359
4,
360360
15,
361361
4,
362362
19,
363-
Box::new([
363+
vec![
364364
make_pre_atom("x", 4, 16, 4, 16),
365365
make_pre_atom_value(Value::Int(3), 4, 18, 4, 18),
366-
]),
367-
)]),
366+
],
367+
)],
368368
),
369369
make_pre_list(
370370
5,
371371
9,
372372
5,
373373
15,
374-
Box::new([
374+
vec![
375375
make_pre_atom("+", 5, 10, 5, 10),
376376
make_pre_atom("x", 5, 12, 5, 12),
377377
make_pre_atom("y", 5, 14, 5, 14),
378-
]),
378+
],
379379
),
380-
]),
380+
],
381381
),
382382
make_pre_atom("x", 6, 9, 6, 9),
383-
]),
383+
],
384384
),
385-
]),
385+
],
386386
),
387387
make_pre_atom("x", 6, 13, 6, 13),
388388
make_pre_atom("y", 6, 15, 6, 15),
@@ -498,10 +498,10 @@ mod test {
498498
1,
499499
1,
500500
9,
501-
Box::new([
501+
vec![
502502
make_pre_atom("id", 1, 2, 1, 3),
503503
make_pre_atom_value(Value::Int(1337), 1, 5, 1, 8),
504-
]),
504+
],
505505
)];
506506
let ast = vec![make_list(
507507
1,
@@ -848,7 +848,7 @@ mod test {
848848
// )
849849
let pre_foo = make_pre_atom("foo", 2, 4, 2, 6);
850850
let pre_comment = make_pre_comment("this is a comment".to_string(), 3, 4, 3, 20);
851-
let pre_ast = vec![make_pre_list(1, 1, 4, 1, Box::new([pre_foo, pre_comment]))];
851+
let pre_ast = vec![make_pre_list(1, 1, 4, 1, vec![pre_foo, pre_comment])];
852852
let mut foo = make_atom("foo", 2, 4, 2, 6);
853853
foo.post_comments = vec![(
854854
"this is a comment".to_string(),

0 commit comments

Comments
 (0)