Hi Thomas! Thanks for testing that commit. I think a partial revert is not necessary, as I'm currently working on our milestone to make all Rust code compile with a Rust 1.49 toolchain.
I think pushing a partial revert upstream would just create some confusion when the correct version of the code which will fully compile with Rust 1.49 will be on our dev repo in a few days or weeks. I'm hoping to upstream it on Monday or next Monday if I cannot finish it in time. I feel like holding on on this for a few days would make the process easier? What do you think? Best, Arthur On Sat, 22 Mar 2025 at 15:43, Thomas Schwinge <tschwi...@baylibre.com> wrote: > > Hi! > > On 2025-03-17T16:33:34+0100, arthur.co...@embecosm.com wrote: > > From: Kushal Pal <kushalpal...@gmail.com> > > > > libgrust/ChangeLog: > > > > * libformat_parser/Cargo.toml: > > Used crate-type instead of depricated crate_type. > > * libformat_parser/generic_format_parser/src/lib.rs: > > Remove dead code. > > * libformat_parser/src/lib.rs: Likewise. > > > > Signed-off-by: Kushal Pal <kushalpal...@gmail.com> > > This isn't "dead code" on a Debian "bookworm" system where I'm testing > with: > > $ rustc --version > rustc 1.63.0 > > With this commit in place, I get: > > [...] > Making all in libformat_parser > make[3]: Entering directory '[...]/build-gcc/libgrust/libformat_parser' > cargo \ > --config [...]/source-gcc/libgrust/libformat_parser/.cargo/config \ > build \ > --offline \ > --target-dir . \ > --manifest-path [...]/source-gcc/libgrust/libformat_parser/Cargo.toml > \ > # FIXME: Not always '--release', right? > Compiling generic_format_parser v0.1.0 > ([...]/source-gcc/libgrust/libformat_parser/generic_format_parser) > error[E0658]: use of unstable library feature 'is_some_with' > --> generic_format_parser/src/lib.rs:615:34 > | > 615 | ... .is_some_and(is_id_start) > | ^^^^^^^^^^^ > | > = note: see issue #93050 > <https://github.com/rust-lang/rust/issues/93050> for more information > > error[E0631]: type mismatch in function arguments > --> generic_format_parser/src/lib.rs:615:46 > | > 17 | fn is_id_start(c: char) -> bool { > | ------------------------------- found signature of `fn(char) -> _` > ... > 615 | .is_some_and(is_id_start) > | ----------- ^^^^^^^^^^^ expected > signature of `for<'r> fn(&'r char) -> _` > | | > | required by a bound introduced by > this call > | > note: required by a bound in `Option::<T>::is_some_and` > > Some errors have detailed explanations: E0631, E0658. > For more information about an error, try `rustc --explain E0631`. > error: could not compile `generic_format_parser` due to 2 previous errors > make[3]: *** [Makefile:431: debug/liblibformat_parser.a] Error 101 > make[3]: Target 'all' not remade because of errors. > make[3]: Leaving directory '[...]/build-gcc/libgrust/libformat_parser' > [...] > > With this commit reverted, the build again succeeds, with good test > results. May I, therefore, push a (partial, I suppose?) 'git revert' of > this commit? > > > Grüße > Thomas > > > > --- > > libgrust/libformat_parser/Cargo.toml | 2 +- > > .../generic_format_parser/src/lib.rs | 16 ---------------- > > libgrust/libformat_parser/src/lib.rs | 14 -------------- > > 3 files changed, 1 insertion(+), 31 deletions(-) > > > > diff --git a/libgrust/libformat_parser/Cargo.toml > > b/libgrust/libformat_parser/Cargo.toml > > index 3c214915d31..39c017d249b 100644 > > --- a/libgrust/libformat_parser/Cargo.toml > > +++ b/libgrust/libformat_parser/Cargo.toml > > @@ -14,7 +14,7 @@ libc = "0.2" > > generic_format_parser = { path = "generic_format_parser" } > > > > [lib] > > -crate_type = ["staticlib", "rlib"] > > +crate-type = ["staticlib", "rlib"] > > > > [[bin]] > > name = "format_parser_test" > > diff --git a/libgrust/libformat_parser/generic_format_parser/src/lib.rs > > b/libgrust/libformat_parser/generic_format_parser/src/lib.rs > > index e255bf16908..25f6b0ead17 100644 > > --- a/libgrust/libformat_parser/generic_format_parser/src/lib.rs > > +++ b/libgrust/libformat_parser/generic_format_parser/src/lib.rs > > @@ -22,22 +22,6 @@ fn is_id_continue(c: char) -> bool { > > unicode_xid::UnicodeXID::is_xid_continue(c) > > } > > > > -// Workaround for Ubuntu 18.04. The default Rust package is 1.65 (and > > unlikely to change I assume?), but the > > -// generic format parser library uses `is_some_and` which was introduced > > in 1.70. So this is a reimplementation, > > -// directly taken from the standard library sources > > -trait IsSomeAnd<T> { > > - fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool; > > -} > > - > > -impl<T> IsSomeAnd<T> for Option<T> { > > - fn is_some_and(self, f: impl FnOnce(T) -> bool) -> bool { > > - match self { > > - None => false, > > - Some(x) => f(x), > > - } > > - } > > -} > > - > > // use rustc_lexer::unescape; > > pub use Alignment::*; > > pub use Count::*; > > diff --git a/libgrust/libformat_parser/src/lib.rs > > b/libgrust/libformat_parser/src/lib.rs > > index 0769577740f..f4670bf9b1f 100644 > > --- a/libgrust/libformat_parser/src/lib.rs > > +++ b/libgrust/libformat_parser/src/lib.rs > > @@ -5,16 +5,6 @@ > > > > use std::ffi::CStr; > > > > -trait StringLeakExt { > > - fn leak<'a>(self) -> &'a mut str; > > -} > > - > > -impl StringLeakExt for String { > > - fn leak<'a>(self) -> &'a mut str { > > - Box::leak(self.into_boxed_str()) > > - } > > -} > > - > > trait IntoFFI<T> { > > fn into_ffi(self) -> T; > > } > > @@ -98,10 +88,6 @@ mod ffi { > > // InlineAsm, > > // } > > > > - #[derive(Copy, Clone)] > > - #[repr(C)] > > - struct InnerOffset(usize); > > - > > /// A piece is a portion of the format string which represents the > > next part > > /// to emit. These are emitted as a stream by the `Parser` class. > > #[derive(Debug, Clone, PartialEq)] > > -- > > 2.45.2 -- Arthur Cohen <arthur.co...@embecosm.com> Toolchain Engineer Embecosm GmbH Geschäftsführer: Jeremy Bennett Niederlassung: Nürnberg Handelsregister: HR-B 36368 www.embecosm.de Fürther Str. 27 90429 Nürnberg Tel.: 091 - 128 707 040 Fax: 091 - 128 707 077