diff --git a/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/AnnotationProcessor.java b/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/AnnotationProcessor.java index 2781c055c8..fa623e64ee 100644 --- a/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/AnnotationProcessor.java +++ b/epilogue-processor/src/main/java/edu/wpi/first/epilogue/processor/AnnotationProcessor.java @@ -68,7 +68,9 @@ public class AnnotationProcessor extends AbstractProcessor { customLoggers.putAll(processCustomLoggers(roundEnv, customLogger)); }); + // Get all root types (classes and interfaces), excluding packages and modules roundEnv.getRootElements().stream() + .filter(e -> e instanceof TypeElement) .filter( e -> processingEnv diff --git a/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/AnnotationProcessorTest.java b/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/AnnotationProcessorTest.java index ec4e52d5f4..7a1bdd44a3 100644 --- a/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/AnnotationProcessorTest.java +++ b/epilogue-processor/src/test/java/edu/wpi/first/epilogue/processor/AnnotationProcessorTest.java @@ -1974,6 +1974,37 @@ class AnnotationProcessorTest { assertLoggerGenerates(source, expectedRootLogger); } + @Test + void doesNotBreakWithPackageInfo() { + String source = + """ + package example; + + import edu.wpi.first.epilogue.*; + + @Logged + class Example {} + """; + + String packageInfo = """ + package example; + """; + + Compilation compilation = + javac() + .withOptions(kJavaVersionOptions) + .withProcessors(new AnnotationProcessor()) + .compile( + JavaFileObjects.forSourceString("example.Example", source), + JavaFileObjects.forSourceString("example.package-info", packageInfo)); + + assertThat(compilation).succeeded(); + compilation.generatedSourceFiles().stream() + .filter(jfo -> jfo.getName().contains("Example")) + .findFirst() + .orElseThrow(() -> new IllegalStateException("Logger file was not generated!")); + } + private void assertCompilationError( String message, long lineNumber, long col, Diagnostic diagnostic) { assertAll(