File tree Expand file tree Collapse file tree 4 files changed +60
-66
lines changed Expand file tree Collapse file tree 4 files changed +60
-66
lines changed Original file line number Diff line number Diff 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 属性
2372373 . ** ASSIGN_TO_CONST** - 赋值给 const 全局变量
238238
239239** P1 - 中优先级(作用域错误):**
240- 4 . ** UNDEFINED_IN_GLOBAL_SCOPE ** - 在显式 global 作用域内使用未声明变量
240+ 4 . ** VARIABLE_NOT_DECLARED ** - 在显式 global 作用域内使用未声明变量
241241
242242** P2 - 低优先级(警告):**
2432435 . ** POSSIBLE_GLOBAL_REDEFINITION** - 可能的跨文件重复初始化(警告)
@@ -266,7 +266,7 @@ global <const> PI = 3.14
266266PI = 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:基础作用域支持
2922921 . 实现隐式 ` global * ` 的跟踪
2932932 . 实现 global 声明使隐式 ` global * ` 失效
294- 3 . 添加 UNDEFINED_IN_GLOBAL_SCOPE 诊断
294+ 3 . 添加 VARIABLE_NOT_DECLARED 诊断
295295
296296### 阶段 2:属性支持
2972971 . 实现 const 属性的跟踪
Original file line number Diff line number Diff line change @@ -44,12 +44,10 @@ DIAG_AMBIGUITY_1 =
4444' Compute `{}` first. You may need to add brackets.'
4545DIAG_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 `{}`.'
4947ASSIGN_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).'
5351DIAG_EMPTY_BLOCK =
5452' Empty block.'
5553DIAG_DIAGNOSTICS =
Original file line number Diff line number Diff line change @@ -44,12 +44,10 @@ DIAG_AMBIGUITY_1 =
4444' 会优先运算 `{}`,你可能需要加个括号。'
4545DIAG_LOWERCASE_GLOBAL =
4646' 首字母小写的全局变量,你是否漏了 `local` 或是有拼写错误?'
47- GLOBAL_DUPLICATE_INIT =
48- ' 重复初始化全局变量 `{}`。'
4947ASSIGN_CONST_GLOBAL =
5048' 不能赋值给 <const> 全局变量 `{}`。'
51- UNDEFINED_IN_GLOBAL_SCOPE =
52- ' 未声明的全局变量 `{}`(当前已使用 global 语法声明作用域)。'
49+ VARIABLE_NOT_DECLARED =
50+ ' 未声明的变量 `{}`(当前已使用 global 语法声明作用域)。'
5351DIAG_EMPTY_BLOCK =
5452' 空代码块'
5553DIAG_DIAGNOSTICS =
Original file line number Diff line number Diff 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-
874822TEST [[
875823global <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
898846TEST [[
965913end
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}
You can’t perform that action at this time.
0 commit comments