Skip to content

Commit edb6c16

Browse files
committed
now doesn't fail compilation on nullable types
Revert style
1 parent 6b02e2c commit edb6c16

File tree

5 files changed

+24
-4
lines changed

5 files changed

+24
-4
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,3 +3,11 @@ build/
33
.idea/
44
*.iml
55
.gradle
6+
*.prefs
7+
*.class*
8+
*.factorypath
9+
*.project
10+
*.processors
11+
*/bin/
12+
*.editorconfig
13+
*.Module

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@ class FieldReader {
2222
this.utype = Util.determineType(element.asType());
2323
this.fieldType = Util.unwrapProvider(utype.rawType());
2424
this.type = GenericType.parse(utype.rawType());
25+
if (nullable || element.asType().toString().startsWith("java.util.Optional<"))
26+
ProcessingContext.getOptionalTypes().add(fieldType);
2527
}
2628

2729
boolean isGenericParam() {

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

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ class MetaDataOrdering {
1717
private final Map<String, ProviderList> providers = new HashMap<>();
1818
private final List<DependencyLink> circularDependencies = new ArrayList<>();
1919
private final Set<String> missingDependencyTypes = new LinkedHashSet<>();
20+
private final Set<String> optionalTypes;
2021

2122
MetaDataOrdering(Collection<MetaData> values, ProcessingContext context, ScopeInfo scopeInfo) {
2223
this.context = context;
2324
this.scopeInfo = scopeInfo;
24-
for (MetaData metaData : values) {
25+
this.optionalTypes = ProcessingContext.getOptionalTypes();
26+
for (final MetaData metaData : values) {
2527
if (metaData.noDepends()) {
2628
orderedList.add(metaData);
2729
metaData.setWired();
@@ -120,9 +122,11 @@ void missingDependencies() {
120122
}
121123

122124
private void checkMissingDependencies(MetaData metaData) {
123-
for (Dependency dependency : metaData.getDependsOn()) {
124-
if (providers.get(dependency.getName()) == null && !scopeInfo.providedByOtherModule(dependency.getName())) {
125-
TypeElement element = context.elementMaybe(metaData.getType());
125+
for (final Dependency dependency : metaData.getDependsOn()) {
126+
if (providers.get(dependency.getName()) == null
127+
&& !scopeInfo.providedByOtherModule(dependency.getName())
128+
&& !optionalTypes.contains(dependency.getName())) {
129+
final var element = context.elementMaybe(metaData.getType());
126130
context.logError(element, "No dependency provided for " + dependency + " on " + metaData.getType());
127131
missingDependencyTypes.add(dependency.getName());
128132
}

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -327,6 +327,8 @@ static class MethodParam {
327327
this.utilType = Util.determineType(param.asType());
328328
this.paramType = utilType.rawType();
329329
this.genericType = GenericType.parse(paramType);
330+
if (nullable || param.asType().toString().startsWith("java.util.Optional<"))
331+
ProcessingContext.getOptionalTypes().add(paramType);
330332
}
331333

332334
@Override

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

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ class ProcessingContext {
2828
private final Elements elementUtils;
2929
private final Types typeUtils;
3030
private final Set<String> uniqueModuleNames = new HashSet<>();
31+
private static final Set<String> optionalTypes = new LinkedHashSet<>();
3132

3233
ProcessingContext(ProcessingEnvironment processingEnv) {
3334
this.processingEnv = processingEnv;
@@ -141,4 +142,7 @@ boolean isDuplicateModule(String moduleFullName) {
141142
return uniqueModuleNames.contains(moduleFullName);
142143
}
143144

145+
public static Set<String> getOptionalTypes() {
146+
return optionalTypes;
147+
}
144148
}

0 commit comments

Comments
 (0)