package coreVisitors; import java.util.ArrayList; import java.util.Collections; import java.util.HashSet; import java.util.List; import ast.ExpCore; import ast.ExpCore.*; import ast.ExpCore.ClassB.*; public class CheckNoVarDeclaredTwice{ public static boolean of(ClassB e){ of(e,Collections.emptyList()); return true; } public static void of(ExpCore e,List<String>names){ Local cdv=new Local(); cdv.xs.addAll(names); cdv.xs.add("this"); cdv.xsRes.addAll(cdv.xs); e.accept(cdv); } private static class Local extends HB{ Local() { super(false); } public ExpCore visit(ClassB s) { for(Member m:s.getMs()){ m.match( nc->{CheckNoVarDeclaredTwice.of(nc.getInner(),Collections.emptyList());return null;}, mi->{CheckNoVarDeclaredTwice.of(mi.getInner(),mi.getS().getNames());;return null;}, mt->{if(mt.get_inner().isPresent()){CheckNoVarDeclaredTwice.of(mt.getInner(),mt.getMs().getNames());};return null;} ); } return s; } } }