From 3927313ffbe92c1614699c11f7ea46d2fd55ab71 Mon Sep 17 00:00:00 2001 From: Akash Yadav Date: Sat, 23 Jul 2022 08:37:49 +0530 Subject: [PATCH] Returned CANCELLED rewrite if CompilerProvider.findTypeDeclaration returns NOT_FOUND (fixes #323) --- .../lsp/java/rewrite/GenerateRecordConstructor.java | 6 ++++++ .../lsp/java/rewrite/ImplementAbstractMethods.java | 5 +++++ .../androidide/lsp/java/rewrite/RemoveException.java | 9 +++++++++ .../itsaky/androidide/lsp/java/rewrite/RemoveMethod.java | 1 + 4 files changed, 21 insertions(+) diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/GenerateRecordConstructor.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/GenerateRecordConstructor.java index c0fe51ef5..4be3af7ff 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/GenerateRecordConstructor.java +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/GenerateRecordConstructor.java @@ -60,6 +60,12 @@ public class GenerateRecordConstructor extends Rewrite { LOG.info("Generate default constructor for " + className + "..."); // TODO this needs to fall back on looking for inner classes and package-private classes Path file = compiler.findTypeDeclaration(className); + + if (file == CompilerProvider.NOT_FOUND) { + LOG.warn("Unable to find source file for class:", this.className); + return CANCELLED; + } + SynchronizedTask synchronizedTask = compiler.compile(file); return synchronizedTask.get( task -> { diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/ImplementAbstractMethods.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/ImplementAbstractMethods.java index be359b88b..f43fb36df 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/ImplementAbstractMethods.java +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/ImplementAbstractMethods.java @@ -84,6 +84,11 @@ public class ImplementAbstractMethods extends Rewrite { @Override public Map rewrite(@NonNull CompilerProvider compiler) { final Path file = compiler.findTypeDeclaration(this.classFile); + if (file == CompilerProvider.NOT_FOUND) { + LOG.warn("Unable to find source file for class:", this.className, "classFile=", this.classFile); + return CANCELLED; + } + final SynchronizedTask synchronizedTask = compiler.compile(file); return synchronizedTask.get( task -> { diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveException.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveException.java index a545b8ba1..326b97af7 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveException.java +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveException.java @@ -23,6 +23,7 @@ import com.itsaky.androidide.lsp.java.utils.FindHelper; import com.itsaky.androidide.models.Position; import com.itsaky.androidide.models.Range; import com.itsaky.androidide.lsp.models.TextEdit; +import com.itsaky.androidide.utils.ILogger; import com.sun.source.tree.CompilationUnitTree; import com.sun.source.tree.ExpressionTree; import com.sun.source.tree.LineMap; @@ -49,6 +50,8 @@ public class RemoveException extends Rewrite { final String className, methodName; final String[] erasedParameterTypes; final String exceptionType; + + private static final ILogger LOG = ILogger.newInstance("RemoveException"); public RemoveException( String className, String methodName, String[] erasedParameterTypes, String exceptionType) { @@ -61,6 +64,12 @@ public class RemoveException extends Rewrite { @Override public Map rewrite(CompilerProvider compiler) { Path file = compiler.findTypeDeclaration(className); + + if (file == CompilerProvider.NOT_FOUND) { + LOG.warn("Unable to find source file for class:", this.className); + return CANCELLED; + } + SynchronizedTask synchronizedTask = compiler.compile(file); return synchronizedTask.get( task -> { diff --git a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveMethod.java b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveMethod.java index 92b11e8fa..acddba24f 100644 --- a/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveMethod.java +++ b/lsp/java/src/main/java/com/itsaky/androidide/lsp/java/rewrite/RemoveMethod.java @@ -46,6 +46,7 @@ public class RemoveMethod extends Rewrite { if (file == CompilerProvider.NOT_FOUND) { return CANCELLED; } + return compiler .compile(file) .get(