Ejemplo n.º 1
0
def check_reply_field(ctxt: IDLCompatibilityContext, old_field: syntax.Field,
                      new_field: syntax.Field, cmd_name: str, old_idl_file: syntax.IDLParsedSpec,
                      new_idl_file: syntax.IDLParsedSpec, old_idl_file_path: str,
                      new_idl_file_path: str):
    """Check compatibility between old and new reply field."""
    # pylint: disable=too-many-arguments
    if new_field.unstable:
        ctxt.add_new_reply_field_unstable_error(cmd_name, new_field.name, new_idl_file_path)
    if new_field.optional and not old_field.optional:
        ctxt.add_new_reply_field_optional_error(cmd_name, new_field.name, new_idl_file_path)

    if old_field.validator:
        # Not implemented.
        ctxt.add_reply_field_contains_validator_error(cmd_name, old_field.name, old_idl_file_path)
        ctxt.errors.dump_errors()
        sys.exit(1)
    if new_field.validator:
        # Not implemented.
        ctxt.add_reply_field_contains_validator_error(cmd_name, new_field.name, new_idl_file_path)
        ctxt.errors.dump_errors()
        sys.exit(1)

    old_field_type = get_field_type(old_field, old_idl_file, old_idl_file_path)
    new_field_type = get_field_type(new_field, new_idl_file, new_idl_file_path)

    check_reply_field_type(ctxt, old_field_type, new_field_type, cmd_name, old_field.name,
                           old_idl_file, new_idl_file, old_idl_file_path, new_idl_file_path)
Ejemplo n.º 2
0
def check_reply_field(ctxt: IDLCompatibilityContext, old_field: syntax.Field,
                      new_field: syntax.Field, cmd_name: str,
                      old_idl_file: syntax.IDLParsedSpec,
                      new_idl_file: syntax.IDLParsedSpec,
                      old_idl_file_path: str, new_idl_file_path: str):
    """Check compatibility between old and new reply field."""
    # pylint: disable=too-many-arguments
    if new_field.unstable:
        ctxt.add_new_reply_field_unstable_error(cmd_name, new_field.name,
                                                new_idl_file_path)
    if new_field.optional and not old_field.optional:
        ctxt.add_new_reply_field_optional_error(cmd_name, new_field.name,
                                                new_idl_file_path)

    if new_field.validator:
        if old_field.validator:
            if new_field.validator != old_field.validator:
                ctxt.add_reply_field_validators_not_equal_error(
                    cmd_name, new_field.name, new_idl_file_path)
        else:
            ctxt.add_reply_field_contains_validator_error(
                cmd_name, new_field.name, new_idl_file_path)

    old_field_type = get_field_type(old_field, old_idl_file, old_idl_file_path)
    new_field_type = get_field_type(new_field, new_idl_file, new_idl_file_path)

    if check_array_type(ctxt, "reply_field", old_field_type, new_field_type,
                        cmd_name, 'type', old_idl_file_path,
                        new_idl_file_path):
        old_field_type = old_field_type.element_type
        new_field_type = new_field_type.element_type

    check_reply_field_type(ctxt, old_field_type, new_field_type, cmd_name,
                           old_field.name, old_idl_file, new_idl_file,
                           old_idl_file_path, new_idl_file_path)