Skip to content

Commit dde7b8c

Browse files
authored
Merge pull request #449 from gramlang/rust-v1.87.0
Update Rust to v1.87.0
2 parents 4e2f75c + 324882b commit dde7b8c

File tree

12 files changed

+77
-76
lines changed

12 files changed

+77
-76
lines changed

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ jobs:
8383
# https://github.com/rust-lang/rustup/issues/2441
8484
#
8585
# for more information.
86-
rustup toolchain install 1.85.0 --no-self-update # [ref:rust_1.85.0]
87-
rustup default 1.85.0 # [ref:rust_1.85.0]
86+
rustup toolchain install 1.87.0 --no-self-update # [ref:rust_1.87.0]
87+
rustup default 1.87.0 # [ref:rust_1.87.0]
8888
8989
# Add the targets.
9090
rustup target add x86_64-pc-windows-msvc
@@ -124,8 +124,8 @@ jobs:
124124
set -euxo pipefail
125125
126126
# Install the appropriate version of Rust.
127-
rustup toolchain install 1.85.0 # [ref:rust_1.85.0]
128-
rustup default 1.85.0 # [ref:rust_1.85.0]
127+
rustup toolchain install 1.87.0 # [ref:rust_1.87.0]
128+
rustup default 1.87.0 # [ref:rust_1.87.0]
129129
130130
# Add the targets.
131131
rustup target add x86_64-apple-darwin
@@ -200,8 +200,8 @@ jobs:
200200
set -euxo pipefail
201201
202202
# Install the appropriate version of Rust.
203-
rustup toolchain install 1.85.0 # [ref:rust_1.85.0]
204-
rustup default 1.85.0 # [ref:rust_1.85.0]
203+
rustup toolchain install 1.87.0 # [ref:rust_1.87.0]
204+
rustup default 1.87.0 # [ref:rust_1.87.0]
205205
206206
# Fetch the program version.
207207
VERSION="$(cargo pkgid | cut -d# -f2 | cut -d: -f2)"

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
name = "gram"
33
version = "0.0.4"
44
authors = ["Stephan Boyer <stephan@stephanboyer.com>"]
5-
edition = "2021"
5+
edition = "2024"
66
description = "A programming language for distributed systems."
77
license = "MIT"
88
documentation = "https://github.com/gramlang/gram"

src/error.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use {
22
crate::format::CodeStr,
3-
colored::{control::SHOULD_COLORIZE, Colorize},
3+
colored::{Colorize, control::SHOULD_COLORIZE},
44
pad::{Alignment, PadStr},
55
std::{
66
cmp::{max, min},
@@ -210,7 +210,7 @@ mod tests {
210210
use {
211211
crate::{
212212
assert_same,
213-
error::{listing, throw, Error, SourceRange},
213+
error::{Error, SourceRange, listing, throw},
214214
},
215215
std::{path::Path, rc::Rc},
216216
};

src/evaluator.rs

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
6262
source_range: None,
6363
variant: Application(Rc::new(stepped_applicand), argument.clone()),
6464
});
65-
};
65+
}
6666

6767
// Ensure the applicand is a value.
6868
if !is_value(applicand) {
@@ -75,7 +75,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
7575
source_range: None,
7676
variant: Application(applicand.clone(), Rc::new(stepped_argument)),
7777
});
78-
};
78+
}
7979

8080
// Ensure the argument is a value.
8181
if !is_value(argument) {
@@ -114,7 +114,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
114114
body.clone(),
115115
),
116116
});
117-
};
117+
}
118118

119119
// Ensure the definition is a value.
120120
if !is_value(definition) {
@@ -188,7 +188,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
188188
source_range: None,
189189
variant: Negation(Rc::new(stepped_subterm)),
190190
});
191-
};
191+
}
192192

193193
// Ensure the subterm is a value.
194194
if !is_value(subterm) {
@@ -214,7 +214,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
214214
source_range: None,
215215
variant: Sum(Rc::new(stepped_term1), term2.clone()),
216216
});
217-
};
217+
}
218218

219219
// Ensure the left subterm is a value.
220220
if !is_value(term1) {
@@ -227,7 +227,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
227227
source_range: None,
228228
variant: Sum(term1.clone(), Rc::new(stepped_term2)),
229229
});
230-
};
230+
}
231231

232232
// Ensure the right subterm is a value.
233233
if !is_value(term2) {
@@ -255,7 +255,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
255255
source_range: None,
256256
variant: Difference(Rc::new(stepped_term1), term2.clone()),
257257
});
258-
};
258+
}
259259

