diff --git a/javac-plugin/src/main/java/org/moditect/deptective/internal/DeptectiveTreeVisitor.java b/javac-plugin/src/main/java/org/moditect/deptective/internal/DeptectiveTreeVisitor.java index 924682a..0c1f5b5 100644 --- a/javac-plugin/src/main/java/org/moditect/deptective/internal/DeptectiveTreeVisitor.java +++ b/javac-plugin/src/main/java/org/moditect/deptective/internal/DeptectiveTreeVisitor.java @@ -22,9 +22,9 @@ import org.moditect.deptective.internal.model.PackageDependencies; import com.sun.source.tree.AnnotationTree; -import com.sun.source.tree.AssignmentTree; import com.sun.source.tree.CompilationUnitTree; import com.sun.source.tree.ExpressionTree; +import com.sun.source.tree.NewClassTree; import com.sun.source.tree.ParameterizedTypeTree; import com.sun.source.tree.Tree; import com.sun.source.tree.TypeParameterTree; @@ -133,6 +133,14 @@ public Void visitAnnotation(AnnotationTree node, Void p) { return super.visitAnnotation(node, p); } + + + @Override + public Void visitNewClass(NewClassTree node, Void p) { + checkPackageAccess(node, getQualifiedName(node)); + return super.visitNewClass(node, p); + } + protected String getQualifiedName(Tree tree) { com.sun.tools.javac.tree.JCTree jcTree = (com.sun.tools.javac.tree.JCTree)tree; Type type = jcTree.type; diff --git a/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/BasicPluginTest.java b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/BasicPluginTest.java index 4762a57..bec9344 100644 --- a/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/BasicPluginTest.java +++ b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/BasicPluginTest.java @@ -54,16 +54,25 @@ private Compilation compile() { return compilation; } -// @Test -// public void shouldDetectInvalidConstructorParameters() { -// Compilation compilation = compile(); -// assertThat(compilation).failed(); -// -// // TODO https://github.com/moditect/deptective/issues/7 -// assertThat(compilation).hadErrorContaining( -// "package org.moditect.deptective.plugintest.basic.foo does not read org.moditect.deptective.plugintest.basic.barctorcall" -// ); -// } + @Test + public void shouldDetectInvalidConstructorParameters() { + Compilation compilation = compile(); + assertThat(compilation).failed(); + + assertThat(compilation).hadErrorContaining( + "package org.moditect.deptective.plugintest.basic.foo does not read org.moditect.deptective.plugintest.basic.barctorparam" + ); + } + + @Test + public void shouldDetectInvalidConstructorCalls() { + Compilation compilation = compile(); + assertThat(compilation).failed(); + + assertThat(compilation).hadErrorContaining( + "package org.moditect.deptective.plugintest.basic.foo does not read org.moditect.deptective.plugintest.basic.barctorcall" + ); + } @Test public void shouldDetectInvalidFieldReferences() { diff --git a/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/barctorparam/BarCtorParam.java b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/barctorparam/BarCtorParam.java new file mode 100644 index 0000000..9f4a00f --- /dev/null +++ b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/barctorparam/BarCtorParam.java @@ -0,0 +1,5 @@ +package org.moditect.deptective.plugintest.basic.barctorparam; + +public class BarCtorParam { + +} diff --git a/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/foo/Foo.java b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/foo/Foo.java index 0e927ff..2cfd17c 100644 --- a/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/foo/Foo.java +++ b/javac-plugin/src/test/java/org/moditect/deptective/plugintest/basic/foo/Foo.java @@ -20,6 +20,7 @@ import org.moditect.deptective.plugintest.basic.barclazzan.BarClazzAnnotation; import org.moditect.deptective.plugintest.basic.barctorcall.BarCtorCall; +import org.moditect.deptective.plugintest.basic.barctorparam.BarCtorParam; import org.moditect.deptective.plugintest.basic.barfield.BarField; import org.moditect.deptective.plugintest.basic.barfieldan.BarFieldAnnotation; import org.moditect.deptective.plugintest.basic.bargen.BarGeneric; @@ -38,7 +39,7 @@ public class Foo { private String s; private final BarField bar = new BarField(); - public Foo(BarParameter bar) { + public Foo(BarCtorParam bar) { } public BarRetVal doSomething(BarParameter bar) { @@ -48,6 +49,7 @@ public BarRetVal doSomething(BarParameter bar) { for (BarLoopVar oneBar : new ArrayList()) { } + new BarCtorCall();