diff --git a/build.bat b/build.bat index 4eb1916..6582e0d 100644 --- a/build.bat +++ b/build.bat @@ -2,11 +2,11 @@ setlocal enabledelayedexpansion if "%1" == "test" ( - odin test tests -collection:src=src -debug -define:ODIN_TEST_THREADS=1 -define:ODIN_TEST_TRACK_MEMORY=false + odin test tests -collection:src=src -debug -define:ODIN_TEST_THREADS=1 -define:ODIN_TEST_TRACK_MEMORY=false -extra-linker-flags:"/STACK:4000000,2000000" ) else if "%1" == "single_test" ( - odin test tests -collection:src=src -define:ODIN_TEST_NAMES=%2 -define:ODIN_TEST_TRACK_MEMORY=false -debug + odin test tests -collection:src=src -define:ODIN_TEST_NAMES=%2 -define:ODIN_TEST_TRACK_MEMORY=false -debug -extra-linker-flags:"/STACK:4000000,2000000" ) else if "%1" == "debug" ( - odin build src\ -show-timings -microarch:native -collection:src=src -out:ols.exe -o:minimal -no-bounds-check -use-separate-modules -debug + odin build src\ -show-timings -microarch:native -collection:src=src -out:ols.exe -o:minimal -no-bounds-check -use-separate-modules -debug -extra-linker-flags:"/STACK:4000000,2000000" ) else ( - odin build src\ -show-timings -microarch:native -collection:src=src -out:ols.exe -o:speed -no-bounds-check -) + odin build src\ -show-timings -microarch:native -collection:src=src -out:ols.exe -o:speed -no-bounds-check -extra-linker-flags:"/STACK:4000000,2000000" +) diff --git a/ci.bat b/ci.bat index c8b3830..3ad6812 100644 --- a/ci.bat +++ b/ci.bat @@ -7,10 +7,10 @@ if "%1" == "CI" ( rem odin test tests -collection:src=src -define:ODIN_TEST_THREADS=1 rem if %errorlevel% neq 0 exit /b 1 - odin build src\ -collection:src=src -out:ols.exe -o:speed + odin build src\ -collection:src=src -out:ols.exe -o:speed -extra-linker-flags:"/STACK:4000000,2000000" call "tools/odinfmt/tests.bat" if %errorlevel% neq 0 exit /b 1 ) else ( - odin build src\ -collection:src=src -out:ols.exe -o:speed -no-bounds-check + odin build src\ -collection:src=src -out:ols.exe -o:speed -no-bounds-check -extra-linker-flags:"/STACK:4000000,2000000" ) \ No newline at end of file diff --git a/src/server/ast.odin b/src/server/ast.odin index 73c84cc..9780537 100644 --- a/src/server/ast.odin +++ b/src/server/ast.odin @@ -377,6 +377,16 @@ collect_when_stmt :: proc( for stmt in block.stmts { if when_stmt, ok := stmt.derived.(^ast.When_Stmt); ok { collect_when_stmt(exprs, file, file_tags, when_stmt, skip_private) + } else if foreign_decl, ok := stmt.derived.(^ast.Foreign_Block_Decl); ok { + if foreign_decl.body == nil { + continue + } + + if foreign_block, ok := foreign_decl.body.derived.(^ast.Block_Stmt); ok { + for foreign_stmt in foreign_block.stmts { + collect_value_decl(exprs, file, file_tags, foreign_stmt, skip_private) + } + } } else { collect_value_decl(exprs, file, file_tags, stmt, skip_private) } @@ -392,11 +402,19 @@ collect_when_stmt :: proc( for stmt in block.stmts { if when_stmt, ok := stmt.derived.(^ast.When_Stmt); ok { collect_when_stmt(exprs, file, file_tags, when_stmt, skip_private) + } else if foreign_decl, ok := stmt.derived.(^ast.Foreign_Block_Decl); ok { + if foreign_decl.body != nil { + if foreign_block, ok := foreign_decl.body.derived.(^ast.Block_Stmt); ok { + for foreign_stmt in foreign_block.stmts { + collect_value_decl(exprs, file, file_tags, foreign_stmt, skip_private) + } + } + } } else { collect_value_decl(exprs, file, file_tags, stmt, skip_private) } - } - } + } + } return } else_stmt = else_when.else_stmt