Hi!
On 2024-12-05T13:37:13+0100, Arthur Cohen wrote:
> On 12/4/24 13:35, Thomas Schwinge wrote:
>> On 2024-11-25T11:24:08+0100, Arthur Cohen wrote:
>>> [...] We had previously done something similar to
>>> adapt to Rust 1.72 when we originally reused the format_args parser:
>>>
>>> https://github.com/Rust-GCC/gccrs/pull/2964
(By the way: I'm confused why I didn't see that one/this existing
GCC/Rust commit, before attempting to fix this myself... Anyway -- at
least I did a little bit of Rust programming this way.) ;-)
Anyway:
> In that case, could you instead add the commit mentioned in the PR so we
> don't need to revert it or change it? But instead we'd just be
> upstreaming this commit slightly earlier. My thinking is we do the
> following:
>
> 1. Push commit 039624951f9 upstream, which lowers the required Rust
> version to 1.49
Pushed to trunk branch commit 67a164eb1da6dba9fb789ae768beebbaa3be37de
"Rust: libformat_parser: Lower minimum Rust version to 1.49", see
attached.
> 2. Send a PR to our github repo with that commit so we merge it in our
> dev repo as well
That's not actually necessary, I think? Because:
> 3. This way once we rebase our branch to send it upstream, this commit
> will just be skipped
This will happen "automatically"?
Grüße
Thomas
> I think the commit should apply on both our dev repo and our version of
> gccrs which is upstream.
>
> Feel free to take ownership of it - the changes are extremely similar,
> the only difference is the use of a trait extension for String::leak()
> instead of a dedicated leak_string() function.
>
> How do you feel about that? Would that be okay?
>
> Best,
>
> Arthur
>From 67a164eb1da6dba9fb789ae768beebbaa3be37de Mon Sep 17 00:00:00 2001
From: Arthur Cohen
Date: Tue, 23 Apr 2024 14:13:21 +0200
Subject: [PATCH] Rust: libformat_parser: Lower minimum Rust version to 1.49
libgrust/ChangeLog:
* libformat_parser/Cargo.toml: Change Rust edition from 2021 to 2018.
* libformat_parser/generic_format_parser/Cargo.toml: Likewise.
* libformat_parser/generic_format_parser/src/lib.rs: Remove usage of
then-unstable std features and language constructs.
* libformat_parser/src/lib.rs: Likewise, plus provide extension trait
for String::leak.
---
libgrust/libformat_parser/Cargo.toml | 2 +-
.../generic_format_parser/Cargo.toml | 2 +-
.../generic_format_parser/src/lib.rs | 41 ++-
libgrust/libformat_parser/src/lib.rs | 10 +
4 files changed, 42 insertions(+), 13 deletions(-)
diff --git a/libgrust/libformat_parser/Cargo.toml b/libgrust/libformat_parser/Cargo.toml
index 0fcfa3e89a4c..3c214915d31e 100644
--- a/libgrust/libformat_parser/Cargo.toml
+++ b/libgrust/libformat_parser/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "libformat_parser"
version = "0.1.0"
-edition = "2021"
+edition = "2018"
[workspace]
diff --git a/libgrust/libformat_parser/generic_format_parser/Cargo.toml b/libgrust/libformat_parser/generic_format_parser/Cargo.toml
index 34577038cbed..224ad6826ec8 100644
--- a/libgrust/libformat_parser/generic_format_parser/Cargo.toml
+++ b/libgrust/libformat_parser/generic_format_parser/Cargo.toml
@@ -1,7 +1,7 @@
[package]
name = "generic_format_parser"
version = "0.1.0"
-edition = "2021"
+edition = "2018"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
diff --git a/libgrust/libformat_parser/generic_format_parser/src/lib.rs b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
index 8062bf9e5cec..e255bf16908f 100644
--- a/libgrust/libformat_parser/generic_format_parser/src/lib.rs
+++ b/libgrust/libformat_parser/generic_format_parser/src/lib.rs
@@ -505,7 +505,7 @@ impl<'a> Parser<'a> {
}
pos = peek_pos;
-description = format!("expected `'}}'`, found `{maybe:?}`");
+description = format!("expected `'}}'`, found `{:?}`", maybe);
} else {
description = "expected `'}'` but string was terminated".to_owned();
// point at closing `"`
@@ -690,12 +690,16 @@ impl<'a> Parser<'a> {
// fill character
if let Some(&(idx, c)) = self.cur.peek() {
-if let Some((_, '>' | '<' | '^')) = self.cur.clone().nth(1) {
-spec.fill = Some(c);
-spec.fill_span = Some(self.span(idx, idx + 1));
-self.cur.next();
+match self.cur.clone().nth(1) {
+Some((_, '>')) | Some((_, '<')) | Some((_, '^')) => {
+spec.fill = Some(c);
+spec.fill_span = Some(self.span(idx, idx + 1));
+self.cur.next();
+}
+_ => {}
}
}
+
// Alignment
if self.consume('<') {
spec.align = AlignLeft;
@@ -908,7 +912,11 @@ impl<'a> Parser<'a> {
);
}
-found.then_some(cur)
+if found {
+Some(cur)
+