From 956d3128a933af12da8edb6743067c41940099ce Mon Sep 17 00:00:00 2001 From: bQUARKz Date: Fri, 27 Feb 2026 10:07:34 +0000 Subject: [PATCH] added improvements --- .../services/PBSFrontendPhaseService.java | 36 +++++-------------- .../stages/FrontendPhasePipelineStage.java | 21 ++++++++++- .../services/FrontendPhaseService.java | 7 +++- 3 files changed, 35 insertions(+), 29 deletions(-) diff --git a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java index 27757181..5ae7a4bd 100644 --- a/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java +++ b/prometeu-compiler/frontends/prometeu-frontend-pbs/src/main/java/p/studio/compiler/services/PBSFrontendPhaseService.java @@ -15,7 +15,11 @@ public class PBSFrontendPhaseService implements FrontendPhaseService { private final PbsFrontendCompiler frontendCompiler = new PbsFrontendCompiler(); @Override - public IRBackend compile(final FrontendPhaseContext ctx, final LogAggregator logs, final BuildingIssueSink issues) { + public IRBackend compile( + final FrontendPhaseContext ctx, + final DiagnosticSink diagnostics, + final LogAggregator logs, + final BuildingIssueSink issues) { final MutableList functions = MutableList.create(); for (final var pId : ctx.stack.reverseTopologicalOrder) { @@ -26,14 +30,10 @@ public class PBSFrontendPhaseService implements FrontendPhaseService { switch (sourceHandle.getExtension()) { case "pbs": { sourceHandle.readUtf8().ifPresentOrElse( - utf8Content -> { - final var diagnostics = DiagnosticSink.empty(); - functions.addAll(frontendCompiler - .compileFile(fId, utf8Content, diagnostics) - .stream() - .toList()); - adaptDiagnostics(sourceHandle.getCanonPath().toString(), diagnostics, issues); - }, + utf8Content -> functions.addAll(frontendCompiler + .compileFile(fId, utf8Content, diagnostics) + .stream() + .toList()), () -> issues.report(builder -> builder .error(true) .message("Failed to read file content: %s".formatted(sourceHandle.toString())))); @@ -51,22 +51,4 @@ public class PBSFrontendPhaseService implements FrontendPhaseService { .functions(functions.toReadOnlyList()) .build(); } - - private void adaptDiagnostics( - final String sourceLabel, - final DiagnosticSink diagnostics, - final BuildingIssueSink issues) { - for (final var diagnostic : diagnostics) { - final var span = diagnostic.getSpan(); - issues.report(builder -> builder - .error(diagnostic.getSeverity().isError()) - .message("[%s] %s at %s:[%d,%d)" - .formatted( - diagnostic.getCode(), - diagnostic.getMessage(), - sourceLabel, - span.getStart(), - span.getEnd()))); - } - } } diff --git a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.java b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.java index 24916aa0..a53e4670 100644 --- a/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.java +++ b/prometeu-compiler/prometeu-build-pipeline/src/main/java/p/studio/compiler/workspaces/stages/FrontendPhasePipelineStage.java @@ -5,6 +5,7 @@ import p.studio.compiler.FrontendRegistryService; import p.studio.compiler.messages.BuildingIssueSink; import p.studio.compiler.messages.FrontendPhaseContext; import p.studio.compiler.models.BuilderPipelineContext; +import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.compiler.workspaces.PipelineStage; import p.studio.utilities.logs.LogAggregator; @@ -23,10 +24,28 @@ public class FrontendPhasePipelineStage implements PipelineStage { final var projectTable = ctx.resolvedWorkspace.graph().projectTable(); final var fileTable = ctx.fileTable; final var frontendPhaseContext = new FrontendPhaseContext(projectTable, fileTable, ctx.resolvedWorkspace.stack()); + final var diagnostics = DiagnosticSink.empty(); final var issues = BuildingIssueSink.empty(); - ctx.irBackend = service.get().compile(frontendPhaseContext, logs, issues); + ctx.irBackend = service.get().compile(frontendPhaseContext, diagnostics, logs, issues); logs.using(log).debug("IR Backend: " + ctx.irBackend); logs.using(log).debug("Frontend phase completed successfully!"); + adaptDiagnostics(diagnostics, issues); return issues; } + + private void adaptDiagnostics( + final DiagnosticSink diagnostics, + final BuildingIssueSink issues) { + for (final var diagnostic : diagnostics) { + final var span = diagnostic.getSpan(); + issues.report(builder -> builder + .error(diagnostic.getSeverity().isError()) + .message("[BUILD] %s :: %s @ %s:[%d,%d)".formatted( + diagnostic.getCode(), + diagnostic.getMessage(), + span.getFileId(), + span.getStart(), + span.getEnd()))); + } + } } diff --git a/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/services/FrontendPhaseService.java b/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/services/FrontendPhaseService.java index 88943f3a..371ecedb 100644 --- a/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/services/FrontendPhaseService.java +++ b/prometeu-compiler/prometeu-frontend-api/src/main/java/p/studio/compiler/services/FrontendPhaseService.java @@ -3,8 +3,13 @@ package p.studio.compiler.services; import p.studio.compiler.messages.BuildingIssueSink; import p.studio.compiler.messages.FrontendPhaseContext; import p.studio.compiler.models.IRBackend; +import p.studio.compiler.source.diagnostics.DiagnosticSink; import p.studio.utilities.logs.LogAggregator; public interface FrontendPhaseService { - IRBackend compile(FrontendPhaseContext request, LogAggregator logs, BuildingIssueSink empty); + IRBackend compile( + FrontendPhaseContext request, + DiagnosticSink diagnostics, + LogAggregator logs, + BuildingIssueSink issues); }