260260
// Ensure the left subterm is a value.
261261
if !is_value(term1) {
@@ -268,7 +268,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
268268
source_range: None,
269269
variant: Difference(term1.clone(), Rc::new(stepped_term2)),
270270
});
271-
};
271+
}
272272

273273
// Ensure the right subterm is a value.
274274
if !is_value(term2) {
@@ -296,7 +296,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
296296
source_range: None,
297297
variant: Product(Rc::new(stepped_term1), term2.clone()),
298298
});
299-
};
299+
}
300300

301301
// Ensure the left subterm is a value.
302302
if !is_value(term1) {
@@ -309,7 +309,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
309309
source_range: None,
310310
variant: Product(term1.clone(), Rc::new(stepped_term2)),
311311
});
312-
};
312+
}
313313

314314
// Ensure the right subterm is a value.
315315
if !is_value(term2) {
@@ -337,7 +337,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
337337
source_range: None,
338338
variant: Quotient(Rc::new(stepped_term1), term2.clone()),
339339
});
340-
};
340+
}
341341

342342
// Ensure the left subterm is a value.
343343
if !is_value(term1) {
@@ -350,7 +350,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
350350
source_range: None,
351351
variant: Quotient(term1.clone(), Rc::new(stepped_term2)),
352352
});
353-
};
353+
}
354354

355355
// Ensure the right subterm is a value.
356356
if !is_value(term2) {
@@ -378,7 +378,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
378378
source_range: None,
379379
variant: LessThan(Rc::new(stepped_term1), term2.clone()),
380380
});
381-
};
381+
}
382382

383383
// Ensure the left subterm is a value.
384384
if !is_value(term1) {
@@ -391,7 +391,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
391391
source_range: None,
392392
variant: LessThan(term1.clone(), Rc::new(stepped_term2)),
393393
});
394-
};
394+
}
395395

396396
// Ensure the right subterm is a value.
397397
if !is_value(term2) {
@@ -419,7 +419,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
419419
source_range: None,
420420
variant: LessThanOrEqualTo(Rc::new(stepped_term1), term2.clone()),
421421
});
422-
};
422+
}
423423

424424
// Ensure the left subterm is a value.
425425
if !is_value(term1) {
@@ -432,7 +432,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
432432
source_range: None,
433433
variant: LessThanOrEqualTo(term1.clone(), Rc::new(stepped_term2)),
434434
});
435-
};
435+
}
436436

437437
// Ensure the right subterm is a value.
438438
if !is_value(term2) {
@@ -460,7 +460,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
460460
source_range: None,
461461
variant: EqualTo(Rc::new(stepped_term1), term2.clone()),
462462
});
463-
};
463+
}
464464

465465
// Ensure the left subterm is a value.
466466
if !is_value(term1) {
@@ -473,7 +473,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
473473
source_range: None,
474474
variant: EqualTo(term1.clone(), Rc::new(stepped_term2)),
475475
});
476-
};
476+
}
477477

478478
// Ensure the right subterm is a value.
479479
if !is_value(term2) {
@@ -501,7 +501,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
501501
source_range: None,
502502
variant: GreaterThan(Rc::new(stepped_term1), term2.clone()),
503503
});
504-
};
504+
}
505505

506506
// Ensure the left subterm is a value.
507507
if !is_value(term1) {
@@ -514,7 +514,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
514514
source_range: None,
515515
variant: GreaterThan(term1.clone(), Rc::new(stepped_term2)),
516516
});
517-
};
517+
}
518518

519519
// Ensure the right subterm is a value.
520520
if !is_value(term2) {
@@ -542,7 +542,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
542542
source_range: None,
543543
variant: GreaterThanOrEqualTo(Rc::new(stepped_term1), term2.clone()),
544544
});
545-
};
545+
}
546546

547547
// Ensure the left subterm is a value.
548548
if !is_value(term1) {
@@ -555,7 +555,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
555555
source_range: None,
556556
variant: GreaterThanOrEqualTo(term1.clone(), Rc::new(stepped_term2)),
557557
});
558-
};
558+
}
559559

560560
// Ensure the right subterm is a value.
561561
if !is_value(term2) {
@@ -587,7 +587,7 @@ pub fn step<'a>(term: &Term<'a>) -> Option<Term<'a>> {
587587
else_branch.clone(),
588588
),
589589
});
590-
};
590+
}
591591

