# TSR1502: '…<…>' needs a concrete type, but '…' is a type parameter. Take a 'Guard<…>' argument and call 'guard<User>()' at the call site.

> parse<T> is called with a type parameter, which has no concrete type to validate. Take a Guard<T> argument and call guard<User>() at the call site.

## What it means

Validators are generated from declarations at build time, so inside generic code `parse<T>` has no concrete type to validate.

## Example

```ts
// parse<T> inside generic code has no concrete type to validate.
import { parse } from "@ts-r.dev/guard";

function load<T>(raw: unknown): T {
  return parse<T>(raw); // @expect TSR1502
}
export const n: number = load<number>(1);
```

## How to fix

- Take a `Guard<T>` parameter and call its `parse`; at the call site pass `guard<User>()`.

Sound mode is defined in [design record 0007](https://github.com/Webb-Ventures/typescript-rust/blob/main/docs/design/0007-sound-mode.md) (accepted 2026-10-15).

Source: https://ts-r.dev/errors/TSR1502/
