Class RoleDiagnostic


  • public class RoleDiagnostic
    extends java.lang.Object
    A RoleDiagnostic (formerly RoleLocator) identifies the role in which an expression is used, for example as the third argument of the concat() function. This information is stored in an ItemChecker or CardinalityChecker so that good diagnostics can be achieved when run-time type errors are detected.
    • Constructor Detail

      • RoleDiagnostic

        public RoleDiagnostic​(int kind,
                              java.lang.String operation,
                              int operand)
        Create information about the role of a subexpression within its parent expression
        Parameters:
        kind - the kind of parent expression, e.g. a function call or a variable reference
        operation - the name of the object in the parent expression, e.g. a function name or instruction name. A QName is provided in display form, prefix:local. For a string, the special format element/attribute is recognized, for example xsl:for-each/select, to identify the role of an XPath expression in a stylesheet.
        operand - Ordinal position of this subexpression, e.g. the position of an argument in a function call
    • Method Detail

      • setErrorCode

        public void setErrorCode​(java.lang.String code)
        Set the error code to be produced if a type error is detected
        Parameters:
        code - The error code
      • getErrorCode

        public java.lang.String getErrorCode()
        Get the error code to be produced if a type error is detected
        Returns:
        code The error code
      • isTypeError

        public boolean isTypeError()
        Ask whether the error code represents a type error
        Returns:
        true if the error is treated as a type error
      • getMessage

        public java.lang.String getMessage()
        Construct and return the error message indicating a type error
        Returns:
        the constructed error message
      • composeRequiredMessage

        public java.lang.String composeRequiredMessage​(ItemType requiredItemType)
        Construct the part of the message giving the required item type
        Parameters:
        requiredItemType - the item type required by the context of a particular expression
        Returns:
        a message of the form "Required item type of X is Y"
      • composeErrorMessage

        public java.lang.String composeErrorMessage​(ItemType requiredItemType,
                                                    ItemType suppliedItemType)
        Construct a full error message
        Parameters:
        requiredItemType - the item type required by the context of a particular expression
        suppliedItemType - the item type inferred by static analysis of an expression
        Returns:
        a message of the form "Required item type of A is R; supplied value has item type S"
      • composeErrorMessage

        public java.lang.String composeErrorMessage​(ItemType requiredItemType,
                                                    Expression supplied,
                                                    TypeHierarchy th)
        Construct a full error message, containing the supplied expression (for use when the error is reported statically)
        Parameters:
        requiredItemType - the item type required by the context of a particular expression
        supplied - the supplied expression
        th - the type hierarchy
        Returns:
        a message of the form "Required item type of A is R; supplied value has item type S"
      • composeErrorMessage

        public java.lang.String composeErrorMessage​(ItemType requiredItemType,
                                                    Item item,
                                                    TypeHierarchy th)
        Construct a full error message, displaying the item in error (suitable for use when a type error is reported dynamically)
        Parameters:
        requiredItemType - the item type required by the context of a particular expression
        item - the actual item in error. Must NOT be null (unlike earlier releases).
        th - the type hierarchy
        Returns:
        a message of the form "Required item type of A is R; supplied value has item type S"
      • composeErrorMessage

        public java.lang.String composeErrorMessage​(ItemType requiredItemType,
                                                    UType suppliedItemType)
        Construct a full error message, in terms of UTypes
        Parameters:
        requiredItemType - the item type required by the context of a particular expression
        suppliedItemType - the item type inferred by static analysis of an expression
        Returns:
        a message of the form "Required item type of A is R; supplied value has item type S"
      • save

        public java.lang.String save()
        Save as a string, for use when serializing the expression tree
        Returns:
        a string representation of the object
      • reconstruct

        public static RoleDiagnostic reconstruct​(java.lang.String in)
        Reconstruct from a saved string
        Parameters:
        in - the saved string representation of the RoleDiagnostic
        Returns:
        the RoleDiagnostic
      • ordinal

        public static java.lang.String ordinal​(int n)
        Get the ordinal representation of a number (used to identify which argument of a function is in error)
        Parameters:
        n - the cardinal number
        Returns:
        the ordinal representation