From: arthur.cohen@embecosm.com
To: gcc-patches@gcc.gnu.org
Cc: gcc-rust@gcc.gnu.org,
Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
Subject: [COMMITTED 051/101] gccrs: Split async and const function qualifiers
Date: Tue, 30 Jan 2024 13:07:07 +0100 [thread overview]
Message-ID: <20240130121026.807464-54-arthur.cohen@embecosm.com> (raw)
In-Reply-To: <20240130121026.807464-2-arthur.cohen@embecosm.com>
From: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
A function cannot be both async and const, however this should not be
handled in the parser but rather at a later stage in the compiler. This
commit change the AsyncConstStatus in the AST and the HIR to allows a
function to be both async and const.
gcc/rust/ChangeLog:
* ast/rust-ast-builder.cc (AstBuilder::fn_qualifiers): Change
constructor to match the new arguments.
* ast/rust-ast-collector.cc (TokenCollector::visit): Change behavior
to handle both const and async specifiers at the same time.
* ast/rust-ast.cc (FunctionQualifiers::as_string): Likewise.
* ast/rust-item.h (class FunctionQualifiers): Remove AsyncConstStatus
and replace it with both Async and Const status. Also change the safety
arguments to use an enum instead of a boolean.
* hir/rust-ast-lower-base.cc (ASTLoweringBase::lower_qualifiers):
Update constructor call.
* hir/tree/rust-hir-item.h: Add Const and Async status, remove
AsyncConstStatus, update the constructor.
* hir/tree/rust-hir.cc (FunctionQualifiers::as_string): Update with
the new status.
* parse/rust-parse-impl.h (Parser::parse_function_qualifiers): Update
constructor call.
* util/rust-common.h (enum Mutability): Make an enum class.
(enum class): Add Async and Const enum class to avoid booleans.
(enum Unsafety): Change to an enum class.
Signed-off-by: Pierre-Emmanuel Patry <pierre-emmanuel.patry@embecosm.com>
---
gcc/rust/ast/rust-ast-builder.cc | 2 +-
gcc/rust/ast/rust-ast-collector.cc | 16 +++-------
gcc/rust/ast/rust-ast.cc | 21 ++++---------
gcc/rust/ast/rust-item.h | 22 ++++++++------
gcc/rust/hir/rust-ast-lower-base.cc | 3 +-
gcc/rust/hir/tree/rust-hir-item.h | 14 +++++----
gcc/rust/hir/tree/rust-hir.cc | 25 ++++------------
gcc/rust/parse/rust-parse-impl.h | 46 +++++++++++++++++------------
gcc/rust/util/rust-common.h | 16 ++++++++--
9 files changed, 80 insertions(+), 85 deletions(-)
diff --git a/gcc/rust/ast/rust-ast-builder.cc b/gcc/rust/ast/rust-ast-builder.cc
index e2d3eea6c58..fd6f519fa25 100644
--- a/gcc/rust/ast/rust-ast-builder.cc
+++ b/gcc/rust/ast/rust-ast-builder.cc
@@ -46,7 +46,7 @@ AstBuilder::tuple_idx (std::string receiver, int idx)
FunctionQualifiers
AstBuilder::fn_qualifiers ()
{
- return FunctionQualifiers (loc, AsyncConstStatus::NONE, false);
+ return FunctionQualifiers (loc, Async::No, Const::No, Unsafety::Normal);
}
PathExprSegment
diff --git a/gcc/rust/ast/rust-ast-collector.cc b/gcc/rust/ast/rust-ast-collector.cc
index 3e3a959578e..647724bec11 100644
--- a/gcc/rust/ast/rust-ast-collector.cc
+++ b/gcc/rust/ast/rust-ast-collector.cc
@@ -317,18 +317,10 @@ TokenCollector::visit (FunctionQualifiers &qualifiers)
// `const`? `async`? `unsafe`? (`extern` Abi?)?
// unsafe? (extern Abi?)?
- switch (qualifiers.get_const_status ())
- {
- case NONE:
- break;
- case CONST_FN:
- push (Rust::Token::make (CONST, qualifiers.get_locus ()));
- break;
- case ASYNC_FN:
- push (Rust::Token::make (ASYNC, qualifiers.get_locus ()));
- break;
- }
-
+ if (qualifiers.is_async ())
+ push (Rust::Token::make (ASYNC, qualifiers.get_locus ()));
+ if (qualifiers.is_const ())
+ push (Rust::Token::make (CONST, qualifiers.get_locus ()));
if (qualifiers.is_unsafe ())
push (Rust::Token::make (UNSAFE, qualifiers.get_locus ()));
if (qualifiers.is_extern ())
diff --git a/gcc/rust/ast/rust-ast.cc b/gcc/rust/ast/rust-ast.cc
index 17f82d67430..607f07955d4 100644
--- a/gcc/rust/ast/rust-ast.cc
+++ b/gcc/rust/ast/rust-ast.cc
@@ -2333,22 +2333,11 @@ FunctionQualifiers::as_string () const
{
std::string str;
- switch (const_status)
- {
- case NONE:
- // do nothing
- break;
- case CONST_FN:
- str += "const ";
- break;
- case ASYNC_FN:
- str += "async ";
- break;
- default:
- return "ERROR_MARK_STRING: async-const status failure";
- }
-
- if (has_unsafe)
+ if (is_async ())
+ str += "async ";
+ if (is_const ())
+ str += "const ";
+ if (is_unsafe ())
str += "unsafe ";
if (has_extern)
diff --git a/gcc/rust/ast/rust-item.h b/gcc/rust/ast/rust-item.h
index b34aca0d56c..9a83f3d5981 100644
--- a/gcc/rust/ast/rust-item.h
+++ b/gcc/rust/ast/rust-item.h
@@ -533,19 +533,20 @@ public:
// Qualifiers for function, i.e. const, unsafe, extern etc.
class FunctionQualifiers
{
- AsyncConstStatus const_status;
- bool has_unsafe;
+ Async async_status;
+ Const const_status;
+ Unsafety unsafe_status;
bool has_extern;
std::string extern_abi;
location_t locus;
public:
- FunctionQualifiers (location_t locus, AsyncConstStatus const_status,
- bool has_unsafe, bool has_extern = false,
+ FunctionQualifiers (location_t locus, Async async_status, Const const_status,
+ Unsafety unsafe_status, bool has_extern = false,
std::string extern_abi = std::string ())
- : const_status (const_status), has_unsafe (has_unsafe),
- has_extern (has_extern), extern_abi (std::move (extern_abi)),
- locus (locus)
+ : async_status (async_status), const_status (const_status),
+ unsafe_status (unsafe_status), has_extern (has_extern),
+ extern_abi (std::move (extern_abi)), locus (locus)
{
if (!this->extern_abi.empty ())
{
@@ -556,11 +557,14 @@ public:
std::string as_string () const;
- AsyncConstStatus get_const_status () const { return const_status; }
- bool is_unsafe () const { return has_unsafe; }
+ bool is_unsafe () const { return unsafe_status == Unsafety::Unsafe; }
bool is_extern () const { return has_extern; }
+ bool is_const () const { return const_status == Const::Yes; }
+ bool is_async () const { return async_status == Async::Yes; }
std::string get_extern_abi () const { return extern_abi; }
bool has_abi () const { return !extern_abi.empty (); }
+ Const get_const_status () const { return const_status; }
+ Async get_async_status () const { return async_status; }
location_t get_locus () const { return locus; }
};
diff --git a/gcc/rust/hir/rust-ast-lower-base.cc b/gcc/rust/hir/rust-ast-lower-base.cc
index f5eed256a5e..f8438557707 100644
--- a/gcc/rust/hir/rust-ast-lower-base.cc
+++ b/gcc/rust/hir/rust-ast-lower-base.cc
@@ -721,7 +721,8 @@ ASTLoweringBase::lower_qualifiers (const AST::FunctionQualifiers &qualifiers)
"invalid ABI: found %qs", extern_abi.c_str ());
}
- return HIR::FunctionQualifiers (qualifiers.get_const_status (), unsafety,
+ return HIR::FunctionQualifiers (qualifiers.get_async_status (),
+ qualifiers.get_const_status (), unsafety,
has_extern, abi);
}
diff --git a/gcc/rust/hir/tree/rust-hir-item.h b/gcc/rust/hir/tree/rust-hir-item.h
index 6cd41892e49..f72d8c8b050 100644
--- a/gcc/rust/hir/tree/rust-hir-item.h
+++ b/gcc/rust/hir/tree/rust-hir-item.h
@@ -481,24 +481,26 @@ public:
struct FunctionQualifiers
{
private:
- AsyncConstStatus const_status;
+ Async async_status;
+ Const const_status;
Unsafety unsafety;
bool has_extern;
ABI abi;
public:
- FunctionQualifiers (AsyncConstStatus const_status, Unsafety unsafety,
+ FunctionQualifiers (Async async_status, Const const_status, Unsafety unsafety,
bool has_extern, ABI abi)
- : const_status (const_status), unsafety (unsafety), has_extern (has_extern),
- abi (abi)
+ : async_status (async_status), const_status (const_status),
+ unsafety (unsafety), has_extern (has_extern), abi (abi)
{}
std::string as_string () const;
- AsyncConstStatus get_status () const { return const_status; }
+ Const get_const_status () const { return const_status; }
- bool is_const () const { return const_status == AsyncConstStatus::CONST_FN; }
+ bool is_const () const { return const_status == Const::Yes; }
bool is_unsafe () const { return unsafety == Unsafety::Unsafe; }
+ bool is_async () const { return async_status == Async::Yes; }
ABI get_abi () const { return abi; }
};
diff --git a/gcc/rust/hir/tree/rust-hir.cc b/gcc/rust/hir/tree/rust-hir.cc
index 66f626ba845..fb0a9c388ae 100644
--- a/gcc/rust/hir/tree/rust-hir.cc
+++ b/gcc/rust/hir/tree/rust-hir.cc
@@ -1947,25 +1947,12 @@ FunctionQualifiers::as_string () const
{
std::string str;
- switch (const_status)
- {
- case NONE:
- // do nothing
- break;
- case CONST_FN:
- str += "const ";
- break;
- case ASYNC_FN:
- str += "async ";
- break;
- default:
- return "ERROR_MARK_STRING: async-const status failure";
- }
-
- if (unsafety == Unsafety::Unsafe)
- {
- str += "unsafe ";
- }
+ if (is_const ())
+ str += "const ";
+ if (is_async ())
+ str += "async ";
+ if (is_unsafe ())
+ str += "unsafe ";
if (has_extern)
{
diff --git a/gcc/rust/parse/rust-parse-impl.h b/gcc/rust/parse/rust-parse-impl.h
index a9af7dc3f38..a1ad4f11993 100644
--- a/gcc/rust/parse/rust-parse-impl.h
+++ b/gcc/rust/parse/rust-parse-impl.h
@@ -24,6 +24,7 @@
#include "rust-common.h"
#include "rust-item.h"
+#include "rust-common.h"
#include "rust-token.h"
#define INCLUDE_ALGORITHM
#include "rust-diagnostics.h"
@@ -2987,33 +2988,40 @@ template <typename ManagedTokenSource>
AST::FunctionQualifiers
Parser<ManagedTokenSource>::parse_function_qualifiers ()
{
- AsyncConstStatus const_status = NONE;
- bool has_unsafe = false;
+ Async async_status = Async::No;
+ Const const_status = Const::No;
+ Unsafety unsafe_status = Unsafety::Normal;
bool has_extern = false;
std::string abi;
+ const_TokenPtr t;
+ location_t locus;
// Check in order of const, unsafe, then extern
- const_TokenPtr t = lexer.peek_token ();
- location_t locus = t->get_locus ();
- switch (t->get_id ())
+ for (int i = 0; i < 2; i++)
{
- case CONST:
- lexer.skip_token ();
- const_status = CONST_FN;
- break;
- case ASYNC:
- lexer.skip_token ();
- const_status = ASYNC_FN;
- break;
- default:
- // const status is still none
- break;
+ t = lexer.peek_token ();
+ locus = t->get_locus ();
+
+ switch (t->get_id ())
+ {
+ case CONST:
+ lexer.skip_token ();
+ const_status = Const::Yes;
+ break;
+ case ASYNC:
+ lexer.skip_token ();
+ async_status = Async::Yes;
+ break;
+ default:
+ // const status is still none
+ break;
+ }
}
if (lexer.peek_token ()->get_id () == UNSAFE)
{
lexer.skip_token ();
- has_unsafe = true;
+ unsafe_status = Unsafety::Unsafe;
}
if (lexer.peek_token ()->get_id () == EXTERN_KW)
@@ -3030,8 +3038,8 @@ Parser<ManagedTokenSource>::parse_function_qualifiers ()
}
}
- return AST::FunctionQualifiers (locus, const_status, has_unsafe, has_extern,
- std::move (abi));
+ return AST::FunctionQualifiers (locus, async_status, const_status,
+ unsafe_status, has_extern, std::move (abi));
}
// Parses generic (lifetime or type) params inside angle brackets (optional).
diff --git a/gcc/rust/util/rust-common.h b/gcc/rust/util/rust-common.h
index fc8ba6e1e58..299ae71e909 100644
--- a/gcc/rust/util/rust-common.h
+++ b/gcc/rust/util/rust-common.h
@@ -25,18 +25,30 @@
namespace Rust {
-enum Mutability
+enum class Mutability
{
Imm,
Mut
};
-enum Unsafety
+enum class Unsafety
{
Unsafe,
Normal
};
+enum class Const
+{
+ Yes,
+ No,
+};
+
+enum class Async
+{
+ Yes,
+ No
+};
+
enum BoundPolarity
{
RegularBound,
--
2.42.1
next prev parent reply other threads:[~2024-01-30 12:11 UTC|newest]
Thread overview: 102+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-30 12:06 [PATCHSET] Update Rust frontend January 2024 arthur.cohen
2024-01-30 12:06 ` [COMMITTED 001/101] gccrs: Add visibility to trait item arthur.cohen
2024-01-30 12:06 ` [COMMITTED 002/101] gccrs: Add a test to highlight public trait type parsing arthur.cohen
2024-01-30 12:06 ` [COMMITTED 003/101] gccrs: Fix error emission for self pointers arthur.cohen
2024-01-30 12:06 ` [COMMITTED 004/101] gccrs: Report self parameter parsing error kind arthur.cohen
2024-01-30 12:06 ` [COMMITTED 005/101] gccrs: Add new test for parsing errors on self pointers arthur.cohen
2024-01-30 12:06 ` [COMMITTED 006/101] gccrs: ast: Change *Path nodes API arthur.cohen
2024-01-30 12:06 ` [COMMITTED 007/101] gccrs: rib: Add Namespace enum arthur.cohen
2024-01-30 12:06 ` [COMMITTED 008/101] gccrs: forever-stack: Fix basic get logic arthur.cohen
2024-01-30 12:06 ` [COMMITTED 009/101] gccrs: foreverstack: Specialize `get` for Namespace::Labels arthur.cohen
2024-01-30 12:06 ` [COMMITTED 010/101] gccrs: forever stack: Fix resolve_path signature arthur.cohen
2024-01-30 12:06 ` [COMMITTED 011/101] gccrs: forever stack: Improve resolve_path implementation arthur.cohen
2024-01-30 12:06 ` [COMMITTED 012/101] gccrs: foreverstack: Add `to_canonical_path` method arthur.cohen
2024-01-30 12:06 ` [COMMITTED 013/101] gccrs: foreverstack: Add `to_rib` method arthur.cohen
2024-01-30 12:06 ` [COMMITTED 014/101] gccrs: resolve: Format if properly arthur.cohen
2024-01-30 12:06 ` [COMMITTED 015/101] gccrs: forever stack: Remove development debug info arthur.cohen
2024-01-30 12:06 ` [COMMITTED 016/101] gccrs: Reject auto traits with generic parameters arthur.cohen
2024-01-30 12:06 ` [COMMITTED 017/101] gccrs: Add regression test for generic auto traits arthur.cohen
2024-01-30 12:06 ` [COMMITTED 018/101] gccrs: Reject auto traits with super trait arthur.cohen
2024-01-30 12:06 ` [COMMITTED 019/101] gccrs: Add a regression test for super trait on auto trait arthur.cohen
2024-01-30 12:06 ` [COMMITTED 020/101] gccrs: Add check for associated items on auto traits arthur.cohen
2024-01-30 12:06 ` [COMMITTED 021/101] gccrs: Emit an error on variadic non extern functions arthur.cohen
2024-01-30 12:06 ` [COMMITTED 022/101] gccrs: Add a test regular variadic functions errors arthur.cohen
2024-01-30 12:06 ` [COMMITTED 023/101] gccrs: Add ast validation check on union variant number arthur.cohen
2024-01-30 12:06 ` [COMMITTED 024/101] gccrs: Replace TOK suffix with KW arthur.cohen
2024-01-30 12:06 ` [COMMITTED 025/101] gccrs: Add edition separation for keywords arthur.cohen
2024-01-30 12:06 ` [COMMITTED 026/101] gccrs: Treat underscore as a keyword arthur.cohen
2024-01-30 12:06 ` [COMMITTED 027/101] gccrs: Add await keyword arthur.cohen
2024-01-30 12:06 ` [COMMITTED 028/101] gccrs: Replace some keyword raw values arthur.cohen
2024-01-30 12:06 ` [COMMITTED 029/101] gccrs: Add a list of weak keyword arthur.cohen
2024-01-30 12:06 ` [COMMITTED 030/101] gccrs: Replace some weak keyword raw value with constexpr arthur.cohen
2024-01-30 12:06 ` [COMMITTED 031/101] gccrs: Introduce a proper keyword list arthur.cohen
2024-01-30 12:06 ` [COMMITTED 032/101] gccrs: Added support to Parse ASYNC function arthur.cohen
2024-01-30 12:06 ` [COMMITTED 033/101] gccrs: ctx: Add Labels ForeverStack to the resolver arthur.cohen
2024-01-30 12:06 ` [COMMITTED 034/101] gccrs: nr2.0: Add base for late name resolution arthur.cohen
2024-01-30 12:06 ` [COMMITTED 035/101] gccrs: toplevel: Use DefaultResolver for Function arthur.cohen
2024-01-30 12:06 ` [COMMITTED 036/101] gccrs: nr2.0: Store mappings in NameResolutionContext arthur.cohen
2024-01-30 12:06 ` [COMMITTED 037/101] gccrs: late: Start setting up builtin types arthur.cohen
2024-01-30 12:06 ` [COMMITTED 038/101] gccrs: late: Start storing mappings properly in the resolver arthur.cohen
2024-01-30 12:06 ` [COMMITTED 039/101] gccrs: early: Resolve paths properly arthur.cohen
2024-01-30 12:06 ` [COMMITTED 040/101] gccrs: toplevel: Add comment about running the collector twice arthur.cohen
2024-01-30 12:06 ` [COMMITTED 041/101] gccrs: ast: Add NodeId to UseTree base class arthur.cohen
2024-01-30 12:06 ` [COMMITTED 042/101] gccrs: early: Move `use` declaration resolving to TopLevel arthur.cohen
2024-01-30 12:06 ` [COMMITTED 043/101] gccrs: toplevel: Resolve `use` declarations arthur.cohen
2024-01-30 12:07 ` [COMMITTED 044/101] gccrs: Create base class for TupleStructItems and TuplePatternItems arthur.cohen
2024-01-30 12:07 ` [COMMITTED 045/101] gccrs: Add unsafety member to modules arthur.cohen
2024-01-30 12:07 ` [COMMITTED 046/101] gccrs: Parse module safety arthur.cohen
2024-01-30 12:07 ` [COMMITTED 047/101] gccrs: Emit an error on unsafe modules arthur.cohen
2024-01-30 12:07 ` [COMMITTED 048/101] gccrs: Add a regression test for unsafe module validation arthur.cohen
2024-01-30 12:07 ` [COMMITTED 049/101] gccrs: Remove backend dependancy on resolution rib information arthur.cohen
2024-01-30 12:07 ` [COMMITTED 050/101] gccrs: Remove class AST::InherentImplItem arthur.cohen
2024-01-30 12:07 ` arthur.cohen [this message]
2024-01-30 12:07 ` [COMMITTED 052/101] gccrs: Allow const and async specifiers in functions arthur.cohen
2024-01-30 12:07 ` [COMMITTED 053/101] gccrs: Add async const function ast validation pass arthur.cohen
2024-01-30 12:07 ` [COMMITTED 054/101] gccrs: Add a regression test for async const functions arthur.cohen
2024-01-30 12:07 ` [COMMITTED 055/101] gccrs: Add AST validation check for const in trait arthur.cohen
2024-01-30 12:07 ` [COMMITTED 056/101] gccrs: Add regression test for const fn " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 057/101] gccrs: Make feature gate visitor inherit from default one arthur.cohen
2024-01-30 12:07 ` [COMMITTED 058/101] gccrs: Change the attribute checker visitor to " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 059/101] gccrs: Make early name resolver inherit from " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 060/101] gccrs: Add multiple regression test in name resolution arthur.cohen
2024-01-30 12:07 ` [COMMITTED 061/101] gccrs: Add execution test for name resolution 2.0 arthur.cohen
2024-01-30 12:07 ` [COMMITTED 062/101] gccrs: Make function bodies truly optional arthur.cohen
2024-01-30 12:07 ` [COMMITTED 063/101] gccrs: Add validation for functions without body arthur.cohen
2024-01-30 12:07 ` [COMMITTED 064/101] gccrs: Add a regression test for function body check arthur.cohen
2024-01-30 12:07 ` [COMMITTED 065/101] gccrs: Generate error for const trait functions arthur.cohen
2024-01-30 12:07 ` [COMMITTED 066/101] gccrs: Renamed `WIN64` to `WIN_64` arthur.cohen
2024-01-30 12:07 ` [COMMITTED 067/101] gccrs: Allow enabling lang_items and no_core features arthur.cohen
2024-01-30 12:07 ` [COMMITTED 068/101] gccrs: Make default resolver inherit from default visitor arthur.cohen
2024-01-30 12:07 ` [COMMITTED 069/101] gccrs: Make expand visitor " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 070/101] gccrs: Change cfg stripper to use " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 071/101] gccrs: refactor builtins initialization and attributes arthur.cohen
2024-01-30 12:07 ` [COMMITTED 072/101] gccrs: HIR: add missing getters arthur.cohen
2024-01-30 12:07 ` [COMMITTED 073/101] gccrs: TyTy: Fix missed nodiscard arthur.cohen
2024-01-30 12:07 ` [COMMITTED 074/101] gccrs: BIR: " arthur.cohen
2024-01-30 12:07 ` [COMMITTED 075/101] gccrs: TyTy: refactor to new API arthur.cohen
2024-01-30 12:07 ` [COMMITTED 076/101] gccrs: TyTy: Common interface for fucntion-like types arthur.cohen
2024-01-30 12:07 ` [COMMITTED 077/101] gccrs: TyTy: SubstitutionRef cast specialization arthur.cohen
2024-01-30 12:07 ` [COMMITTED 078/101] gccrs: BIR: Cleanup arthur.cohen
2024-01-30 12:07 ` [COMMITTED 079/101] gccrs: split rust-mangle.cc into two files arthur.cohen
2024-01-30 12:07 ` [COMMITTED 080/101] gccrs: Handle `async` qualifier inside trait arthur.cohen
2024-01-30 12:07 ` [COMMITTED 081/101] gccrs: Generate error for `async` trait fucntions arthur.cohen
2024-01-30 12:07 ` [COMMITTED 082/101] gccrs: ast: Fix lifetime type parsing arthur.cohen
2024-01-30 12:07 ` [COMMITTED 083/101] gccrs: ast: Unify explicitly and implicitly elided lifettimes arthur.cohen
2024-01-30 12:07 ` [COMMITTED 084/101] gccrs: ast: Full lifetime elision handling arthur.cohen
2024-01-30 12:07 ` [COMMITTED 085/101] gccrs: ast: Infer static lifetime for const and static items arthur.cohen
2024-01-30 12:07 ` [COMMITTED 086/101] gccrs: ast: Lower 'for' lifetimes arthur.cohen
2024-01-30 12:07 ` [COMMITTED 087/101] gccrs: TyTy: Refactor FnType deprecated API arthur.cohen
2024-01-30 12:07 ` [COMMITTED 088/101] gccrs: Handle newlines during string parsing while lexing arthur.cohen
2024-01-30 12:07 ` [COMMITTED 089/101] gccrs: Handle `async` functions in traits arthur.cohen
2024-01-30 12:07 ` [COMMITTED 090/101] gccrs: Fix inconsistent formatting arthur.cohen
2024-01-30 12:07 ` [COMMITTED 091/101] gccrs: Handle `async` keyword for regular implementations arthur.cohen
2024-01-30 12:07 ` [COMMITTED 092/101] gccrs: Add improved error when a field is redefined in a struct constructor arthur.cohen
2024-01-30 12:07 ` [COMMITTED 093/101] gccrs: Unify storage of associated items in SingleASTNode arthur.cohen
2024-01-30 12:07 ` [COMMITTED 094/101] gccrs: Added newline to get more readable lexdump arthur.cohen
2024-01-30 12:07 ` [COMMITTED 095/101] gccrs: Test: fix missing lifetime in a test arthur.cohen
2024-01-30 12:07 ` [COMMITTED 096/101] gccrs: AST: Fix for lifetime parsing arthur.cohen
2024-01-30 12:07 ` [COMMITTED 097/101] gccrs: AST: Fix for lifetime lowering arthur.cohen
2024-01-30 12:07 ` [COMMITTED 098/101] gccrs: Test: check implemented for lifetime handling arthur.cohen
2024-01-30 12:07 ` [COMMITTED 099/101] gccrs: Add improved error when no fields in initializer arthur.cohen
2024-01-30 12:07 ` [COMMITTED 100/101] gccrs: Remove TraitImplItem arthur.cohen
2024-01-30 12:07 ` [COMMITTED 101/101] gccrs: Fix output line ending patterns arthur.cohen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240130121026.807464-54-arthur.cohen@embecosm.com \
--to=arthur.cohen@embecosm.com \
--cc=gcc-patches@gcc.gnu.org \
--cc=gcc-rust@gcc.gnu.org \
--cc=pierre-emmanuel.patry@embecosm.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).