Skip to content

Commit 98270a5

Browse files
committed
stash
1 parent a41acbc commit 98270a5

File tree

4 files changed

+60
-66
lines changed

4 files changed

+60
-66
lines changed

GLOBAL_SEMANTIC_REQUIREMENTS.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ print(x) --> 10 (外层全局 x 未改变)
157157

158158
## 需要添加的诊断类型
159159

160-
### 1. UNDEFINED_IN_GLOBAL_SCOPE
160+
### 1. VARIABLE_NOT_DECLARED
161161
在显式 global 作用域内使用未声明的变量。
162162

163163
```lua
@@ -237,7 +237,7 @@ global x <close> -- 错误:global 不能有 close 属性
237237
3. **ASSIGN_TO_CONST** - 赋值给 const 全局变量
238238

239239
**P1 - 中优先级(作用域错误):**
240-
4. **UNDEFINED_IN_GLOBAL_SCOPE** - 在显式 global 作用域内使用未声明变量
240+
4. **VARIABLE_NOT_DECLARED** - 在显式 global 作用域内使用未声明变量
241241

242242
**P2 - 低优先级(警告):**
243243
5. **POSSIBLE_GLOBAL_REDEFINITION** - 可能的跨文件重复初始化(警告)
@@ -266,7 +266,7 @@ global <const> PI = 3.14
266266
PI = 3.15 -- 错误!PI 是常量
267267
```
268268

269-
**UNDEFINED_IN_GLOBAL_SCOPE**:
269+
**VARIABLE_NOT_DECLARED**:
270270
```lua
271271
-- 检测逻辑:
272272
-- 1. 跟踪当前作用域是否有显式 global 声明
@@ -291,7 +291,7 @@ Y = 1 -- 错误!Y 未声明(隐式 global * 已失效)
291291
### 阶段 1:基础作用域支持
292292
1. 实现隐式 `global *` 的跟踪
293293
2. 实现 global 声明使隐式 `global *` 失效
294-
3. 添加 UNDEFINED_IN_GLOBAL_SCOPE 诊断
294+
3. 添加 VARIABLE_NOT_DECLARED 诊断
295295

296296
### 阶段 2:属性支持
297297
1. 实现 const 属性的跟踪

locale/en-us/script.lua

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,10 @@ DIAG_AMBIGUITY_1 =
4444
'Compute `{}` first. You may need to add brackets.'
4545
DIAG_LOWERCASE_GLOBAL =
4646
'Global variable in lowercase initial, Did you miss `local` or misspell it?'
47-
GLOBAL_DUPLICATE_INIT =
48-
'Duplicate initialization of global variable `{}`.'
4947
ASSIGN_CONST_GLOBAL =
5048
'Cannot assign to <const> global variable `{}`.'
51-
UNDEFINED_IN_GLOBAL_SCOPE =
52-
'Undefined global variable `{}` (global declarations active).'
49+
VARIABLE_NOT_DECLARED =
50+
'Variable `{}` not declared (global declarations active).'
5351
DIAG_EMPTY_BLOCK =
5452
'Empty block.'
5553
DIAG_DIAGNOSTICS =

locale/zh-cn/script.lua

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,10 @@ DIAG_AMBIGUITY_1 =
4444
'会优先运算 `{}`,你可能需要加个括号。'
4545
DIAG_LOWERCASE_GLOBAL =
4646
'首字母小写的全局变量,你是否漏了 `local` 或是有拼写错误?'
47-
GLOBAL_DUPLICATE_INIT =
48-
'重复初始化全局变量 `{}`。'
4947
ASSIGN_CONST_GLOBAL =
5048
'不能赋值给 <const> 全局变量 `{}`。'
51-
UNDEFINED_IN_GLOBAL_SCOPE =
52-
'未声明的全局变量 `{}`(当前已使用 global 语法声明作用域)。'
49+
VARIABLE_NOT_DECLARED =
50+
'未声明的变量 `{}`(当前已使用 global 语法声明作用域)。'
5351
DIAG_EMPTY_BLOCK =
5452
'空代码块'
5553
DIAG_DIAGNOSTICS =

test/parser_test/syntax_check.lua

Lines changed: 52 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -819,58 +819,6 @@ global <!<close>!> x
819819
type = 'GLOBAL_CLOSE_ATTRIBUTE',
820820
}
821821

822-
TEST [[
823-
global x = 1
824-
global <!x!> = 2
825-
]]
826-
{
827-
type = 'GLOBAL_DUPLICATE_INIT',
828-
}
829-
830-
-- Duplicate global definitions: multiple initializations of the same name
831-
TEST [[
832-
global x = 1
833-
global function <!x!>() end
834-
]]
835-
{
836-
type = 'GLOBAL_DUPLICATE_INIT',
837-
}
838-
839-
TEST [[
840-
global function f() end
841-
global function <!f!>() end
842-
]]
843-
{
844-
type = 'GLOBAL_DUPLICATE_INIT',
845-
}
846-
847-
TEST [[
848-
global <const> x = 1
849-
global <!x!> = 2
850-
]]
851-
{
852-
type = 'GLOBAL_DUPLICATE_INIT',
853-
}
854-
855-
TEST [[
856-
global x = 1
857-
global x
858-
global <!x!> = 2
859-
]]
860-
{
861-
type = 'GLOBAL_DUPLICATE_INIT',
862-
}
863-
864-
TEST [[
865-
global x = 1
866-
do
867-
global <!x!> = 2
868-
end
869-
]]
870-
{
871-
type = 'GLOBAL_DUPLICATE_INIT',
872-
}
873-
874822
TEST [[
875823
global <const> x = 1
876824
<!x!> = 2
@@ -892,7 +840,7 @@ global x
892840
<!y!> = 1
893841
]]
894842
{
895-
type = 'UNDEFINED_IN_GLOBAL_SCOPE',
843+
type = 'VARIABLE_NOT_DECLARED',
896844
}
897845

898846
TEST [[
@@ -965,5 +913,55 @@ do
965913
end
966914
]]
967915
{
968-
type = 'UNDEFINED_IN_GLOBAL_SCOPE',
916+
type = 'VARIABLE_NOT_DECLARED',
917+
}
918+
919+
TEST [[
920+
global X <const> = 1
921+
global X
922+
923+
X = 2
924+
]]
925+
(nil)
926+
927+
TEST [[
928+
global X
929+
930+
do
931+
global X <const> = 1
932+
end
933+
934+
X = 2
935+
]]
936+
(nil)
937+
938+
TEST [[
939+
do
940+
global X
941+
<!Y!> = 1
942+
end
943+
944+
Y = 1
945+
]]
946+
{
947+
type = 'VARIABLE_NOT_DECLARED',
948+
}
949+
950+
TEST [[
951+
global *
952+
953+
do
954+
global X
955+
do
956+
global X <const> = 10
957+
<!X!> = 1
958+
Y = 1
959+
end
960+
X = 1
961+
end
962+
963+
Y = 1
964+
]]
965+
{
966+
type = 'ASSIGN_CONST_GLOBAL',
969967
}

0 commit comments

Comments
 (0)