From 18321e55515bf441ba2b0a5c5e67032c18c177a9 Mon Sep 17 00:00:00 2001 From: Sam Carlberg Date: Thu, 30 Jan 2025 15:34:51 -0500 Subject: [PATCH] [epilogue] Fix epilogue with package-info files (#7749) --- .../processor/AnnotationProcessor.java | 2 ++ .../processor/AnnotationProcessorTest.java | 31 +++++++++++++++++++ 2 files changed, 33 insertions(+) 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 2781c055c8c..fa623e64eec 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 boolean process(Set annotations, RoundEnvironment 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 ec4e52d5f4f..7a1bdd44a30 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 @@ public void update(EpilogueBackend backend, Example object) { 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(