From 940fe002fe1deabc54de26a26c2d140819cc2230 Mon Sep 17 00:00:00 2001 From: traceyyoshima Date: Wed, 12 Jul 2023 17:22:53 -0600 Subject: [PATCH] Revised TSCMapper to create ParseErrors. --- .../javascript/JavaScriptParser.java | 9 +------ .../javascript/internal/TSCMapper.java | 27 ++++++++++++------- 2 files changed, 18 insertions(+), 18 deletions(-) diff --git a/src/main/java/org/openrewrite/javascript/JavaScriptParser.java b/src/main/java/org/openrewrite/javascript/JavaScriptParser.java index cb51520d..10e50299 100644 --- a/src/main/java/org/openrewrite/javascript/JavaScriptParser.java +++ b/src/main/java/org/openrewrite/javascript/JavaScriptParser.java @@ -15,8 +15,6 @@ */ package org.openrewrite.javascript; -import lombok.AccessLevel; -import lombok.RequiredArgsConstructor; import org.openrewrite.ExecutionContext; import org.openrewrite.InMemoryExecutionContext; import org.openrewrite.Parser; @@ -67,12 +65,7 @@ public Stream parse(@NonNull String... sources) { public Stream parseInputs(Iterable sources, @Nullable Path relativeTo, ExecutionContext ctx) { ParsingExecutionContextView pctx = ParsingExecutionContextView.view(ctx); List outputs; - try (TSCMapper mapper = new TSCMapper(relativeTo, styles, pctx) { - @Override - protected void onParseFailure(Input input, Throwable error) { - ctx.getOnError().accept(error); - } - }) { + try (TSCMapper mapper = new TSCMapper(relativeTo, styles, pctx) {}) { for (Input source : sources) { mapper.add(source); } diff --git a/src/main/java/org/openrewrite/javascript/internal/TSCMapper.java b/src/main/java/org/openrewrite/javascript/internal/TSCMapper.java index 1a1bc120..7ef88e09 100644 --- a/src/main/java/org/openrewrite/javascript/internal/TSCMapper.java +++ b/src/main/java/org/openrewrite/javascript/internal/TSCMapper.java @@ -16,14 +16,17 @@ package org.openrewrite.javascript.internal; import lombok.Value; +import org.openrewrite.ExecutionContext; import org.openrewrite.Parser; import org.openrewrite.SourceFile; import org.openrewrite.internal.EncodingDetectingInputStream; import org.openrewrite.internal.lang.Nullable; import org.openrewrite.java.internal.JavaTypeCache; +import org.openrewrite.javascript.JavaScriptParser; import org.openrewrite.javascript.internal.tsc.TSCRuntime; -import org.openrewrite.javascript.tree.JS; import org.openrewrite.style.NamedStyles; +import org.openrewrite.tree.ParseError; +import org.openrewrite.tree.ParsingEventListener; import org.openrewrite.tree.ParsingExecutionContextView; import java.nio.charset.Charset; @@ -48,19 +51,19 @@ private static class SourceWrapper { private final Collection styles; - private final ParsingExecutionContextView pctx; + private final ExecutionContext ctx; private final Map sourcesByRelativePath = new LinkedHashMap<>(); - public TSCMapper(@Nullable Path relativeTo, Collection styles, ParsingExecutionContextView pctx) { + public TSCMapper(@Nullable Path relativeTo, Collection styles, ExecutionContext ctx) { JavetNativeBridge.init(); this.runtime = TSCRuntime.init(); this.relativeTo = relativeTo; this.styles = styles; - this.pctx = pctx; + this.ctx = ctx; } public void add(Parser.Input input) { - final EncodingDetectingInputStream is = input.getSource(pctx); + final EncodingDetectingInputStream is = input.getSource(ctx); final String inputSourceText = is.readFully(); final Path relativePath = input.getRelativePath(relativeTo); @@ -74,11 +77,9 @@ public void add(Parser.Input input) { sourcesByRelativePath.put(relativePath, source); } - protected abstract void onParseFailure(Parser.Input input, Throwable error); - public List build() { List compilationUnits = new ArrayList<>(sourcesByRelativePath.size()); - + ParsingEventListener parsingListener = ParsingExecutionContextView.view(ctx).getParsingListener(); Map sourceTextsForTSC = new LinkedHashMap<>(); this.sourcesByRelativePath.forEach((relativePath, sourceText) -> { sourceTextsForTSC.put(relativePath, sourceText.sourceText); @@ -97,8 +98,14 @@ public List build() { source.isCharsetBomMarked(), styles ); - JS.CompilationUnit cu = fileMapper.visitSourceFile(); - pctx.getParsingListener().parsed(source.getInput(), cu); + SourceFile cu; + try { + cu = fileMapper.visitSourceFile(); + parsingListener.parsed(source.getInput(), cu); + } catch (Throwable t) { + ctx.getOnError().accept(t); + cu = ParseError.build(JavaScriptParser.builder().build(), source.getInput(), relativeTo, ctx, t); + } compilationUnits.add(cu); } );