summaryrefslogtreecommitdiff
path: root/offload/test/tools/offload-tblgen/default_returns.td
blob: 41949db7226acb5f5cfe3273456732d1cb4d2abe (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
// RUN: %offload-tblgen -gen-api -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-API
// RUN: %offload-tblgen -gen-entry-points -I %S/../../../liboffload/API %s | %fcheck-generic --check-prefix=CHECK-VALIDATION

// Check implicit returns are included in documentation and the validation
// wrappers where applicable

include "APIDefs.td"

def ol_foo_handle_t : Handle {
    let desc = "Example handle type";
}

def FunctionA : Function {
    let desc = "Function A description";
    let details = [ "Function A detailed information" ];
    let params = [
        Param<"uint32_t", "ParamValue", "A plain value parameter">,
        Param<"ol_foo_handle_t", "ParamHandle", "A handle parameter">,
        Param<"uint32_t*", "ParamPointer", "A pointer parameter">,
        Param<"uint32_t*", "ParamPointerOpt", "An optional pointer parameter", PARAM_OUT_OPTIONAL>
    ];
    let returns = [];
}

// CHECK-API: /// @returns
// CHECK-API: OL_RESULT_SUCCESS
// CHECK-API: OL_ERRC_INVALID_NULL_HANDLE
// CHECK-API-NEXT: `NULL == ParamHandle`
// CHECK-API: OL_ERRC_INVALID_NULL_POINTER
// CHECK-API-NEXT: `NULL == ParamPointer`
// CHECK-API-NOT: `NULL == ParamPointerOpt`

// CHECK-VALIDATION: FunctionA_val
// CHECK-VALIDATION: if (NULL == ParamHandle)
// CHECK-VALIDATION-NEXT: return createOffloadError(error::ErrorCode::INVALID_NULL_HANDLE, "validation failure: NULL == ParamHandle");
// CHECK-VALIDATION: if (NULL == ParamPointer)
// CHECK-VALIDATION-NEXT: return createOffloadError(error::ErrorCode::INVALID_NULL_POINTER, "validation failure: NULL == ParamPointer");
// CHECK-VALIDATION-NOT: if (NULL == ParamPointerOpt)