# XO0605: name is not `pub` in its module, or the std type is an opaque handle

Only `pub` declarations, fields, and methods are visible outside their module. Mark the declaration `pub` if it is part of the module's API, or use an exported function instead. Some std types are opaque handles with no visible fields; they cannot be built with a struct literal and are created by their constructor function. See core 1.5.

## Example

```xo
// lib/a.xo
fn hidden() -> Int { 1 }

// main/main.xo
use example.com/app/lib

fn f() -> Int { lib.hidden() }
```

## Fix

```xo
// lib/a.xo
pub fn hidden() -> Int { 1 }

// main/main.xo
use example.com/app/lib

fn f() -> Int { lib.hidden() }
```

Run `xo explain XO0605` for this text in a terminal, or see
[section 10.6 of the specification](../../spec/core/#106-diagnostic-codes).

