diff --git a/java-compiler-testing/src/it/google-auto-value/src/test/java/io/github/ascopes/jct/acceptancetests/autovalue/AutoValueTest.java b/java-compiler-testing/src/it/google-auto-value/src/test/java/io/github/ascopes/jct/acceptancetests/autovalue/AutoValueTest.java index 4a9fd6e95..b445a930b 100644 --- a/java-compiler-testing/src/it/google-auto-value/src/test/java/io/github/ascopes/jct/acceptancetests/autovalue/AutoValueTest.java +++ b/java-compiler-testing/src/it/google-auto-value/src/test/java/io/github/ascopes/jct/acceptancetests/autovalue/AutoValueTest.java @@ -72,8 +72,8 @@ void autoValueImplementationClassIsCreatedAsExpected(JctCompiler compiler) throw } private Object callMethod(Object obj, String method, Object... args) throws Throwable { - var cls = obj instanceof Class - ? (Class) obj + var cls = obj instanceof Class castCls + ? castCls : obj.getClass(); // Enforce reflective access to be allowed. diff --git a/java-compiler-testing/src/it/immutables/src/test/java/io/github/ascopes/jct/acceptancetests/immutables/ImmutablesTest.java b/java-compiler-testing/src/it/immutables/src/test/java/io/github/ascopes/jct/acceptancetests/immutables/ImmutablesTest.java index 985269801..a60d56be3 100644 --- a/java-compiler-testing/src/it/immutables/src/test/java/io/github/ascopes/jct/acceptancetests/immutables/ImmutablesTest.java +++ b/java-compiler-testing/src/it/immutables/src/test/java/io/github/ascopes/jct/acceptancetests/immutables/ImmutablesTest.java @@ -100,8 +100,8 @@ void immutablesValueProducesTheExpectedClassForModules(JctCompiler compiler) thr } private Object callMethod(Object obj, String method, Object... args) throws Throwable { - var cls = obj instanceof Class - ? (Class) obj + var cls = obj instanceof Class castCls + ? castCls : obj.getClass(); // Enforce reflective access to be allowed. diff --git a/java-compiler-testing/src/it/mapstruct/src/test/java/io/github/ascopes/jct/acceptancetests/mapstruct/MapStructTest.java b/java-compiler-testing/src/it/mapstruct/src/test/java/io/github/ascopes/jct/acceptancetests/mapstruct/MapStructTest.java index 18bfd7490..eddaa589e 100644 --- a/java-compiler-testing/src/it/mapstruct/src/test/java/io/github/ascopes/jct/acceptancetests/mapstruct/MapStructTest.java +++ b/java-compiler-testing/src/it/mapstruct/src/test/java/io/github/ascopes/jct/acceptancetests/mapstruct/MapStructTest.java @@ -108,8 +108,8 @@ void mapStructGeneratesExpectedMappingCodeForModules(JctCompiler compiler) throw } private T getAttr(Object obj, String name) throws Throwable { - final var cls = obj instanceof Class - ? (Class) obj + final var cls = obj instanceof Class castCls + ? castCls : obj.getClass(); final var instance = cls == obj diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ContainerGroupRepositoryImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ContainerGroupRepositoryImpl.java index 52d48eac9..022f8f620 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ContainerGroupRepositoryImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ContainerGroupRepositoryImpl.java @@ -76,10 +76,9 @@ public ContainerGroupRepositoryImpl(String release) { * @throws JctIllegalInputException if the location is an output location and is misconfigured. */ public void addPath(Location location, PathRoot pathRoot) { - if (location instanceof ModuleLocation) { + if (location instanceof ModuleLocation moduleLocation) { // If we are adding a specific module, we should resolve where it needs to live // using custom logic so that we know it gets registered in the right place. - var moduleLocation = (ModuleLocation) location; addModulePath(moduleLocation, pathRoot); } else if (location.isModuleOrientedLocation()) { // If we are adding a module-oriented location of any type, then we should discover @@ -268,8 +267,7 @@ public Collection getPackageContainerGroups() { */ @Nullable public PackageContainerGroup getPackageOrientedContainerGroup(Location location) { - if (location instanceof ModuleLocation) { - var moduleLocation = (ModuleLocation) location; + if (location instanceof ModuleLocation moduleLocation) { var group = getModuleOrientedContainerGroup(moduleLocation.getParent()); return group == null ? null @@ -298,8 +296,7 @@ public String getRelease() { * @return {@code true} if the location exists, or {@code false} if it does not. */ public boolean hasLocation(Location location) { - if (location instanceof ModuleLocation) { - var moduleLocation = (ModuleLocation) location; + if (location instanceof ModuleLocation moduleLocation) { var parentLocation = moduleLocation.getParent(); var group = parentLocation.isOutputLocation() ? outputs.get(parentLocation) diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ModuleContainerGroupImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ModuleContainerGroupImpl.java index dd112e0a2..0a46f5b1d 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ModuleContainerGroupImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/containers/impl/ModuleContainerGroupImpl.java @@ -114,8 +114,8 @@ public void close() throws IOException { public boolean contains(PathFileObject fileObject) { var location = fileObject.getLocation(); - if (location instanceof ModuleLocation) { - var module = modules.get((ModuleLocation) location); + if (location instanceof ModuleLocation moduleLocation) { + var module = modules.get(moduleLocation); if (module != null) { return module.contains(fileObject); } diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/ModuleLocation.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/ModuleLocation.java index 82d1c84a1..2fa5acf71 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/ModuleLocation.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/ModuleLocation.java @@ -95,14 +95,11 @@ public boolean isModuleOrientedLocation() { @Override public boolean equals(@Nullable Object other) { - if (!(other instanceof ModuleLocation)) { - return false; + if (other instanceof ModuleLocation that) { + return parent.equals(that.parent) + && moduleName.equals(that.moduleName); } - - var that = (ModuleLocation) other; - - return parent.equals(that.parent) - && moduleName.equals(that.moduleName); + return false; } @Override diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerImpl.java index 7c9ba3bcb..f38e30055 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/JctFileManagerImpl.java @@ -74,13 +74,12 @@ public void close() { } @Override - public boolean contains(Location location, FileObject fo) { - if (!(fo instanceof PathFileObject)) { - return false; + public boolean contains(Location location, FileObject fileObject) { + if (fileObject instanceof PathFileObject pathFileObject) { + var group = repository.getContainerGroup(location); + return group != null && group.contains(pathFileObject); } - - var group = repository.getContainerGroup(location); - return group != null && group.contains((PathFileObject) fo); + return false; } @Override @@ -143,8 +142,7 @@ public FileObject getFileForOutput( PackageContainerGroup group = null; // If we have a module, we may need to create a brand-new location for it. - if (location instanceof ModuleLocation) { - var moduleLocation = ((ModuleLocation) location); + if (location instanceof ModuleLocation moduleLocation) { var parentGroup = repository.getOutputContainerGroup(moduleLocation.getParent()); if (parentGroup != null) { @@ -186,8 +184,7 @@ public JavaFileObject getJavaFileForOutput( PackageContainerGroup group = null; // If we have a module, we may need to create a brand-new location for it. - if (location instanceof ModuleLocation) { - var moduleLocation = ((ModuleLocation) location); + if (location instanceof ModuleLocation moduleLocation) { var parentGroup = repository.getOutputContainerGroup(moduleLocation.getParent()); if (parentGroup != null) { @@ -216,18 +213,13 @@ public ModuleLocation getLocationForModule(Location location, String moduleName) public ModuleLocation getLocationForModule(Location location, JavaFileObject fileObject) { requireOutputOrModuleOrientedLocation(location); - if (fileObject instanceof PathFileObject) { - var pathFileObject = (PathFileObject) fileObject; - var moduleLocation = pathFileObject.getLocation(); - - if (moduleLocation instanceof ModuleLocation) { - return (ModuleLocation) moduleLocation; - } - + if (fileObject instanceof PathFileObject pathFileObject) { // The expectation is to return null if this is not for a module. Certain frameworks like // manifold expect this behaviour, despite it not being documented very clearly in the // Java compiler API. - return null; + return pathFileObject.getLocation() instanceof ModuleLocation moduleLocation + ? moduleLocation + : null; } throw new JctIllegalInputException( @@ -297,18 +289,17 @@ public boolean hasLocation(Location location) { @Nullable @Override - public String inferBinaryName(Location location, JavaFileObject file) { + public String inferBinaryName(Location location, JavaFileObject fileObject) { requirePackageOrientedLocation(location); - if (!(file instanceof PathFileObject)) { - return null; + if (fileObject instanceof PathFileObject pathFileObject) { + var group = repository.getPackageOrientedContainerGroup(location); + if (group != null) { + return group.inferBinaryName(pathFileObject); + } } - var group = repository.getPackageOrientedContainerGroup(location); - - return group == null - ? null - : group.inferBinaryName((PathFileObject) file); + return null; } @Nullable @@ -316,8 +307,8 @@ public String inferBinaryName(Location location, JavaFileObject file) { public String inferModuleName(Location location) { requirePackageOrientedLocation(location); - return location instanceof ModuleLocation - ? ((ModuleLocation) location).getModuleName() + return location instanceof ModuleLocation moduleLocation + ? moduleLocation.getModuleName() : null; } diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/PathFileObjectImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/PathFileObjectImpl.java index 1714c9cfb..b05545558 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/PathFileObjectImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/filemanagers/impl/PathFileObjectImpl.java @@ -115,7 +115,8 @@ public boolean delete() { @Override public boolean equals(@Nullable Object other) { // Roughly the same as what Javac does. - return other instanceof FileObject && uri.equals(((FileObject) other).toUri()); + return other instanceof FileObject that + && uri.equals(that.toUri()); } @Override diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java index cee2dd687..37f4b7d68 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/junit/AbstractCompilersProvider.java @@ -280,8 +280,8 @@ private JctCompilerConfigurer initializeConfigurer( return constructor.newInstance(); } catch (ReflectiveOperationException ex) { - if (ex instanceof InvocationTargetException) { - var target = ((InvocationTargetException) ex).getTargetException(); + if (ex instanceof InvocationTargetException iee) { + var target = iee.getTargetException(); if (isTestAbortedException(target)) { target.addSuppressed(ex); throw (RuntimeException) target; diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java index 94d8ab12b..78ccacdd4 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ModuleDiscoverer.java @@ -132,13 +132,10 @@ public ModuleDescriptor getDescriptor() { @Override public boolean equals(@Nullable Object other) { - if (!(other instanceof ModuleCandidate)) { - return false; + if (other instanceof ModuleCandidate that) { + return name.equals(that.name) && path.equals(that.path); } - - var that = (ModuleCandidate) other; - - return name.equals(that.name) && path.equals(that.path); + return false; } @Override diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ToStringBuilder.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ToStringBuilder.java index ca0444d86..9f5035378 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ToStringBuilder.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/utils/ToStringBuilder.java @@ -117,12 +117,12 @@ private static void appendToString(StringBuilder builder, @Nullable Object objec builder.append(NULL); } else if (TYPES_TO_TREAT_AS_STRINGS.stream().anyMatch(cls -> cls.isInstance(object))) { appendToStringCharSequence(builder, object.toString()); - } else if (object instanceof Map) { - appendToStringMap(builder, (Map) object); + } else if (object instanceof Map map) { + appendToStringMap(builder, map); } else if (object.getClass().isArray()) { appendToStringArray(builder, object); - } else if (object instanceof Iterable) { - appendToStringIterable(builder, ((Iterable) object)); + } else if (object instanceof Iterable iterable) { + appendToStringIterable(builder, iterable); } else { builder.append(object); } diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/AbstractManagedDirectory.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/AbstractManagedDirectory.java index 12479e357..ebcd7978b 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/AbstractManagedDirectory.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/AbstractManagedDirectory.java @@ -148,9 +148,9 @@ public ManagedDirectory thatIsEmpty() { } @Override - public boolean equals(@Nullable Object that) { - return that instanceof AbstractManagedDirectory - && ((AbstractManagedDirectory) that).uri.equals(uri); + public boolean equals(@Nullable Object other) { + return other instanceof AbstractManagedDirectory that + && uri.equals(that.uri); } @Override diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceImpl.java index 95109b86d..6ce1d5efe 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WorkspaceImpl.java @@ -69,9 +69,9 @@ public void close() { for (var list : paths.values()) { for (var path : list) { - if (path instanceof AbstractManagedDirectory) { + if (path instanceof AbstractManagedDirectory dir) { try { - ((AbstractManagedDirectory) path).close(); + dir.close(); } catch (Exception ex) { exceptions.add(ex); @@ -206,8 +206,7 @@ public Map> getModules(Location location) { var results = new HashMap>(); paths.forEach((pathLocation, pathRoots) -> { - if (pathLocation instanceof ModuleLocation) { - var modulePathLocation = (ModuleLocation) pathLocation; + if (pathLocation instanceof ModuleLocation modulePathLocation) { if (modulePathLocation.getParent().equals(location)) { results.computeIfAbsent(modulePathLocation.getModuleName(), name -> new ArrayList<>()) .addAll(pathRoots); diff --git a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WrappingDirectoryImpl.java b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WrappingDirectoryImpl.java index d18e6bad6..02225a497 100644 --- a/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WrappingDirectoryImpl.java +++ b/java-compiler-testing/src/main/java/io/github/ascopes/jct/workspaces/impl/WrappingDirectoryImpl.java @@ -121,9 +121,9 @@ public URL getUrl() { } @Override - public boolean equals(@Nullable Object that) { - return that instanceof WrappingDirectoryImpl - && ((WrappingDirectoryImpl) that).getUri().equals(uri); + public boolean equals(@Nullable Object other) { + return other instanceof WrappingDirectoryImpl that + && uri.equals(that.uri); } @Override diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java index ae66743ad..4fb5512c5 100644 --- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java +++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Fixtures.java @@ -465,17 +465,18 @@ public static > E oneOf(Class cls) { * @param the type. * @return the element. */ + @SuppressWarnings("unchecked") public static T oneOf(Collection items) { var index = RANDOM.nextInt(items.size()); - if (items instanceof List) { - return ((List) items).get(index); - } else { - var iter = items.iterator(); - for (var i = 0; i < index - 1; ++i) { - iter.next(); - } - return iter.next(); + if (items instanceof List list) { + return (T) list.get(index); + } + + var iter = items.iterator(); + for (var i = 0; i < index - 1; ++i) { + iter.next(); } + return iter.next(); } /** diff --git a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java index 62df8acd4..f0047ee93 100644 --- a/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java +++ b/java-compiler-testing/src/test/java/io/github/ascopes/jct/fixtures/Slf4jLoggerFake.java @@ -167,16 +167,13 @@ private static class LogRecord { } @Override - public boolean equals(Object obj) { - if (!(obj instanceof LogRecord)) { - return false; + public boolean equals(Object other) { + if (other instanceof LogRecord that) { + return Objects.equals(ex, that.ex) + && Objects.equals(message, that.message) + && Arrays.deepEquals(args, that.args); } - - var that = (LogRecord) obj; - - return Objects.equals(ex, that.ex) - && Objects.equals(message, that.message) - && Arrays.deepEquals(args, that.args); + return false; } @Override