cgen: fix inline if expression returning closure (fixes #26595) #10594
Workflow file for this run
This file contains hidden or 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: Tools CI | |
| on: | |
| push: | |
| paths: | |
| - 'cmd/**' | |
| - '!cmd/tools/vpm/**' | |
| - 'vlib/**' | |
| - 'thirdparty/**' | |
| - '!**.md' | |
| - '**/tools_ci.yml' | |
| pull_request: | |
| paths: | |
| - 'cmd/**' | |
| - '!cmd/tools/vpm/**' | |
| - 'vlib/**' | |
| - 'thirdparty/**' | |
| - '!**.md' | |
| - '**/tools_ci.yml' | |
| concurrency: | |
| group: tools-${{ github.workflow }}-${{ github.ref == 'refs/heads/master' && github.sha || github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| tools-linux: | |
| runs-on: ubuntu-22.04 | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| cc: [tcc, gcc, clang] | |
| fail-fast: false | |
| env: | |
| VFLAGS: -cc ${{ matrix.cc }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build V | |
| run: make && ./v -showcc -o v cmd/v && ./v symlink && ./v doctor | |
| - name: Code in cmd/ is formatted | |
| run: ./v fmt -verify cmd/ | |
| - name: Check build-tools | |
| run: ./v -silent -N -W -check build-tools | |
| - name: Test tools | |
| run: ./v -silent test-self cmd | |
| - name: Test tools (-cstrict) | |
| if: ${{ matrix.cc != 'tcc' }} | |
| run: ./v -silent -W -cstrict test-self cmd | |
| - name: Test sanitized | |
| if: ${{ matrix.cc != 'tcc' }} | |
| run: | | |
| export VNATIVE_SKIP_LIBC_VV=1 | |
| if [[ ${{ matrix.cc }} == "clang" ]]; then | |
| cmd="./v -silent -cc clang -cflags -fsanitize=undefined test-self -ubsan-compiler cmd" | |
| echo "$cmd" && $cmd | |
| cmd="./v -silent -cc clang -cflags -fsanitize=memory test-self -msan-compiler cmd" | |
| echo "$cmd" && $cmd | |
| else | |
| cmd="./v -silent -cc gcc -cflags -fsanitize=thread test-self cmd" | |
| echo "$cmd" && $cmd | |
| cmd="./v -silent -cc gcc -cflags -fsanitize=address,leak,undefined,shift,shift-exponent,shift-base,integer-divide-by-zero,unreachable,vla-bound,null,return,signed-integer-overflow,bounds,bounds-strict,alignment,object-size,float-divide-by-zero,float-cast-overflow,nonnull-attribute,returns-nonnull-attribute,bool,enum,vptr test-self -asan-compiler cmd/tools" | |
| echo "$cmd" && $cmd | |
| ## cmd="./v -silent -cc gcc -cflags -fsanitize=kernel-address test-self -asan-compiler cmd" | |
| ## echo "$cmd" && $cmd | |
| fi | |
| tools-macos: | |
| runs-on: macos-14 | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| cc: [clang] | |
| fail-fast: false | |
| env: | |
| VFLAGS: -cc ${{ matrix.cc }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build V | |
| run: make && ./v -showcc -o v cmd/v && ./v symlink && ./v doctor | |
| - name: Check build-tools | |
| run: ./v -silent -N -W -check build-tools | |
| - name: Test tools | |
| run: ./v -silent test-self cmd | |
| - name: Test tools (-cstrict) | |
| run: ./v -silent -W -cstrict test-self cmd | |
| tools-windows: | |
| runs-on: windows-2025 | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| cc: [tcc, gcc, msvc] | |
| fail-fast: false | |
| env: | |
| VFLAGS: -cc ${{ matrix.cc }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Build V | |
| run: ./make.bat -${{ matrix.cc }} && ./v -o v2.exe cmd/v && ./v2 -showcc -o v.exe cmd/v && ./v symlink && ./v doctor | |
| - name: Check build tools | |
| run: ./v build-tools | |
| - name: Test tools | |
| run: ./v -silent test-self cmd | |
| - name: Test tools (-cstrict) | |
| if: ${{ matrix.cc == 'msvc' }} | |
| run: ./v -silent -W -cstrict test-self cmd | |
| tools-docker-ubuntu-musl: | |
| runs-on: ubuntu-24.04 | |
| timeout-minutes: 20 | |
| container: | |
| image: thevlang/vlang:ubuntu-build | |
| env: | |
| V_CI_MUSL: 1 | |
| V_CI_UBUNTU_MUSL: 1 | |
| VFLAGS: -cc musl-gcc -gc none | |
| volumes: | |
| - ${{github.workspace}}:/opt/vlang | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@v6 | |
| - name: Build V | |
| run: make && ./v -cg -o v cmd/v && ./v symlink | |
| - name: Ensure git commands can be used with no prompts on modern Git versions | |
| run: git config --global --add safe.directory /__w/v/v | |
| - name: Verify `v test` works | |
| run: | | |
| ./v cmd/tools/test_if_v_test_system_works.v | |
| ./cmd/tools/test_if_v_test_system_works | |
| - name: Check build tools | |
| run: ./v -silent -N -W -check build-tools | |
| - name: Test tools | |
| run: ./v -silent test-self cmd | |
| - name: Test tools (-cstrict) | |
| run: ./v -silent -W -cstrict test-self cmd | |
| tools-freebsd: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| cc: [tcc, gcc, clang] | |
| fail-fast: false | |
| env: | |
| VFLAGS: -cc ${{ matrix.cc }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Tests tools on FreeBSD with ${{ matrix.cc }} | |
| uses: cross-platform-actions/action@v0.32.0 | |
| with: | |
| operating_system: freebsd | |
| version: '15.0' | |
| memory: 4G | |
| shell: sh | |
| sync_files: runner-to-vm | |
| environment_variables: VFLAGS | |
| run: | | |
| sudo pkg install -y git sqlite3 gmake boehm-gc-threaded libiconv | |
| if [ "$VFLAGS" = "-cc gcc" ]; then | |
| sudo pkg install -y gcc | |
| fi | |
| # Mandatory: hostname not set in VM => some tests fail | |
| sudo hostname -s freebsd-ci | |
| echo "### OS infos" | |
| uname -a | |
| git config --global --add safe.directory . | |
| # Build V | |
| echo "### Build V" | |
| printf "VFLAGS = %s\n" "$VFLAGS" | |
| gmake && ./v -showcc -o v cmd/v && sudo ./v symlink && ./v doctor | |
| # Code in cmd/ is formatted | |
| echo "### Check code in cmd/ is formatted" | |
| ./v fmt -verify cmd/ | |
| # Check build-tools | |
| echo "### Check build tools" | |
| ./v -silent -N -W -check build-tools | |
| # Test tools | |
| echo "### Test tools" | |
| ./v -silent test-self cmd | |
| # Test tools (-cstrict) | |
| if [ "$VFLAGS" != "-cc tcc" ]; then | |
| echo "### Test tools (-cstrict)" | |
| ./v -silent -W -cstrict test-self cmd | |
| fi | |
| tools-openbsd: | |
| runs-on: ubuntu-latest | |
| timeout-minutes: 20 | |
| strategy: | |
| matrix: | |
| cc: [tcc, clang] | |
| fail-fast: false | |
| env: | |
| VFLAGS: -cc ${{ matrix.cc }} | |
| steps: | |
| - uses: actions/checkout@v6 | |
| - name: Tests tools on OpenBSD with ${{ matrix.cc }} | |
| uses: cross-platform-actions/action@v0.32.0 | |
| with: | |
| operating_system: openbsd | |
| version: '7.8' | |
| memory: 4G | |
| shell: sh | |
| sync_files: runner-to-vm | |
| environment_variables: VFLAGS | |
| run: | | |
| sudo pkg_add git sqlite3 gmake boehm-gc libiconv | |
| # Mandatory: hostname not set in VM => some tests fail | |
| sudo hostname -s openbsd-ci | |
| echo "### OS infos" | |
| uname -a | |
| git config --global --add safe.directory . | |
| # Build V | |
| echo "### Build V" | |
| printf "VFLAGS = %s\n" "$VFLAGS" | |
| gmake && ./v -showcc -o v cmd/v && sudo ./v symlink && ./v doctor | |
| # Code in cmd/ is formatted | |
| echo "### Check code in cmd/ is formatted" | |
| ./v fmt -verify cmd/ | |
| # Check build-tools | |
| echo "### Check build tools" | |
| ./v -silent -N -W -check build-tools | |
| # Test tools | |
| echo "### Test tools" | |
| ./v -silent test-self cmd | |
| # Test tools (-cstrict) | |
| if [ "$VFLAGS" != "-cc tcc" ]; then | |
| echo "### Test tools (-cstrict)" | |
| ./v -silent -W -cstrict test-self cmd | |
| fi |