package com.sleekbyte.tailor.listeners;
import com.sleekbyte.tailor.antlr.SwiftBaseListener;
import com.sleekbyte.tailor.antlr.SwiftParser;
import com.sleekbyte.tailor.common.Location;
import com.sleekbyte.tailor.common.Messages;
import com.sleekbyte.tailor.common.Rules;
import com.sleekbyte.tailor.output.Printer;
import java.util.HashSet;
import java.util.Set;
/**
* Parse tree listener for multiple import style check.
*/
public class MultipleImportListener extends SwiftBaseListener {
private Set<Integer> importLineNumbers = new HashSet<>();
private Printer printer;
public MultipleImportListener(Printer printer) {
this.printer = printer;
}
@Override
public void enterImportDeclaration(SwiftParser.ImportDeclarationContext ctx) {
verifyMultipleImports(ctx);
}
private void verifyMultipleImports(SwiftParser.ImportDeclarationContext ctx) {
int lineNum = ctx.getStart().getLine();
if (importLineNumbers.contains(lineNum)) {
Location location = new Location(lineNum);
this.printer.warn(Rules.MULTIPLE_IMPORTS, Messages.IMPORTS + Messages.MULTIPLE_IMPORTS, location);
} else {
importLineNumbers.add(lineNum);
}
}
}