package org.overture.codegen.vdm2jml.util; import java.util.Collections; import java.util.Comparator; import org.overture.ast.util.ClonableString; import org.overture.codegen.ir.PIR; import org.overture.codegen.ir.analysis.AnalysisException; import org.overture.codegen.ir.analysis.DepthFirstAnalysisAdaptor; import org.overture.codegen.ir.declarations.ADefaultClassDeclIR; public class AnnotationSorter extends DepthFirstAnalysisAdaptor { private Comparator<ClonableString> comparator; public AnnotationSorter() { super(); this.comparator = new JmlAnnotationComparator(); } @Override public void defaultInPIR(PIR node) throws AnalysisException { if (!node.getMetaData().isEmpty()) { Collections.sort(node.getMetaData(), comparator); } if (node instanceof ADefaultClassDeclIR) { ADefaultClassDeclIR clazz = (ADefaultClassDeclIR) node; if (!clazz.getGlobalMetaData().isEmpty()) { Collections.sort(clazz.getGlobalMetaData(), comparator); } } } }