| Typecheck does cross-platform typechecking of source code for all Go build |
| platforms. |
| |
| The primary benefit is speed: a full Kubernetes cross-build takes 20 minutes |
| and >40GB of RAM, while this takes under 2 minutes and <8GB of RAM. |
| |
| It uses Go's built-in parsing and typechecking libraries (go/parser and |
| go/types), which unfortunately are not what the go compiler uses. Occasional |
| mismatches will occur, but overall they correspond closely. |
| |
| Failures can be ignored if they don't block the build: |
| |
| Things go/types errors on that go build doesn't: |
| True errors (according to the spec): |
| These should be fixed whenever possible. Ignore if a fix isn't possible |
| or is in progress (e.g., vendored code). |
| - unused variables in closures |
| False errors: |
| These should be ignored and reported upstream if applicable. |
| - type checking mismatches between staging and generated types |
| Things go build fails on that we don't: |
| Please send examples of this to rmmh@ and extend this list. |
| - CGo errors, including syntax and linker errors. |