aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLi Jin <dragon-fly@qq.com>2026-01-29 08:44:29 +0800
committerLi Jin <dragon-fly@qq.com>2026-01-29 08:44:29 +0800
commit65c34527fd80b51f17a16e12f306649ce03398dc (patch)
treec144268a02a97510bb1e12354e4b3c56a5b3cab7
parent057f3e2894515babf648586316d324ccb62a352f (diff)
downloadyuescript-65c34527fd80b51f17a16e12f306649ce03398dc.tar.gz
yuescript-65c34527fd80b51f17a16e12f306649ce03398dc.tar.bz2
yuescript-65c34527fd80b51f17a16e12f306649ce03398dc.zip
Fixed lib path.
-rw-r--r--SPEC_SUMMARY.md308
-rw-r--r--TEST_RESULTS.md227
-rw-r--r--yuescript-dev-1.rockspec4
3 files changed, 2 insertions, 537 deletions
diff --git a/SPEC_SUMMARY.md b/SPEC_SUMMARY.md
deleted file mode 100644
index a5cfe23..0000000
--- a/SPEC_SUMMARY.md
+++ /dev/null
@@ -1,308 +0,0 @@
1# YueScript 测试案例补充说明
2
3## 概述
4本文档记录了为YueScript项目补充的新增测试案例文件,这些测试基于YueScript官方文档中描述的语言特性。
5
6## 新增测试文件列表
7
8### 1. 核心语言特性
9- **chaining_comparison_spec.yue** - 链式比较操作符测试
10 - 简单链式比较 (1 < 2 < 3)
11 - 复杂链式比较
12 - 变量链式比较
13 - 字符串比较
14 - != 操作符支持
15
16- **table_append_spec.yue** - 表追加操作符([]=)测试
17 - 单值追加
18 - 多值追加
19 - 使用展开操作符追加
20 - 循环中的追加
21 - 混合类型追加
22
23- **reverse_index_spec.yue** - 反向索引(#)测试
24 - 获取最后一个元素
25 - 获取倒数第N个元素
26 - 设置反向索引值
27 - 字符串反向索引
28 - 嵌套访问
29
30- **if_assignment_spec.yue** - if赋值(:=)测试
31 - 基本if赋值
32 - elseif支持
33 - 多返回值解构
34 - 变量作用域
35 - 与os.getenv配合
36
37- **while_assignment_spec.yue** - while赋值测试
38 - 基本while赋值
39 - 表迭代
40 - 字符串迭代
41 - break支持
42 - 解构支持
43
44- **varargs_assignment_spec.yue** - 可变参数赋值测试
45 - 基本可变参数赋值
46 - 访问可变参数元素
47 - pcall配合
48 - 保留nil值
49 - 嵌套函数
50
51### 2. 函数特性
52- **prefixed_return_spec.yue** - 前缀返回表达式测试
53 - 无显式返回时的默认值
54 - 嵌套循环中的返回
55 - 多种返回路径
56 - fat arrow支持
57 - 条件前缀
58
59- **named_varargs_spec.yue** - 命名可变参数测试
60 - 存储可变参数到命名表
61 - 处理nil值
62 - 循环访问
63 - 传递给其他函数
64 - 默认参数配合
65
66- **param_destructure_spec.yue** - 参数解构测试
67 - 简单对象解构
68 - 默认值支持
69 - 嵌套解构
70 - 数组参数
71 - fat arrow配合
72
73- **multiline_args_spec.yue** - 多行参数测试
74 - 跨行参数
75 - 嵌套函数调用
76 - 表字面量中
77 - 条件语句中
78 - 深层缩进
79
80### 3. 字符串和字面量
81- **yaml_string_spec.yue** - YAML多行字符串测试
82 - 基本YAML字符串
83 - 保留缩进
84 - 插值支持
85 - 特殊字符转义
86 - 函数中使用
87
88### 4. 数据结构
89- **table_comprehension_spec.yue** - 表推导式测试
90 - 简单表拷贝
91 - when子句过滤
92 - 值转换
93 - 键转换
94 - ipairs支持
95 - 嵌套推导式
96
97- **slicing_spec.yue** - 切片操作测试
98 - 基本切片语法
99 - 负索引
100 - 单元素切片
101 - 字符串切片
102 - 嵌套数组
103
104- **implicit_object_spec.yue** - 隐式对象测试
105 - * 符号列表
106 - - 符号列表
107 - 函数调用中的隐式对象
108 - return语句
109 - 嵌套结构
110 - 混合内容
111
112- **tables_advanced_spec.yue** - 高级表特性测试
113 - 隐式键语法
114 - 计算键
115 - 关键字键
116 - 数组语法混合内容
117 - 表展开
118 - 元表创建
119
120### 5. 操作符
121- **operator_advanced_spec.yue** - 高级操作符测试
122 - 复合赋值 (+=, -=, *=, /=, %=, etc.)
123 - nil合并赋值 (??=)
124 - 位运算复合赋值
125 - 链式赋值
126 - :: 方法链
127
128- **whitespace_spec.yue** - 空格和分隔符测试
129 - 分号语句分隔符
130 - 多行链式调用
131 - 一行多条语句
132 - 一致缩进
133 - 管道操作符配合
134
135### 6. 语句和结构
136- **in_expression_spec.yue** - in表达式测试
137 - 表成员检查
138 - 字符串成员
139 - 键检查
140 - 混合类型
141 - 取反
142 - 推导式中使用
143
144- **with_statement_spec.yue** - with语句测试
145 - 点号属性访问
146 - 链式访问
147 - 方法调用
148 - 嵌套with
149 - 表达式中使用
150
151- **do_statement_spec.yue** - do语句块测试
152 - 创建新作用域
153 - 返回值
154 - 嵌套do块
155 - 循环支持
156 - 表操作
157
158- **stub_spec.yue** - 函数占位符测试
159 - 空函数创建
160 - 表中的stub
161 - 回调函数
162 - 条件中的stub
163 - 链式调用
164
165### 7. 宏和属性
166- **advanced_macro_spec.yue** - 高级宏测试
167 - 编译时求值
168 - 带参数的宏
169 - 条件编译
170 - Lua代码插入
171 - 宏导出
172 - 内置宏 ($FILE, $LINE)
173 - 参数验证
174 - 宏生成宏
175
176- **const_attribute_spec.yue** - const属性测试
177 - 基本const声明
178 - 防止重新赋值
179 - 解构支持
180 - 全局const
181 - 函数作用域
182 - 表推导式中使用
183
184- **close_attribute_spec.yue** - close属性测试
185 - 基本close变量
186 - 元表语法
187 - 多个close作用域
188 - 资源管理
189 - 函数中使用
190 - 嵌套close
191 - 错误处理
192
193### 8. 高级函数特性
194- **functions_advanced_spec.yue** - 高级函数测试
195 - fat箭头(self)
196 - 参数默认值
197 - 多行参数
198 - 隐式返回
199 - 多返回值
200 - 函数作为参数
201 - 返回函数的函数
202 - 可变参数
203 - 参数解构
204
205## 测试覆盖的主要语言特性
206
207### 运算符
208- ✅ 链式比较 (1 < 2 < 3)
209- ✅ 表追加 ([]=)
210- ✅ 表展开 (...)
211- ✅ 反向索引 (#)
212- ✅ nil合并 (??)
213- ✅ 管道 (|>)
214- ✅ 存在性操作符 (?)
215- ✅ 复合赋值
216
217### 控制流
218- ✅ if赋值 (:=)
219- ✅ while赋值
220- ✅ in表达式
221- ✅ with语句
222- ✅ do语句块
223- ✅ try-catch (已有测试)
224- ✅ switch (已有测试)
225
226### 数据结构
227- ✅ 表推导式
228- ✅ 列表推导式 (已有测试)
229- ✅ 隐式对象 (*, -)
230- ✅ 表解构 (已有测试)
231- ✅ 切片操作
232
233### 函数
234- ✅ fat箭头
235- ✅ 参数默认值
236- ✅ 多行参数
237- ✅ 命名可变参数 (...t)
238- ✅ 参数解构
239- ✅ 前缀返回表达式
240- ✅ backcalls (已有测试)
241
242### 宏
243- ✅ 基本宏
244- ✅ 条件编译
245- ✅ Lua代码插入
246- ✅ 宏导出/导入
247- ✅ 内置宏
248- ✅ 宏验证
249
250### 属性
251- ✅ const属性
252- ✅ close属性
253- ✅ 元表操作
254
255### 字符串
256- ✅ YAML多行字符串
257- ✅ 字符串插值 (已有测试)
258- ✅ 转义序列 (已有测试)
259
260### 模块系统
261- ✅ import (已有测试)
262- ✅ export (已有测试)
263- ✅ import global (已有测试)
264
265## 测试文件统计
266
267- 新增测试文件: 23个
268- 总测试用例: 约500+个
269- 覆盖的语言特性: 40+个主要特性
270
271## 运行测试
272
273使用以下命令运行测试:
274
275```bash
276make test
277```
278
279或直接使用busted:
280
281```bash
282busted spec/inputs/test/
283```
284
285## 测试文件位置
286
287所有测试文件位于: `spec/inputs/test/`
288
289生成的Lua文件位于: `spec/outputs/test/`
290
291## 贡献者
292
293本测试补充基于YueScript官方文档 (doc/docs/doc/README.md) 中描述的所有语言特性。
294
295## 注意事项
296
2971. 部分测试可能需要特定的Lua版本支持
2982. 宏相关的测试需要YueScript编译器支持宏功能
2993. const和close属性在不同Lua版本行为可能不同
3004. 某些高级特性可能需要额外的依赖
301
302## 未来改进方向
303
304- [ ] 添加更多边缘情况测试
305- [ ] 增加性能基准测试
306- [ ] 添加错误处理测试
307- [ ] 覆盖更多元表特性
308- [ ] 测试与其他Lua库的互操作性
diff --git a/TEST_RESULTS.md b/TEST_RESULTS.md
deleted file mode 100644
index 76903d1..0000000
--- a/TEST_RESULTS.md
+++ /dev/null
@@ -1,227 +0,0 @@
1# YueScript 测试运行结果报告
2
3## 测试执行时间
42026-01-26
5
6## 编译和测试结果
7
8### ✅ 完全通过的测试 (6个)
9
10| 测试文件 | 测试数量 | 通过 | 失败 | 错误 | 待定 |
11|---------|---------|------|------|------|------|
12| chaining_comparison_spec.lua | 12 | 12 | 0 | 0 | 0 |
13| if_assignment_spec.lua | 13 | 13 | 0 | 0 | 0 |
14| prefixed_return_spec.lua | 5 | 5 | 0 | 0 | 0 |
15| while_assignment_spec.lua | 4 | 4 | 0 | 0 | 0 |
16| (总计) | **34** | **34** | **0** | **0** | **0** |
17
18### ⚠️ 部分通过的测试 (2个)
19
20| 测试文件 | 测试数量 | 通过 | 失败 | 错误 | 待定 | 备注 |
21|---------|---------|------|------|------|------|------|
22| in_expression_spec.lua | 16 | 12 | 4 | 0 | 0 | in表达式部分语法需要调整 |
23| yaml_string_spec.lua | 15 | 2 | 13 | 0 | 0 | YAML字符串语法兼容性问题 |
24
25### ❌ 编译失败的测试
26
27以下测试由于YueScript语法限制或编译器限制暂时无法编译:
28
291. **param_destructure_spec.yue** - 参数解构语法在某些情况下不被支持
302. **slicing_spec.yue** - 切片语法实现细节问题
313. **operator_advanced_spec.yue** - 部分高级操作符语法
324. **functions_advanced_spec.yue** - 某些高级函数特性
335. **varargs_assignment_spec.yue** - 可变参数赋值的部分语法
346. **table_append_spec.yue** - 表追加操作符的实现细节
357. **reverse_index_spec.yue** - 反向索引语法问题
368. **implicit_object_spec.yue** - 隐式对象语法细节
379. **table_comprehension_spec.yue** - 表推导式语法问题
3810. **tables_advanced_spec.yue** - 高级表特性
3911. **advanced_macro_spec.yue** - 宏功能编译问题
4012. **const_attribute_spec.yue** - const属性支持
4113. **close_attribute_spec.yue** - close属性支持
4214. **multiline_args_spec.yue** - 多行参数语法
4315. **with_statement_spec.yue** - with语句实现
4416. **do_statement_spec.yue** - do语句块
4517. **stub_spec.yue** - 函数占位符
4618. **whitespace_spec.yue** - 空格和分隔符
47
48## 成功测试的覆盖特性
49
50### 1. chaining_comparison_spec.lua (12/12 ✅)
51- ✅ 简单链式比较 (1 < 2 < 3)
52- ✅ 复杂链式比较
53- ✅ 变量链式比较
54- ✅ 混合比较
55- ✅ 字符串比较
56- ✅ != 操作符支持
57- ✅ 边界情况
58- ✅ 布尔结果
59- ✅ 函数调用中的链式比较
60- ✅ 取反操作
61- ✅ 混合操作符
62- ✅ 复杂表达式
63
64### 2. if_assignment_spec.lua (13/13 ✅)
65- ✅ 基本if赋值 (:=)
66- ✅ elseif支持
67- ✅ 多返回值解构
68- ✅ 变量作用域
69- ✅ 表解构
70- ✅ 数组解构
71- ✅ 链式赋值
72- ✅ 表达式上下文
73- ✅ os.getenv配合
74- ✅ 表访问
75- ✅ 函数调用结果
76- ✅ 嵌套赋值
77- ✅ false值处理
78
79### 3. prefixed_return_spec.lua (5/5 ✅)
80- ✅ 前缀返回值(无显式return)
81- ✅ 前缀nil返回
82- ✅ 前缀字符串返回
83- ✅ 前缀数字返回
84- ✅ 嵌套逻辑中的前缀返回
85
86### 4. while_assignment_spec.lua (4/4 ✅)
87- ✅ while循环中的赋值
88- ✅ 函数结果处理
89- ✅ nil退出循环
90- ✅ break支持
91
92### 5. in_expression_spec.lua (12/16 ✅)
93- ✅ 值在表中检查
94- ✅ 字符串检查
95- ✅ 表键检查
96- ✅ 空表处理
97- ✅ 条件中使用
98- ✅ 取反支持
99- ✅ 循环中使用
100- ✅ 复杂表达式
101- ✅ 表访问
102- ✅ 函数结果
103- ✅ nil值处理
104- ✅ 字符串键
105- ⚠️ 嵌套表 (4个失败)
106- ⚠️ 布尔值
107- ⚠️ 推导式使用
108- ⚠️ 表作为值
109
110### 6. yaml_string_spec.lua (2/15 ⚠️)
111- ✅ 基本YAML字符串
112- ✅ 保留缩进
113- ⚠️ 插值支持 (语法兼容性问题)
114- ⚠️ 复杂插值
115- ⚠️ 表达式
116- ⚠️ 函数中使用
117- ⚠️ 特殊字符转义
118- ⚠️ 空行处理
119- ⚠️ 多个插值
120- ⚠️ 引号处理
121- ⚠️ 换行符保留
122- ⚠️ 表访问插值
123- ⚠️ 函数调用插值
124- ⚠️ 嵌套结构
125
126## 总体统计
127
128### 编译成功的测试文件
129- **数量**: 6个
130- **测试用例总数**: 84个
131- **通过**: 69个 (82.1%)
132- **失败**: 15个 (17.9%)
133- **错误**: 0个
134- **待定**: 0个
135
136### 完全通过的测试文件
137- **数量**: 4个
138- **测试用例**: 34个
139- **通过率**: 100%
140
141## 语言特性验证
142
143### 已验证可用的特性 ✅
144
1451. **运算符**
146 - ✅ 链式比较 (1 < 2 < 3)
147 - ✅ != 作为 ~= 的别名
148 - ✅ 复杂链式表达式
149
1502. **控制流**
151 - ✅ if赋值 (:=)
152 - ✅ elseif与if赋值配合
153 - ✅ while赋值
154 - ✅ in表达式(部分)
155
1563. **函数**
157 - ✅ 前缀返回表达式
158 - ✅ 多返回值
159 - ✅ 参数解构(部分)
160 - ✅ 函数赋值
161
1624. **字符串**
163 - ✅ YAML多行字符串(基础)
164 - ⚠️ YAML字符串插值(兼容性问题)
165
166### 需要进一步调查的特性 ⚠️
167
1681. **表和数组**
169 - ⚠️ 表追加操作符 `[]=`
170 - ⚠️ 反向索引 `#`
171 - ⚠️ 切片操作
172 - ⚠️ 表推导式
173 - ⚠️ 隐式对象
174
1752. **高级特性**
176 - ⚠️ 参数解构(完整支持)
177 - ⚠️ 宏功能
178 - ⚠️ const/close属性
179 - ⚠️ 多行参数
180 - ⚠️ with语句
181 - ⚠️ do语句块
182
1833. **操作符**
184 - ⚠️ 复合赋值完整支持
185 - ⚠️ :: 方法链
186 - ⚠️ 空格和分隔符规则
187
188## 建议和后续工作
189
190### 短期改进
1911. 修复已编译测试中的失败用例
1922. 调整YAML字符串语法以匹配编译器实现
1933. 完善in表达式的测试用例
1944. 修复varargs_assignment_spec的编译问题
195
196### 中期目标
1971. 调查编译失败测试的根本原因
1982. 与YueScript编译器实现进行对比
1993. 更新测试用例以匹配实际语法支持
2004. 添加更多边缘情况测试
201
202### 长期规划
2031. 建立完整的语言特性测试套件
2042. 自动化测试流程
2053. 性能基准测试
2064. 兼容性测试(不同Lua版本)
207
208## 结论
209
210本次测试补充成功为YueScript项目添加了**23个新测试文件**,其中:
211- **4个测试文件完全通过** (34个测试用例)
212- **2个测试文件部分通过** (28个测试用例,15个失败)
213- **17个测试文件需要进一步调整**
214
215测试验证了以下核心YueScript特性:
216- ✅ 链式比较操作符
217- ✅ if/while赋值
218- ✅ 前缀返回表达式
219- ✅ 基础in表达式
220- ✅ YAML多行字符串(部分)
221
222这些测试为YueScript语言特性提供了良好的验证基础,并为未来的改进和开发提供了参考。
223
224---
225**生成时间**: 2026-01-26
226**测试环境**: Linux, YueScript编译器 (debug build)
227**测试框架**: busted 2.3.0
diff --git a/yuescript-dev-1.rockspec b/yuescript-dev-1.rockspec
index 6d61afd..1d69998 100644
--- a/yuescript-dev-1.rockspec
+++ b/yuescript-dev-1.rockspec
@@ -36,10 +36,10 @@ build = {
36 windows = { 36 windows = {
37 install = { 37 install = {
38 lib = { 38 lib = {
39 "build.luarocks/yue.dll" 39 "build.luarocks/Release/yue.dll"
40 }, 40 },
41 bin = { 41 bin = {
42 "build.luarocks/yue.exe" 42 "build.luarocks/Release/yue.exe"
43 } 43 }
44 } 44 }
45 } 45 }