You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by sh...@apache.org on 2023/06/16 13:01:50 UTC

[daffodil-vscode] branch main updated: Throw parse errors

This is an automated email from the ASF dual-hosted git repository.

shanedell pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/daffodil-vscode.git


The following commit(s) were added to refs/heads/main by this push:
     new 818dfc1  Throw parse errors
818dfc1 is described below

commit 818dfc1ba2cdd931441e8dc7ea7753438cb7ae2f
Author: Shane Dell <sh...@gmail.com>
AuthorDate: Thu Jun 15 13:52:46 2023 -0400

    Throw parse errors
    
    - Update debugger to check if the parse errored. If it does it will throw the error.
    - Add some notes to the typescript for code that possibly be removed and moved.
    
    Closes #648
---
 .gitignore                                         |  3 +++
 .../org.apache.daffodil.debugger.dap/Parse.scala   | 29 ++++++++++++++++++----
 src/adapter/activateDaffodilDebug.ts               |  1 +
 src/adapter/debugAdapter.ts                        |  2 ++
 src/adapter/extension.ts                           |  3 +++
 5 files changed, 33 insertions(+), 5 deletions(-)

diff --git a/.gitignore b/.gitignore
index f1104d6..d05bd99 100644
--- a/.gitignore
+++ b/.gitignore
@@ -37,6 +37,9 @@ src/version.ts
 
 # scala metals vscode extension compiled folder
 .metals
+.bloop
+project
+metals.sbt
 
 # application build
 # todo;; the build logic needs refactored to write these elsewhere
diff --git a/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala b/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala
index bd74dbc..8ac32aa 100644
--- a/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala
+++ b/server/core/src/main/scala/org.apache.daffodil.debugger.dap/Parse.scala
@@ -50,6 +50,9 @@ import org.typelevel.log4cats.Logger
 import org.typelevel.log4cats.slf4j.Slf4jLogger
 import scala.collection.JavaConverters._
 import scala.util.Try
+import cats.effect.kernel.Resource.ExitCase.Errored
+import cats.effect.kernel.Resource.ExitCase.Canceled
+import cats.effect.kernel.Resource.ExitCase.Succeeded
 
 trait Parse {
 
@@ -97,12 +100,22 @@ object Parse {
 
             val parse =
               IO.interruptibleMany {
-                dp.parse(
+                val parse_res = dp.parse(
                   new InputSourceDataInputStream(data),
                   infosetOutputter
-                ) // WARNING: parse doesn't close the OutputStream, so closed below
-              }.guaranteeCase(outcome => Logger[IO].debug(s"parse finished: $outcome"))
-                .void
+                )
+
+                parse_res.isError match {
+                  case true =>
+                    throw new Error(
+                      parse_res.getDiagnostics
+                        .map(d => d.toString)
+                        .mkString("\n")
+                    )
+                  case _ => parse_res
+                }
+                // WARNING: parse doesn't close the OutputStream, so closed below
+              }.void
 
             stopper &> parse.guarantee(IO(os.close) *> done.set(true))
           }
@@ -731,7 +744,13 @@ object Parse {
         .concurrently(
           Stream(
             Stream.eval(startup),
-            parsing.onFinalizeCase(ec => Logger[IO].debug(s"parsing: $ec")),
+            parsing.onFinalizeCase(ec =>
+              Logger[IO].debug(s"parsing: ${ec match {
+                  case Errored(_) => "Errored"
+                  case Canceled   => "Canceled"
+                  case Succeeded  => "Succeeded"
+                }}")
+            ),
             deliverParseData.onFinalizeCase {
               case ec @ Resource.ExitCase.Errored(e) =>
                 Logger[IO].warn(e)(s"deliverParseData: $ec")
diff --git a/src/adapter/activateDaffodilDebug.ts b/src/adapter/activateDaffodilDebug.ts
index f642db1..a1c57b2 100644
--- a/src/adapter/activateDaffodilDebug.ts
+++ b/src/adapter/activateDaffodilDebug.ts
@@ -474,6 +474,7 @@ export const workspaceFileAccessor: FileAccessor = {
   },
 }
 
+// TODO: Move to extension.ts
 class InlineDebugAdapterFactory
   implements vscode.DebugAdapterDescriptorFactory
 {
diff --git a/src/adapter/debugAdapter.ts b/src/adapter/debugAdapter.ts
index ba729f9..85ce9b8 100644
--- a/src/adapter/debugAdapter.ts
+++ b/src/adapter/debugAdapter.ts
@@ -1,3 +1,5 @@
+// NOTE: Might be able to removed. Only used for a test
+
 /*---------------------------------------------------------------------------------------------
  *  Copyright (c) Microsoft Corporation. All rights reserved.
  *  Licensed under the MIT License. See License.txt in the project root for license information.
diff --git a/src/adapter/extension.ts b/src/adapter/extension.ts
index c550d48..bedd81d 100644
--- a/src/adapter/extension.ts
+++ b/src/adapter/extension.ts
@@ -66,6 +66,7 @@ export function deactivate() {
   position.deactivate()
 }
 
+// NOTE: Can this be removed? Its never used we only ever use inline and provide no way to change it
 class DebugAdapterExecutableFactory
   implements vscode.DebugAdapterDescriptorFactory
 {
@@ -102,6 +103,7 @@ class DebugAdapterExecutableFactory
   }
 }
 
+// NOTE: Can this be removed? Its never used we only ever use inline and provide no way to change it
 class DaffodilDebugAdapterServerDescriptorFactory
   implements vscode.DebugAdapterDescriptorFactory
 {
@@ -140,6 +142,7 @@ class DaffodilDebugAdapterServerDescriptorFactory
   }
 }
 
+// NOTE: Can this be removed? Its never used we only ever use inline and provide no way to change it
 class DaffodilDebugAdapterNamedPipeServerDescriptorFactory
   implements vscode.DebugAdapterDescriptorFactory
 {