/// transferring ownership to the caller. The first argument is the number of
/// consecutive elements pointed to by the second argument. The third argument
/// is an opaque pointer forwarded to the callback by the caller.
-typedef void (*MlirTypesCallback)(intptr_t, MlirType *, void *);
+using MlirTypesCallback = void (*)(intptr_t, MlirType *, void *);
/// Infers the return types of the operation identified by its canonical given
/// the arguments that will be supplied to its generic builder. Calls `callback`
//===----------------------------------------------------------------------===//
// Runtime implementation of `async.token` data type.
-typedef struct AsyncToken AsyncToken;
+using AsyncToken = struct AsyncToken;
// Runtime implementation of `async.group` data type.
-typedef struct AsyncGroup AsyncGroup;
+using AsyncGroup = struct AsyncGroup;
// Runtime implementation of `async.value` data type.
-typedef struct AsyncValue AsyncValue;
+using AsyncValue = struct AsyncValue;
// Async value payload stored in a memory owned by the async.value.
using ValueStorage = void *;