Static error XS0018 is defined as follows.
"If an option is required, it is a static error to invoke the step
without specifying a value for that option."
Section 6.1 Static Errors defines the meaning of static error.
"[Definition: A static error is one which can be detected before
pipeline evaluation is even attempted.] Examples of static errors
include cycles and incorrect specification of inputs and outputs.
Static errors are fatal and must be detected before any steps are
Invocation of a step is typically something performed during
evaluation. Therefore either this error should be a dynamic error, or
it should be redefined to avoid use of "invoke", e.g.
"If an option is required, it is a static error to specify the
invocation of a step without specifying a value for that option."
Test case "Test for err:XS0018 - 002" illustrates an example where this
error condition can only be detected at run time - when options are not
supplied when invoking the top-level pipeline. It is only when the host
language fails to pass an option which is required that the invocation
Good observation. The simplest solution probably is to remove the test err-s0018-002 (and replace it with err-s0018-003).
Having read the minutes of the WG teleconference, might I suggest adding new dynamic error codes to cover the case of (external) initiation of a pipeline, analogous to those in XSLT for initiating a transformation.
In 5.7.2 p:option, replace the first paragraph after the first
p:option syntax diagram with:
An option may be declared as required. If an option is required, it
is an error to invoke that step without specifying a value for that
option. For steps invoked within a pipeline, it is a static error
(err:XS0018) to specify an invocation without specifying a value for
a requried option. For pipelines invoked directly by an external
environment (informally, top-level pipelines), this error cannot be
detected statically. It is a dymamic error (err:XD????) to invoke
a pipeline without specifying a value for a required option.