[
https://issues.apache.org/jira/browse/DAFFODIL-2441?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Mike Beckerle reassigned DAFFODIL-2441:
---------------------------------------
Assignee: Mike McGann
> Compiling a non DFDL schema with warnings turned off results in an Abort
> ------------------------------------------------------------------------
>
> Key: DAFFODIL-2441
> URL: https://issues.apache.org/jira/browse/DAFFODIL-2441
> Project: Daffodil
> Issue Type: Bug
> Components: Front End
> Affects Versions: 3.0.0
> Reporter: Steve Lawrence
> Assignee: Mike McGann
> Priority: Minor
> Labels: beginner
>
> Say we accidentally try to compile a non-DFDL schema (i.e. a schema without
> the DFDL namespace prefix defined). In this case we get a warning like so:
> {code}
> [warning] Schema Definition Warning: Non-DFDL Schema file ignored. Does not
> have DFDL namespace definition on schema root element.
> ...
> {code}
> In this case, we simply do not generate a parser, and the warning alerts that
> user as to why.
> But if we try to compile the same schema with warinings disabled (i.e.
> suppressSchemaDefinitionWarnings=all), then we get the following invariant:
> {code}
> org.apache.daffodil.exceptions.Abort: Invariant broken: diags.length.>(0)
> org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
> org.apache.daffodil.compiler.Compiler.org$apache$daffodil$compiler$Compiler$$compileSourceInternal(Compiler.scala:332)
> org.apache.daffodil.compiler.Compiler$.org$apache$daffodil$compiler$Compiler$$compileSourceSynchronizer(Compiler.scala:367)
> org.apache.daffodil.compiler.Compiler.compileSource(Compiler.scala:314)
> at org.apache.daffodil.exceptions.Assert$.abort(Assert.scala:129)
> at
> org.apache.daffodil.compiler.Compiler.org$apache$daffodil$compiler$Compiler$$compileSourceInternal(Compiler.scala:332)
> at
> org.apache.daffodil.compiler.Compiler$.org$apache$daffodil$compiler$Compiler$$compileSourceSynchronizer(Compiler.scala:367)
> at
> org.apache.daffodil.compiler.Compiler.compileSource(Compiler.scala:314)
> {code}
> This assertion is hit if the processor factory returns an error during
> compilation (which occurs in this case because we don't have a DFDL schema)
> but does not have any diagnostics related to the error. In this case, we
> don't have any diagnostics because we disabled the warning that we would
> normally output.
> Some potential solutions:
> 1. Change the SDW to an SDE, so the diagnostic cannot be ignored. This might
> seem reasonable, but it is allowed to import a non-DFDL schema into a DFDL
> schema, so we need to ensure that this case is either still an SDW or does
> not create a diagnostic. So there might be different cases where this is an
> SDE vs SDW.
> 1. Just remove this invariant check, since this is case where pf.isError can
> be true, but there is no related diagnostic. However, that might be unhelpful
> since it's not uncommon for users to suppress all warnings, and so the user
> gets no indication that a parser was not created.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)