592592
// Ensure the condition is a value.
593593
if !is_value(condition) {

src/format.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use colored::{control::SHOULD_COLORIZE, ColoredString, Colorize};
1+
use colored::{ColoredString, Colorize, control::SHOULD_COLORIZE};
22

33
// This trait has a function for formatting "code-like" text, such as a file path. The reason it's
44
// implemented as a trait and not just a function is so we can use it with method syntax, as in

src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ mod unifier;
1414

1515
use {
1616
crate::{
17-
error::{throw, Error},
17+
error::{Error, throw},
1818
evaluator::evaluate,
1919
format::CodeStr,
2020
parser::parse,
@@ -119,7 +119,7 @@ fn run(source_path: &Path, check_only: bool) -> Result<(), Error> {
119119
// [ref:overline_u203e].
120120
if acc
121121
.split('\n')
122-
.last()
122+
.next_back()
123123
.unwrap()
124124
.chars()
125125
.all(|c| c == ' ' || c == '\u{203e}')

src/parser.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use {
22
crate::{
3-
error::{listing, throw, Error, SourceRange},
3+
error::{Error, SourceRange, listing, throw},
44
evaluator::is_value,
55
format::CodeStr,
66
term,
@@ -585,7 +585,7 @@ fn collect_error_factories<'a>(error_factories: &mut Vec<ErrorFactory<'a>>, term
585585
collect_error_factories(error_factories, then_branch);
586586
collect_error_factories(error_factories, else_branch);
587587
}
588-
};
588+
}
589589

590590
for error_factory in &term.errors {
591591
error_factories.push(error_factory.clone());

src/term.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,13 +272,14 @@ mod tests {
272272
use {
273273
crate::{
274274
term::{
275-
free_variables, Term,
275+
Term,
276276
Variant::{
277277
Application, Boolean, Difference, EqualTo, False, GreaterThan,
278278
GreaterThanOrEqualTo, If, Integer, IntegerLiteral, Lambda, LessThan,
279279
LessThanOrEqualTo, Let, Negation, Pi, Product, Quotient, Sum, True, Type,
280280
Unifier, Variable,
281281
},
282+
free_variables,
282283
},
283284
token::{BOOLEAN_KEYWORD, FALSE_KEYWORD, INTEGER_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD},
284285
},

src/token.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,8 @@ mod tests {
112112
crate::{
113113
error::SourceRange,
114114
token::{
115-
TerminatorType, Token, Variant, BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD,
116-
IF_KEYWORD, INTEGER_KEYWORD, THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD,
115+
BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD, IF_KEYWORD, INTEGER_KEYWORD,
116+
THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD, TerminatorType, Token, Variant,
117117
},
118118
},
119119
num_bigint::ToBigInt,

src/tokenizer.rs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use {
22
crate::{
3-
error::{listing, throw, Error, SourceRange},
3+
error::{Error, SourceRange, listing, throw},
44
format::CodeStr,
55
token::{
6-
TerminatorType, Token, Variant, BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD,
7-
IF_KEYWORD, INTEGER_KEYWORD, THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD,
6+
BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD, IF_KEYWORD, INTEGER_KEYWORD,
7+
THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD, TerminatorType, Token, Variant,
88
},
99
},
1010
num_bigint::BigInt,
@@ -333,13 +333,13 @@ pub fn tokenize<'a>(
333333
source_range: SourceRange { start: i, end },
334334
variant: Variant::IntegerLiteral(
335335
// This `unwrap` is safe due to the specification of integer literals.
336-
BigInt::parse_bytes(source_contents[i..end].as_bytes(), 10).unwrap(),
336+
BigInt::parse_bytes(&source_contents.as_bytes()[i..end], 10).unwrap(),
337337
),
338338
});
339339
}
340340

341341
// Skip whitespace. Note that line breaks are handled above [ref:line_break].
342-
_ if c.is_whitespace() => continue,
342+
_ if c.is_whitespace() => {}
343343

344344
// Skip comments. Don't skip the terminating line break, if it exists [ref:line_break].
345345
'#' => {
@@ -443,8 +443,8 @@ mod tests {
443443
assert_fails, assert_same,
444444
error::SourceRange,
445445
token::{
446-
TerminatorType, Token, Variant, BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD,
447-
IF_KEYWORD, INTEGER_KEYWORD, THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD,
446+
BOOLEAN_KEYWORD, ELSE_KEYWORD, FALSE_KEYWORD, IF_KEYWORD, INTEGER_KEYWORD,
447+
THEN_KEYWORD, TRUE_KEYWORD, TYPE_KEYWORD, TerminatorType, Token, Variant,
448448
},
449449
tokenizer::tokenize,
450450
},

0 commit comments

Comments
 (0)