Skip to content

Commit 3d8b2dc

Browse files
committed
Fix Duplicate Visitor Passes (Claude)
Changed from `pkg.accept()` to `pkg.getTypes().forEach()` in `RefinementProcessor` to prevent types in nested packages from being verified multiple times when `ProcessingManager` traverses the package hierarchy.
1 parent 999eb53 commit 3d8b2dc

File tree

2 files changed

+13
-5
lines changed

2 files changed

+13
-5
lines changed

liquidjava-verifier/src/main/java/liquidjava/api/CommandLineLauncher.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
public class CommandLineLauncher {
1717

1818
private static final Diagnostics diagnostics = Diagnostics.getInstance();
19-
19+
2020
public static void main(String[] args) {
2121
if (args.length == 0) {
2222
System.out.println("No input paths provided");

liquidjava-verifier/src/main/java/liquidjava/processor/RefinementProcessor.java

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,10 +33,18 @@ public void process(CtPackage pkg) {
3333
c.reinitializeAllContext();
3434

3535
try {
36-
pkg.accept(new FieldGhostsGeneration(c, factory)); // generate annotations for field ghosts
37-
pkg.accept(new ExternalRefinementTypeChecker(c, factory));
38-
pkg.accept(new MethodsFirstChecker(c, factory)); // double passing idea (instead of headers)
39-
pkg.accept(new RefinementTypeChecker(c, factory));
36+
// process types in this package only, not sub-packages
37+
// first pass: gather refinements
38+
pkg.getTypes().forEach(type -> {
39+
type.accept(new FieldGhostsGeneration(c, factory)); // generate annotations for field ghosts
40+
type.accept(new ExternalRefinementTypeChecker(c, factory)); // process external refinements
41+
type.accept(new MethodsFirstChecker(c, factory)); // double passing idea (instead of headers)
42+
});
43+
44+
// second pass: check refinements
45+
pkg.getTypes().forEach(type -> {
46+
type.accept(new RefinementTypeChecker(c, factory));
47+
});
4048
} catch (LJError e) {
4149
diagnostics.add(e);
4250
}

0 commit comments

Comments
 (0)