Skip to content

Commit 59232b0

Browse files
authored
more descriptive field inject error message (#885)
now will clearly state when inject fields/methods have incorrect modifiers
1 parent e52e26d commit 59232b0

File tree

1 file changed

+8
-1
lines changed

1 file changed

+8
-1
lines changed

inject-generator/src/main/java/io/avaje/inject/generator/TypeExtendsInjection.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,12 @@ List<AspectPair> readAspects(Element element) {
7979

8080
private void readField(Element element) {
8181
if (InjectPrism.isPresent(element) || AssistedPrism.isPresent(element)) {
82-
injectFields.add(new FieldReader(element));
82+
if (element.getModifiers().stream()
83+
.anyMatch(m -> m == Modifier.PRIVATE || m == Modifier.FINAL || m == Modifier.PROTECTED)) {
84+
logError(element, "Injected fields must be non-final and have public or package-private access");
85+
} else {
86+
injectFields.add(new FieldReader(element));
87+
}
8388
}
8489
}
8590

@@ -122,6 +127,8 @@ private void readMethod(Element element, TypeElement type) {
122127
if (!injectMethods.containsKey(methodKey) && methodReader.isNotPrivate()) {
123128
injectMethods.put(methodKey, methodReader);
124129
checkAspect = false;
130+
} else if (!injectMethods.containsKey(methodKey)) {
131+
logError(methodElement, "Inject methods must have public or package-private access");
125132
}
126133
} else {
127134
notInjectMethods.add(methodKey);

0 commit comments

Comments
 (0)