From b9b7f2c600f8b5c516893251c1133afe76dbb945 Mon Sep 17 00:00:00 2001 From: ShammiL Date: Thu, 8 Feb 2024 23:04:41 +0530 Subject: [PATCH 1/6] Fix emit diagnostics to print lifecycle plugin diagnostics --- .../cli/task/CreateExecutableTask.java | 13 +++--------- .../ballerina/projects/JBallerinaBackend.java | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index d4c9835a940e..107c88e4c7b3 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -127,16 +127,9 @@ public void execute(Project project) { } } - List diagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); - if (!diagnostics.isEmpty()) { - // TODO: When deprecating the lifecycle compiler plugin, we can remove this check for duplicates - // in JBallerinaBackend diagnostics and the diagnostics added to EmitResult. - diagnostics = diagnostics.stream() - .filter(diagnostic -> !jBallerinaBackend.diagnosticResult().diagnostics().contains(diagnostic)) - .collect(Collectors.toList()); - if (!diagnostics.isEmpty()) { - diagnostics.forEach(d -> out.println("\n" + d.toString())); - } + List emitDiagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); + if (!emitDiagnostics.isEmpty()) { + emitDiagnostics.forEach(d -> out.println("\n" + d.toString())); } } catch (ProjectException e) { diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java index 2bba26323976..97ff8b0ba202 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java @@ -205,12 +205,11 @@ public DiagnosticResult diagnosticResult() { return diagnosticResult; } - // TODO EmitResult should not contain compilation diagnostics. public EmitResult emit(OutputType outputType, Path filePath) { Path generatedArtifact = null; if (diagnosticResult.hasErrors()) { - return new EmitResult(false, diagnosticResult, generatedArtifact); + return new EmitResult(false, new DefaultDiagnosticResult(new ArrayList<>()), generatedArtifact); } switch (outputType) { @@ -227,19 +226,23 @@ public EmitResult emit(OutputType outputType, Path filePath) { throw new RuntimeException("Unexpected output type: " + outputType); } - ArrayList diagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); + ArrayList allDiagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); + List emitResultDiagnostics = new ArrayList<>(); + // Add lifecycle plugin diagnostics. List pluginDiagnostics = packageCompilation.notifyCompilationCompletion(filePath); if (!pluginDiagnostics.isEmpty()) { - diagnostics.addAll(pluginDiagnostics); + emitResultDiagnostics.addAll(pluginDiagnostics); } - diagnosticResult = new DefaultDiagnosticResult(diagnostics); - - List allDiagnostics = new ArrayList<>(diagnostics); + // Add jar resolver diagnostics. jarResolver().diagnosticResult().diagnostics().stream().forEach( - diagnostic -> allDiagnostics.add(diagnostic)); + diagnostic -> emitResultDiagnostics.add(diagnostic)); + allDiagnostics.addAll(emitResultDiagnostics); + // JBallerinaBackend diagnostics contains all diagnostics. + // EmitResult will only contain diagnostics related to emitting the executable. + diagnosticResult = new DefaultDiagnosticResult(allDiagnostics); // TODO handle the EmitResult properly - return new EmitResult(true, new DefaultDiagnosticResult(allDiagnostics), generatedArtifact); + return new EmitResult(true, new DefaultDiagnosticResult(emitResultDiagnostics), generatedArtifact); } private Path emitBala(Path filePath) { From b893dc9fbe98965d1fe187f7d51a84db642bf708 Mon Sep 17 00:00:00 2001 From: ShammiL Date: Thu, 8 Feb 2024 23:05:49 +0530 Subject: [PATCH 2/6] Revert "Fix emit diagnostics to print lifecycle plugin diagnostics" This reverts commit b9b7f2c600f8b5c516893251c1133afe76dbb945. --- .../cli/task/CreateExecutableTask.java | 13 +++++++++--- .../ballerina/projects/JBallerinaBackend.java | 21 ++++++++----------- 2 files changed, 19 insertions(+), 15 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index 107c88e4c7b3..d4c9835a940e 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -127,9 +127,16 @@ public void execute(Project project) { } } - List emitDiagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); - if (!emitDiagnostics.isEmpty()) { - emitDiagnostics.forEach(d -> out.println("\n" + d.toString())); + List diagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); + if (!diagnostics.isEmpty()) { + // TODO: When deprecating the lifecycle compiler plugin, we can remove this check for duplicates + // in JBallerinaBackend diagnostics and the diagnostics added to EmitResult. + diagnostics = diagnostics.stream() + .filter(diagnostic -> !jBallerinaBackend.diagnosticResult().diagnostics().contains(diagnostic)) + .collect(Collectors.toList()); + if (!diagnostics.isEmpty()) { + diagnostics.forEach(d -> out.println("\n" + d.toString())); + } } } catch (ProjectException e) { diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java index 97ff8b0ba202..2bba26323976 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java @@ -205,11 +205,12 @@ public DiagnosticResult diagnosticResult() { return diagnosticResult; } + // TODO EmitResult should not contain compilation diagnostics. public EmitResult emit(OutputType outputType, Path filePath) { Path generatedArtifact = null; if (diagnosticResult.hasErrors()) { - return new EmitResult(false, new DefaultDiagnosticResult(new ArrayList<>()), generatedArtifact); + return new EmitResult(false, diagnosticResult, generatedArtifact); } switch (outputType) { @@ -226,23 +227,19 @@ public EmitResult emit(OutputType outputType, Path filePath) { throw new RuntimeException("Unexpected output type: " + outputType); } - ArrayList allDiagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); - List emitResultDiagnostics = new ArrayList<>(); - // Add lifecycle plugin diagnostics. + ArrayList diagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); List pluginDiagnostics = packageCompilation.notifyCompilationCompletion(filePath); if (!pluginDiagnostics.isEmpty()) { - emitResultDiagnostics.addAll(pluginDiagnostics); + diagnostics.addAll(pluginDiagnostics); } - // Add jar resolver diagnostics. + diagnosticResult = new DefaultDiagnosticResult(diagnostics); + + List allDiagnostics = new ArrayList<>(diagnostics); jarResolver().diagnosticResult().diagnostics().stream().forEach( - diagnostic -> emitResultDiagnostics.add(diagnostic)); - allDiagnostics.addAll(emitResultDiagnostics); - // JBallerinaBackend diagnostics contains all diagnostics. - // EmitResult will only contain diagnostics related to emitting the executable. - diagnosticResult = new DefaultDiagnosticResult(allDiagnostics); + diagnostic -> allDiagnostics.add(diagnostic)); // TODO handle the EmitResult properly - return new EmitResult(true, new DefaultDiagnosticResult(emitResultDiagnostics), generatedArtifact); + return new EmitResult(true, new DefaultDiagnosticResult(allDiagnostics), generatedArtifact); } private Path emitBala(Path filePath) { From de57a6ee37f51703d5a160effa61305846b3f131 Mon Sep 17 00:00:00 2001 From: ShammiL Date: Thu, 8 Feb 2024 23:10:49 +0530 Subject: [PATCH 3/6] Fix emit diagnostics to print lifecycle plugin diagnostics --- .../cli/task/CreateExecutableTask.java | 13 +++--------- .../ballerina/projects/JBallerinaBackend.java | 21 +++++++++++-------- 2 files changed, 15 insertions(+), 19 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index d4c9835a940e..107c88e4c7b3 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -127,16 +127,9 @@ public void execute(Project project) { } } - List diagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); - if (!diagnostics.isEmpty()) { - // TODO: When deprecating the lifecycle compiler plugin, we can remove this check for duplicates - // in JBallerinaBackend diagnostics and the diagnostics added to EmitResult. - diagnostics = diagnostics.stream() - .filter(diagnostic -> !jBallerinaBackend.diagnosticResult().diagnostics().contains(diagnostic)) - .collect(Collectors.toList()); - if (!diagnostics.isEmpty()) { - diagnostics.forEach(d -> out.println("\n" + d.toString())); - } + List emitDiagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); + if (!emitDiagnostics.isEmpty()) { + emitDiagnostics.forEach(d -> out.println("\n" + d.toString())); } } catch (ProjectException e) { diff --git a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java index 2bba26323976..97ff8b0ba202 100644 --- a/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java +++ b/compiler/ballerina-lang/src/main/java/io/ballerina/projects/JBallerinaBackend.java @@ -205,12 +205,11 @@ public DiagnosticResult diagnosticResult() { return diagnosticResult; } - // TODO EmitResult should not contain compilation diagnostics. public EmitResult emit(OutputType outputType, Path filePath) { Path generatedArtifact = null; if (diagnosticResult.hasErrors()) { - return new EmitResult(false, diagnosticResult, generatedArtifact); + return new EmitResult(false, new DefaultDiagnosticResult(new ArrayList<>()), generatedArtifact); } switch (outputType) { @@ -227,19 +226,23 @@ public EmitResult emit(OutputType outputType, Path filePath) { throw new RuntimeException("Unexpected output type: " + outputType); } - ArrayList diagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); + ArrayList allDiagnostics = new ArrayList<>(diagnosticResult.allDiagnostics); + List emitResultDiagnostics = new ArrayList<>(); + // Add lifecycle plugin diagnostics. List pluginDiagnostics = packageCompilation.notifyCompilationCompletion(filePath); if (!pluginDiagnostics.isEmpty()) { - diagnostics.addAll(pluginDiagnostics); + emitResultDiagnostics.addAll(pluginDiagnostics); } - diagnosticResult = new DefaultDiagnosticResult(diagnostics); - - List allDiagnostics = new ArrayList<>(diagnostics); + // Add jar resolver diagnostics. jarResolver().diagnosticResult().diagnostics().stream().forEach( - diagnostic -> allDiagnostics.add(diagnostic)); + diagnostic -> emitResultDiagnostics.add(diagnostic)); + allDiagnostics.addAll(emitResultDiagnostics); + // JBallerinaBackend diagnostics contains all diagnostics. + // EmitResult will only contain diagnostics related to emitting the executable. + diagnosticResult = new DefaultDiagnosticResult(allDiagnostics); // TODO handle the EmitResult properly - return new EmitResult(true, new DefaultDiagnosticResult(allDiagnostics), generatedArtifact); + return new EmitResult(true, new DefaultDiagnosticResult(emitResultDiagnostics), generatedArtifact); } private Path emitBala(Path filePath) { From 127679c28b7e343a58c47d75c91cab38c9eb1573 Mon Sep 17 00:00:00 2001 From: ShammiL Date: Thu, 8 Feb 2024 23:30:12 +0530 Subject: [PATCH 4/6] Remove unused imports --- .../main/java/io/ballerina/cli/task/CreateExecutableTask.java | 1 - 1 file changed, 1 deletion(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index 107c88e4c7b3..d8fb1db88f99 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -41,7 +41,6 @@ import java.util.ArrayList; import java.util.List; import java.util.ServiceLoader; -import java.util.stream.Collectors; import static io.ballerina.cli.launcher.LauncherUtils.createLauncherException; import static io.ballerina.cli.utils.FileUtils.getFileNameWithoutExtension; From 64157b2929d712e7e662e008fe5635475cdba712 Mon Sep 17 00:00:00 2001 From: ShammiL Date: Tue, 13 Feb 2024 14:54:43 +0530 Subject: [PATCH 5/6] Address reviews --- .../java/io/ballerina/cli/task/CreateExecutableTask.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index d8fb1db88f99..1a9a2009973b 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -126,9 +126,9 @@ public void execute(Project project) { } } - List emitDiagnostics = new ArrayList<>(emitResult.diagnostics().diagnostics()); - if (!emitDiagnostics.isEmpty()) { - emitDiagnostics.forEach(d -> out.println("\n" + d.toString())); + // Print diagnostics found during emit executable + if (!emitResult.diagnostics().diagnostics().isEmpty()) { + emitResult.diagnostics().diagnostics().forEach(d -> out.println("\n" + d.toString())); } } catch (ProjectException e) { From f5263f5c9c691b96f9b5513d66e8b9c32e234dee Mon Sep 17 00:00:00 2001 From: ShammiL Date: Tue, 13 Feb 2024 15:20:00 +0530 Subject: [PATCH 6/6] Remove unused imports --- .../main/java/io/ballerina/cli/task/CreateExecutableTask.java | 3 --- 1 file changed, 3 deletions(-) diff --git a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java index 1a9a2009973b..cd88a3262533 100644 --- a/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java +++ b/cli/ballerina-cli/src/main/java/io/ballerina/cli/task/CreateExecutableTask.java @@ -29,7 +29,6 @@ import io.ballerina.projects.ProjectException; import io.ballerina.projects.ProjectKind; import io.ballerina.projects.internal.model.Target; -import io.ballerina.tools.diagnostics.Diagnostic; import org.ballerinalang.compiler.plugins.CompilerPlugin; import java.io.File; @@ -38,8 +37,6 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; -import java.util.ArrayList; -import java.util.List; import java.util.ServiceLoader; import static io.ballerina.cli.launcher.LauncherUtils.createLauncherException;