diff --git a/injector-generator/src/org/jetbrains/jet/di/Dependencies.java b/injector-generator/src/org/jetbrains/jet/di/Dependencies.java index 519b4cd01d9..af051f44545 100644 --- a/injector-generator/src/org/jetbrains/jet/di/Dependencies.java +++ b/injector-generator/src/org/jetbrains/jet/di/Dependencies.java @@ -34,6 +34,7 @@ public class Dependencies { private final Set allFields = Sets.newLinkedHashSet(); private final Set satisfied = Sets.newHashSet(); + private final Set used = Sets.newHashSet(); private final Multimap typeToFields = HashMultimap.create(); private final Set newFields = Sets.newLinkedHashSet(); @@ -85,6 +86,7 @@ public class Dependencies { field + ": " + method + ": " + allFields, neededFor.prepend(field) ); + used.add(dependency); field.getDependencies().add(new SetterDependency(field, method.getName(), dependency)); } @@ -152,6 +154,7 @@ public class Dependencies { "constructor: " + constructor + ", parameter: " + parameterType, neededFor.prepend(field) ); + used.add(fieldForParameter); dependency.getConstructorArguments().add(fieldForParameter); } @@ -165,6 +168,11 @@ public class Dependencies { return newFields; } + @NotNull + public Set getUsedFields() { + return used; + } + private interface ImmutableStack { @NotNull ImmutableStack prepend(T t); diff --git a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java index 9167b759ed7..62f29e6a602 100644 --- a/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java +++ b/injector-generator/src/org/jetbrains/jet/di/DependencyInjectorGenerator.java @@ -53,7 +53,7 @@ public class DependencyInjectorGenerator { File file = new File(outputFileName); fields.addAll(dependencies.satisfyDependencies()); - + reportUnusedParameters(injectorPackageName, injectorClassName); StringBuilder preamble = new StringBuilder(); generatePreamble(injectorPackageName, new Printer(preamble)); @@ -92,6 +92,15 @@ public class DependencyInjectorGenerator { GeneratorsFileUtil.writeFileIfContentChanged(file, text.toString()); } + private void reportUnusedParameters(String injectorPackageName, String injectorClassName) { + Sets.SetView unusedParameters = Sets.difference(backsParameter, dependencies.getUsedFields()); + for (Field parameter : unusedParameters) { + if (!parameter.isPublic()) { + System.err.println("Unused parameter: " + parameter + " for " + injectorPackageName + "." + injectorClassName); + } + } + } + private void generatePreamble(String injectorPackageName, Printer p) throws IOException { String copyright = "injector-generator/copyright.txt"; p.println(FileUtil.loadFile(new File(copyright)));