Files
Interpreter/tests/CMakeLists.txt
T
Admin 6f02c18bbb 实现 12.6 符号表与链接:全局定槽、引用解析、循环检测。
- Linker.h/cpp:收集导出(仅 gvl 文件顶层 VAR_GLOBAL、声明顺序定槽、重复名拒绝)
- VAR_EXTERNAL 接同一槽、类型一致;FB 实例必须先声明;字段存在性校验;函数调用图 DFS 环检测
- io.var 必须在 GVL;内建 TON/TOF/CTU 布局冻结;用户 FB 字段 = input/output/var(external 不是字段)
- 函数名赋值 = 结果值写入(用例 13 约定);dump_symbols 打印 name kind type address file
- linker_test:51 断言(用例 09/10/11/12/16/19 + line1/17 正例),ctest 7/7;20 用例扫描 15 绿 5 按期望拒
2026-08-21 11:14:03 +08:00

59 lines
1.9 KiB
CMake

# 自动化用例
add_test(NAME stcompiler_version
COMMAND STCompiler)
add_test(NAME bytecode_executor_version
COMMAND BytecodeExecutor)
# isa 合同测试:链接 isa 库,断言覆盖饱和/编解码/disasm/哈希/映像/sidecar
add_executable(isa_test
./src/isa_test.cpp)
target_link_libraries(isa_test PRIVATE isa)
add_test(NAME isa_roundtrip
COMMAND isa_test)
# compiler 库测试:toml schema、文件集合、工程哈希(REPO_ROOT 注入源目录绝对路径)
add_executable(compiler_test
./src/compiler_test.cpp)
target_link_libraries(compiler_test PRIVATE compiler)
target_compile_definitions(compiler_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME compiler_toml
COMMAND compiler_test)
# 词法测试:token 流 + 负例(REPO_ROOT 注入源目录绝对路径)
add_executable(lexer_test
./src/lexer_test.cpp)
target_link_libraries(lexer_test PRIVATE compiler)
target_compile_definitions(lexer_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME lexer_tokens
COMMAND lexer_test)
# 语法测试:line1 AST 结构 + 负例(REPO_ROOT 注入源目录绝对路径)
add_executable(parser_test
./src/parser_test.cpp)
target_link_libraries(parser_test PRIVATE compiler)
target_compile_definitions(parser_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME parser_syntax
COMMAND parser_test)
# 链接测试:用例 09/10/11/12/16/19 + line1 正例(REPO_ROOT 注入源目录绝对路径)
add_executable(linker_test
./src/linker_test.cpp)
target_link_libraries(linker_test PRIVATE compiler)
target_compile_definitions(linker_test PRIVATE
REPO_ROOT="${CMAKE_SOURCE_DIR}")
add_test(NAME linker_links
COMMAND linker_test)