| java.lang.Object net.sf.saxon.expr.TypeChecker
TypeChecker | final public class TypeChecker (Code) | | This class provides Saxon's type checking capability. It contains a static method,
staticTypeCheck, which is called at compile time to perform type checking of
an expression. This class is never instantiated.
|
Method Summary | |
public static XPathException | ebvError(Expression exp, TypeHierarchy th) Test whether a given expression is capable of returning a value that has an effective boolean
value. | public static Expression | staticTypeCheck(Expression supplied, SequenceType req, boolean backwardsCompatible, RoleLocator role, StaticContext env) Check an expression against a required type, modifying it if necessary.
This method takes the supplied expression and checks to see whether it is
known statically to conform to the specified type. | public static Expression | strictTypeCheck(Expression supplied, SequenceType req, RoleLocator role, StaticContext env) Check an expression against a required type, modifying it if necessary. | public static DynamicError | testConformance(Value val, SequenceType requiredType, Configuration config) |
ebvError | public static XPathException ebvError(Expression exp, TypeHierarchy th)(Code) | | Test whether a given expression is capable of returning a value that has an effective boolean
value.
null if the expression is OK (optimistically), an exception object if not |
staticTypeCheck | public static Expression staticTypeCheck(Expression supplied, SequenceType req, boolean backwardsCompatible, RoleLocator role, StaticContext env) throws StaticError(Code) | | Check an expression against a required type, modifying it if necessary.
This method takes the supplied expression and checks to see whether it is
known statically to conform to the specified type. There are three possible
outcomes. If the static type of the expression is a subtype of the required
type, the method returns the expression unchanged. If the static type of
the expression is incompatible with the required type (for example, if the
supplied type is integer and the required type is string) the method throws
an exception (this results in a compile-time type error being reported). If
the static type is a supertype of the required type, then a new expression
is constructed that evaluates the original expression and checks the dynamic
type of the result; this new expression is returned as the result of the
method.
The rules applied are those for function calling in XPath, that is, the rules
that the argument of a function call must obey in relation to the signature of
the function. Some contexts require slightly different rules (for example,
operands of polymorphic operators such as "+"). In such cases this method cannot
be used.
Note that this method does not do recursive type-checking of the
sub-expressions.
Parameters: supplied - The expression to be type-checked Parameters: req - The required type for the context in which the expression is used Parameters: backwardsCompatible - True if XPath 1.0 backwards compatibility mode is applicable Parameters: role - Information about the role of the subexpression within thecontaining expression, used to provide useful error messages Parameters: env - The static context containing the types being checked. At presentthis is used only to locate a NamePool The original expression if it is type-safe, or the expressionwrapped in a run-time type checking expression if not. throws: net.sf.saxon.trans.StaticError - if the supplied type is statically inconsistent with therequired type (that is, if they have no common subtype) |
strictTypeCheck | public static Expression strictTypeCheck(Expression supplied, SequenceType req, RoleLocator role, StaticContext env) throws StaticError(Code) | | Check an expression against a required type, modifying it if necessary. This
is a variant of the method
TypeChecker.staticTypeCheck used for expressions that
declare variables in XQuery. In these contexts, conversions such as numeric
type promotion and atomization are not allowed.
Parameters: supplied - The expression to be type-checked Parameters: req - The required type for the context in which the expression is used Parameters: role - Information about the role of the subexpression within thecontaining expression, used to provide useful error messages Parameters: env - The static context containing the types being checked. At presentthis is used only to locate a NamePool The original expression if it is type-safe, or the expressionwrapped in a run-time type checking expression if not. throws: net.sf.saxon.trans.StaticError - if the supplied type is statically inconsistent with therequired type (that is, if they have no common subtype) |
testConformance | public static DynamicError testConformance(Value val, SequenceType requiredType, Configuration config)(Code) | | Test whether a given value conforms to a given type
Parameters: val - the value Parameters: requiredType - the required type Parameters: config - a DynamicError describing the error condition if the value doesn't conform;or null if it does. |
|
|