Skip to content

Commit

Permalink
Merge pull request #34006 from geoand/#33957-2
Browse files Browse the repository at this point in the history
Warn extension authors if build step and recorder are in the same package
  • Loading branch information
geoand authored Jun 20, 2023
2 parents 7807020 + bfc0904 commit e6f35ed
Showing 1 changed file with 10 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@
import javax.lang.model.element.ElementKind;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.Modifier;
import javax.lang.model.element.Name;
import javax.lang.model.element.PackageElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
Expand Down Expand Up @@ -375,6 +376,11 @@ private void validateRecordBuildSteps(TypeElement clazz) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR,
"Class '" + parameterTypeElement.getQualifiedName()
+ "' is annotated with @Recorder and therefore cannot be made as a final class.");
} else if (getPackageName(clazz).equals(getPackageName(parameterTypeElement))) {
processingEnv.getMessager().printMessage(Diagnostic.Kind.WARNING,
"Build step class '" + clazz.getQualifiedName()
+ "' and recorder '" + parameterTypeElement
+ "' share the same package. This is highly discouraged as it can lead to unexpected results.");
}
hasRecorder = true;
break;
Expand All @@ -390,6 +396,10 @@ private void validateRecordBuildSteps(TypeElement clazz) {
}
}

private Name getPackageName(TypeElement clazz) {
return processingEnv.getElementUtils().getPackageOf(clazz).getQualifiedName();
}

private StringBuilder getRelativeBinaryName(TypeElement te, StringBuilder b) {
final Element enclosing = te.getEnclosingElement();
if (enclosing instanceof TypeElement) {
Expand Down

0 comments on commit e6f35ed

Please sign in to comment.