charon_lib/transform/simplify_output/
remove_adt_clauses.rs1use crate::ast::*;
2use crate::transform::{TransformCtx, ctx::TransformPass};
3
4#[derive(Visitor)]
5struct RemoveAdtClausesVisitor;
6
7impl VisitAstMut for RemoveAdtClausesVisitor {
8 fn enter_type_decl(&mut self, decl: &mut TypeDecl) {
9 decl.generics.trait_clauses.clear();
10 decl.generics.trait_type_constraints.clear();
11 }
12
13 fn enter_type_decl_ref(&mut self, tref: &mut TypeDeclRef) {
14 if matches!(tref.id, TypeId::Adt(_)) {
15 tref.generics.trait_refs.clear();
16 }
17 }
18}
19
20pub struct Transform;
21impl TransformPass for Transform {
22 fn transform_ctx(&self, ctx: &mut TransformCtx) {
23 if !ctx.options.remove_adt_clauses {
24 return;
25 }
26 let _ = ctx.translated.drive_mut(&mut RemoveAdtClausesVisitor);
27 }
28}