# Error codes (/docs/diagnostics/codes)

Every diagnostic has a stable code. `marmot explain CODE` prints the same description in the terminal, and `marmot explain -json CODE` as JSON.

## Build errors [#build-errors]

| Code | What it means |
| --- | --- |
| [M0000](/docs/diagnostics/codes/m0000) | error |
| [M0001](/docs/diagnostics/codes/m0001) | syntax error |
| [M0002](/docs/diagnostics/codes/m0002) | undefined name |
| [M0003](/docs/diagnostics/codes/m0003) | no such field or method |
| [M0004](/docs/diagnostics/codes/m0004) | declared and not used |
| [M0005](/docs/diagnostics/codes/m0005) | imported and not used |
| [M0006](/docs/diagnostics/codes/m0006) | type mismatch |
| [M0007](/docs/diagnostics/codes/m0007) | mismatched types |
| [M0008](/docs/diagnostics/codes/m0008) | wrong number of return values |
| [M0009](/docs/diagnostics/codes/m0009) | wrong number of arguments |
| [M0010](/docs/diagnostics/codes/m0010) | missing return |
| [M0011](/docs/diagnostics/codes/m0011) | package not found |
| [M0012](/docs/diagnostics/codes/m0012) | assignment count mismatch |
| [M0013](/docs/diagnostics/codes/m0013) | no new variables |
| [M0014](/docs/diagnostics/codes/m0014) | does not implement interface |
| [M0015](/docs/diagnostics/codes/m0015) | redeclared |
| [M0016](/docs/diagnostics/codes/m0016) | invalid operation |
| [M0017](/docs/diagnostics/codes/m0017) | bad command line |
| [M0018](/docs/diagnostics/codes/m0018) | link error |
| [M0019](/docs/diagnostics/codes/m0019) | internal compiler error |
| [M0020](/docs/diagnostics/codes/m0020) | runtime panic |
| [M0021](/docs/diagnostics/codes/m0021) | fatal runtime error |
| [M0022](/docs/diagnostics/codes/m0022) | test failed |
| [M0023](/docs/diagnostics/codes/m0023) | import cycle |
| [M0024](/docs/diagnostics/codes/m0024) | name not exported |
| [M0025](/docs/diagnostics/codes/m0025) | not supported by marmot |
| [M0026](/docs/diagnostics/codes/m0026) | type argument does not satisfy constraint |
| [M0027](/docs/diagnostics/codes/m0027) | cannot infer type argument |
| [M0028](/docs/diagnostics/codes/m0028) | shadowed variable |
| [M0029](/docs/diagnostics/codes/m0029) | unknown struct field |

## Check findings and reports [#check-findings-and-reports]

| Code | What it means |
| --- | --- |
| [M0100](/docs/diagnostics/codes/m0100) | vet finding |
| [M0101](/docs/diagnostics/codes/m0101) | lint finding |
| [M0102](/docs/diagnostics/codes/m0102) | modernize suggestion |
| [M0103](/docs/diagnostics/codes/m0103) | not formatted |
| [M0104](/docs/diagnostics/codes/m0104) | gopls finding |
| [M0105](/docs/diagnostics/codes/m0105) | known vulnerability |
| [M0106](/docs/diagnostics/codes/m0106) | go.mod not tidy |
| [M0107](/docs/diagnostics/codes/m0107) | cross build failure |
| [M0108](/docs/diagnostics/codes/m0108) | unreachable function |
| [M0109](/docs/diagnostics/codes/m0109) | switch misses cases |
| [M0110](/docs/diagnostics/codes/m0110) | possible nil dereference |
| [M0111](/docs/diagnostics/codes/m0111) | heap allocation |