|
12 | 12 | import javax.lang.model.element.Element;
|
13 | 13 | import javax.lang.model.element.TypeElement;
|
14 | 14 | import javax.lang.model.type.TypeKind;
|
| 15 | +import javax.lang.model.type.TypeMirror; |
15 | 16 |
|
16 | 17 | import io.avaje.inject.generator.MethodReader.MethodParam;
|
17 | 18 |
|
@@ -104,18 +105,38 @@ private boolean shouldDelay() {
|
104 | 105 | var construct = Optional.ofNullable(constructor)
|
105 | 106 | .map(MethodReader::params).stream()
|
106 | 107 | .flatMap(List::stream)
|
107 |
| - .map(MethodParam::element); |
| 108 | + .map(MethodParam::element) |
| 109 | + .map(Element::getKind); |
108 | 110 |
|
109 |
| - var fields = injectFields.stream().map(FieldReader::element); |
110 |
| - var constructFields = Stream.concat(construct, fields); |
| 111 | + var fields = injectFields.stream() |
| 112 | + .map(FieldReader::element) |
| 113 | + .map(Element::getKind); |
111 | 114 | var methods = injectMethods.stream()
|
112 | 115 | .map(MethodReader::params)
|
113 | 116 | .flatMap(List::stream)
|
114 |
| - .map(MethodParam::element); |
| 117 | + .map(MethodParam::element) |
| 118 | + .map(Element::getKind); |
| 119 | + |
| 120 | + var interfaces = Optional.ofNullable(beanType.getInterfaces()) |
| 121 | + .orElse(List.of()) |
| 122 | + .stream() |
| 123 | + .map(TypeMirror::getKind); |
| 124 | + |
| 125 | + var superClass = Optional.ofNullable(beanType.getSuperclass()) |
| 126 | + .stream() |
| 127 | + .map(TypeMirror::getKind); |
| 128 | + |
| 129 | + var beanTypes = BeanTypesPrism.getOptionalOn(beanType) |
| 130 | + .map(BeanTypesPrism::value) |
| 131 | + .stream() |
| 132 | + .flatMap(List::stream) |
| 133 | + .map(TypeMirror::getKind); |
115 | 134 |
|
116 |
| - return Stream.concat(constructFields, methods) |
117 |
| - .map(Element::asType) |
118 |
| - .anyMatch(t -> t.getKind() == TypeKind.ERROR); |
| 135 | + var constructorField = Stream.concat(construct, fields); |
| 136 | + var methodInterfaces = Stream.concat(methods, interfaces); |
| 137 | + var superclassBeanTypes = Stream.concat(superClass, beanTypes); |
| 138 | + return Stream.concat(constructorField, Stream.concat(methodInterfaces, superclassBeanTypes)) |
| 139 | + .anyMatch(TypeKind.ERROR::equals); |
119 | 140 | }
|
120 | 141 |
|
121 | 142 | @Override
|
|
0 commit comments