parser, checker: allow lambdas anywhere anonymous functions are expected #3070
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Sanitized CI | |
## Running these jobs is slow (over ~1 hour, sometimes even 2) | |
## so we run them only when there is a chance that the generated | |
## C code could have changed, or for some critical vlib modules, | |
## like `builtin`, `os`, `sync`, where they have demonstrated | |
## their usefulness by catching actual very hard to find bugs. | |
## The cost of this selective running is delayed feedback when | |
## there are bugs in other V modules. | |
## The positive is *much faster CI runs* for most V contributors, | |
## that make PRs that are not concerning V itself, or the critical | |
## V modules. | |
on: | |
push: | |
paths: | |
- '!**' | |
- '!**.md' | |
- '!**.yml' | |
- 'cmd/tools/vtest*' | |
- 'cmd/tools/builders/**.v' | |
- 'vlib/builtin/**.v' | |
- 'vlib/strconv/**.v' | |
- 'vlib/strings/**.v' | |
- 'vlib/math/**.v' | |
- 'vlib/math/big/**.v' | |
- 'vlib/arrays/**.v' | |
- 'vlib/datatypes/**.v' | |
- 'vlib/os/**.v' | |
- 'vlib/sync/**.v' | |
- 'vlib/v/tests/**.v' | |
- 'vlib/v/ast/**.v' | |
- 'vlib/v/scanner/**.v' | |
- 'vlib/v/parser/**.v' | |
- 'vlib/v/checker/**.v' | |
- 'vlib/v/gen/c/**.v' | |
- 'vlib/v/builder/**.v' | |
- 'vlib/v/cflag/**.v' | |
- 'vlib/v/live/**.v' | |
- 'vlib/v/util/**.v' | |
- 'vlib/v/markused/**.v' | |
- 'vlib/v/preludes/**.v' | |
- 'vlib/v/embed_file/**.v' | |
pull_request: | |
paths: | |
- '!**' | |
- 'cmd/tools/vtest*' | |
- 'cmd/tools/builders/**.v' | |
- 'vlib/builtin/**.v' | |
- 'vlib/strconv/**.v' | |
- 'vlib/strings/**.v' | |
- 'vlib/math/**.v' | |
- 'vlib/math/big/**.v' | |
- 'vlib/arrays/**.v' | |
- 'vlib/datatypes/**.v' | |
- 'vlib/os/**.v' | |
- 'vlib/sync/**.v' | |
- 'vlib/v/tests/**.v' | |
- 'vlib/v/ast/**.v' | |
- 'vlib/v/scanner/**.v' | |
- 'vlib/v/parser/**.v' | |
- 'vlib/v/checker/**.v' | |
- 'vlib/v/gen/c/**.v' | |
- 'vlib/v/builder/**.v' | |
- 'vlib/v/cflag/**.v' | |
- 'vlib/v/live/**.v' | |
- 'vlib/v/util/**.v' | |
- 'vlib/v/markused/**.v' | |
- 'vlib/v/preludes/**.v' | |
- 'vlib/v/embed_file/**.v' | |
concurrency: | |
group: build-sanitized-${{ github.event.pull_request.number || github.sha }} | |
cancel-in-progress: true | |
jobs: | |
tests-sanitize-undefined-clang: | |
runs-on: ubuntu-20.04 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
sudo apt-get update | |
sudo apt-get install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
sudo apt-get install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=undefined) | |
run: ./v -cflags "-fsanitize=undefined" -o v2 cmd/v && ./v2 -cflags -fsanitize=undefined test-self | |
- name: Build examples (V compiled with -fsanitize=undefined) | |
run: ./v2 build-examples | |
tests-sanitize-undefined-gcc: | |
runs-on: ubuntu-20.04 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc gcc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=undefined) | |
run: ./v -cflags "-fsanitize=undefined" -o v2 cmd/v && ./v2 -cflags -fsanitize=undefined test-self | |
- name: Build examples (V compiled with -fsanitize=undefined) | |
run: ./v2 build-examples | |
tests-sanitize-address-clang: | |
runs-on: ubuntu-20.04 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
sudo apt-get install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v -cflags "-fsanitize=address,pointer-compare,pointer-subtract" test-self | |
- name: Self tests (V compiled with -fsanitize=address) | |
run: | |
./v -cflags -fsanitize=address -o v cmd/v && | |
ASAN_OPTIONS=detect_leaks=0 ./v -cc tcc test-self -asan-compiler | |
- name: Build examples (V compiled with -fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v build-examples | |
tests-sanitize-address-msvc: | |
runs-on: windows-2019 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc msvc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build | |
run: | | |
echo %VFLAGS% | |
echo $VFLAGS | |
.\make.bat -msvc | |
.\v.exe self | |
- name: Ensure code is well formatted | |
run: | | |
.\v.exe fmt -verify vlib/builtin/ vlib/v/scanner/ vlib/v/parser/ vlib/v/gen/ | |
## TODO: check to see why `v test-cleancode` does not work with msvc on windows | |
## - name: Install dependencies | |
## run: | | |
## .\v.exe setup-freetype | |
## .\.github\workflows\windows-install-sqlite.bat | |
## - name: Self tests (TODO: /fsanitize=address) | |
## run: | | |
## .\v.exe -cflags "/fsanitize=address" test-self | |
tests-sanitize-address-gcc: | |
runs-on: ubuntu-20.04 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc gcc | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
sudo apt-get install clang | |
- name: Build V | |
run: make && ./v -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v -cflags -fsanitize=address test-self | |
- name: Self tests (V compiled with -fsanitize=address) | |
run: | |
./v -cflags -fsanitize=address,pointer-compare,pointer-subtract -o v cmd/v && | |
ASAN_OPTIONS=detect_leaks=0 ./v -cc tcc test-self -asan-compiler | |
- name: Build examples (V compiled with -fsanitize=address) | |
run: ASAN_OPTIONS=detect_leaks=0 ./v build-examples | |
tests-sanitize-memory-clang: | |
runs-on: ubuntu-20.04 | |
if: github.event_name != 'push' || github.event.ref == 'refs/heads/master' || github.event.repository.full_name != 'vlang/v' | |
timeout-minutes: 240 | |
env: | |
VFLAGS: -cc clang -gc none | |
VJOBS: 1 | |
VTEST_SHOW_START: 1 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install dependencies | |
run: | | |
sudo apt update | |
sudo apt-get install --quiet -y postgresql libpq-dev libssl-dev sqlite3 libsqlite3-dev valgrind | |
sudo apt-get install --quiet -y libfreetype6-dev libxi-dev libxcursor-dev libgl-dev | |
sudo apt-get install clang | |
- name: Build V | |
run: make && ./v -cc clang -cg -cstrict -o v cmd/v | |
- name: Ensure code is well formatted | |
run: ./v test-cleancode | |
- name: Self tests (-fsanitize=memory) | |
run: ./v -cflags -fsanitize=memory test-self | |
- name: Self tests (V compiled with -fsanitize=memory) | |
run: | | |
./v -cflags -fsanitize=memory -o v cmd/v | |
./v -cc tcc test-self -msan-compiler | |
- name: Build examples (V compiled with -fsanitize=memory) | |
run: ./v build-examples |