Skip to main content

Module impls

Module impls 

Source
Expand description

ASTRegApply implementations for basic mutations

These implementations enable registry-based execution for mutations defined in ryo-mutations.

§Implementation Status

MutationV2 StatusNotes
AddField/RemoveFieldDoneV1/V2 equivalent
AddDerive/RemoveDeriveDoneV1/V2 equivalent
AddVariant/RemoveVariantDoneV1/V2 equivalent
AddMod/RemoveModDoneV1/V2 equivalent
AddItem/RemoveItemDoneV2 function API
AddMethod/RemoveMethodDoneV2 function API
CreateModDoneV2 function API
RenameDoneV1/V2 equivalent
ChangeVisibilityDoneV1/V2 equivalent
AddMatchArm/RemoveMatchArmDoneV2-only (no V1 impl)
AddStructLiteralField/…DoneV1/V2 equivalent
OrganizeImportsDoneV2 via module_items
AssignOpDoneIdiom: a = a + b → a += b
BoolSimplifyDoneIdiom: x == true → x
ComparisonToMethodDoneIdiom: s == “” → s.is_empty()
CollapsibleIfDoneIdiom: nested if → if a && b
RedundantClosureDoneIdiom: |x| f(x) → f
FilterNextDoneIdiom: .filter().next() → .find()
MapUnwrapOrDoneIdiom: .map().unwrap_or() → .map_or()
CloneOnCopyDoneIdiom: x.clone() → x (Copy types)
LoopToIteratorDoneIdiom: for loop → iterator chain
UnwrapToQuestionDoneIdiom: .unwrap() → ?
ManualMapDoneIdiom: match Some → .map()
MatchToIfLetDoneIdiom: match → if let
IntroduceVariableDoneRecursive expr replacement
MergeImplBlocksN/ARegistryGenerator auto-merges
ExtractTrait/InlineTraitDoneStruct inherent impl ↔ trait
ReplaceExprDoneRecursive expr replacement
RemoveStatementDonePattern-based stmt removal
InsertStatementDonePosition-based stmt insertion
ReplaceStatementDoneStmt-to-stmt replacement
Duplicate*DoneVia AddPureItemsMutation
AddSpecN/ABlueprint composition
MoveItemN/ABlueprint composition
PluginTransformN/AWASM runtime, out of scope

§Quality Policy

See [super::ast_reg_apply] for the V2 implementation quality policy.

Key points:

  • Each implementation must work naturally with ASTRegistry
  • Do NOT create hacky workarounds to make tests pass
  • If V2 cannot handle cleanly, evaluate API extensions first

Re-exports§

pub use create_mod::create_mod_v2;
pub use item::add_item_v2;
pub use item::remove_item_v2;

Modules§

create_mod
ASTRegApply implementation for CreateModMutation
item
ASTRegApply implementations for AddItemMutation, AddPureItemsMutation, RemoveItemMutation, and MoveItemMutation
method
ASTRegApply implementations for AddMethodMutation and RemoveMethodMutation