sortedByPublicFirstThenSyntheticLast method
Sorts declarations with public visibility first and synthetic declarations last.
Returns:
- New List with ordering: public > private > synthetic
- Original order preserved among declarations with same characteristics
Example:
final fields = classDecl.getFields()
.sortedByPublicFirstThenSyntheticLast();
// [publicField1, publicField2, _privateField1, @syntheticField]
Sorting Logic:
1. Synthetic declarations always last
2. Among non-synthetic:
- Public -> -1 (first)
- Private -> 1 (after public)
- Equal -> 0 (original order)
Implementation
List<T> sortedByPublicFirstThenSyntheticLast() {
return toList()
..sort((a, b) {
// Step 1: Synthetic comes last
final syntheticA = a.getIsSynthetic();
final syntheticB = b.getIsSynthetic();
if (syntheticA != syntheticB) {
return syntheticA ? 1 : -1;
}
// Step 2: Public comes before private
final publicA = a.getIsPublic();
final publicB = b.getIsPublic();
if (publicA == publicB) return 0;
return publicA ? -1 : 1;
});
}