Skip to content

Commit 65723c5

Browse files
committed
Remove block mask from analyze
1 parent d081f68 commit 65723c5

File tree

2 files changed

+26
-48
lines changed

2 files changed

+26
-48
lines changed

analyze.go

Lines changed: 16 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -158,28 +158,6 @@ func analyze(fname string, stmt *Directive, term string, ctx blockCtx, options *
158158
continue
159159
}
160160

161-
// check if the directive is a lua block
162-
////nolint:ineffassign
163-
if options.LexOptions.ExternalLexers != nil {
164-
for _, lexer := range options.LexOptions.ExternalLexers {
165-
if _, ok := lexer.(*LuaLexer); ok {
166-
if (mask&ngxConfBlock) != 0 && term != ";" { // lua block end with ; not {
167-
what = fmt.Sprintf(`Lua directive "%s" has no opening "{"`, stmt.Directive)
168-
continue
169-
}
170-
// *_by_lua_block takes ngxConfNoArgs, set_by_lua_block: ngxConfTake1
171-
// but parse takes a block as an extra argument and we need to +1
172-
if ((mask&ngxConfNoArgs) != 0 && len(stmt.Args) == 1) ||
173-
((mask&ngxConfTake1) != 0 && len(stmt.Args) == 2) {
174-
return nil
175-
} else {
176-
what = fmt.Sprintf(`invalid number of arguments in "%s" directive`, stmt.Directive)
177-
continue
178-
}
179-
}
180-
}
181-
}
182-
183161
// if the directive isn't a block but should be according to the mask
184162
if (mask&ngxConfBlock) != 0 && term != "{" {
185163
what = fmt.Sprintf(`directive "%s" has no opening "{"`, stmt.Directive)
@@ -2614,7 +2592,7 @@ var LuaDirectives = map[string][]uint{
26142592
ngxHTTPMainConf | ngxConfTake1,
26152593
},
26162594
"init_by_lua_block": {
2617-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2595+
ngxHTTPMainConf | ngxConfTake1,
26182596
},
26192597
"init_by_lua_file": {
26202598
ngxHTTPMainConf | ngxConfTake1,
@@ -2623,13 +2601,13 @@ var LuaDirectives = map[string][]uint{
26232601
ngxHTTPMainConf | ngxConfTake1,
26242602
},
26252603
"init_worker_by_lua_block": {
2626-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2604+
ngxHTTPMainConf | ngxConfTake1,
26272605
},
26282606
"init_worker_by_lua_file": {
26292607
ngxHTTPMainConf | ngxConfTake1,
26302608
},
26312609
"exit_worker_by_lua_block": {
2632-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2610+
ngxHTTPMainConf | ngxConfTake1,
26332611
},
26342612
"exit_worker_by_lua_file": {
26352613
ngxHTTPMainConf | ngxConfTake1,
@@ -2638,7 +2616,7 @@ var LuaDirectives = map[string][]uint{
26382616
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConf2More,
26392617
},
26402618
"set_by_lua_block": {
2641-
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1 | ngxConfBlock,
2619+
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake2,
26422620
},
26432621
"set_by_lua_file": {
26442622
ngxHTTPSrvConf | ngxHTTPSifConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConf2More,
@@ -2647,13 +2625,13 @@ var LuaDirectives = map[string][]uint{
26472625
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26482626
},
26492627
"content_by_lua_block": {
2650-
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2628+
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26512629
},
26522630
"content_by_lua_file": {
26532631
ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26542632
},
26552633
"server_rewrite_by_lua_block": {
2656-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2634+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
26572635
},
26582636
"server_rewrite_by_lua_file": {
26592637
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
@@ -2662,7 +2640,7 @@ var LuaDirectives = map[string][]uint{
26622640
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26632641
},
26642642
"rewrite_by_lua_block": {
2665-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2643+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26662644
},
26672645
"rewrite_by_lua_file": {
26682646
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2671,7 +2649,7 @@ var LuaDirectives = map[string][]uint{
26712649
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26722650
},
26732651
"access_by_lua_block": {
2674-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2652+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26752653
},
26762654
"access_by_lua_file": {
26772655
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2680,7 +2658,7 @@ var LuaDirectives = map[string][]uint{
26802658
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26812659
},
26822660
"header_filter_by_lua_block": {
2683-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2661+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26842662
},
26852663
"header_filter_by_lua_file": {
26862664
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2689,7 +2667,7 @@ var LuaDirectives = map[string][]uint{
26892667
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26902668
},
26912669
"body_filter_by_lua_block": {
2692-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2670+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26932671
},
26942672
"body_filter_by_lua_file": {
26952673
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
@@ -2698,13 +2676,13 @@ var LuaDirectives = map[string][]uint{
26982676
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
26992677
},
27002678
"log_by_lua_block": {
2701-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfBlock | ngxConfNoArgs,
2679+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
27022680
},
27032681
"log_by_lua_file": {
27042682
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfTake1,
27052683
},
27062684
"balancer_by_lua_block": {
2707-
ngxHTTPUpsConf | ngxConfBlock | ngxConfNoArgs,
2685+
ngxHTTPUpsConf | ngxConfTake1,
27082686
},
27092687
"balancer_by_lua_file": {
27102688
ngxHTTPUpsConf | ngxConfTake1,
@@ -2713,25 +2691,25 @@ var LuaDirectives = map[string][]uint{
27132691
ngxHTTPMainConf | ngxHTTPSrvConf | ngxHTTPLocConf | ngxHTTPLifConf | ngxConfFlag,
27142692
},
27152693
"ssl_client_hello_by_lua_block": {
2716-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2694+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
27172695
},
27182696
"ssl_client_hello_by_lua_file": {
27192697
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
27202698
},
27212699
"ssl_certificate_by_lua_block": {
2722-
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfBlock | ngxConfNoArgs,
2700+
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
27232701
},
27242702
"ssl_certificate_by_lua_file": {
27252703
ngxHTTPMainConf | ngxHTTPSrvConf | ngxConfTake1,
27262704
},
27272705
"ssl_session_fetch_by_lua_block": {
2728-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2706+
ngxHTTPMainConf | ngxConfTake1,
27292707
},
27302708
"ssl_session_fetch_by_lua_file": {
27312709
ngxHTTPMainConf | ngxConfTake1,
27322710
},
27332711
"ssl_session_store_by_lua_block": {
2734-
ngxHTTPMainConf | ngxConfBlock | ngxConfNoArgs,
2712+
ngxHTTPMainConf | ngxConfTake1,
27352713
},
27362714
"ssl_session_store_by_lua_file": {
27372715
ngxHTTPMainConf | ngxConfTake1,

analyze_test.go

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2050,7 +2050,7 @@ func TestAnalyze_lua(t *testing.T) {
20502050
"set_by_lua_block ok": {
20512051
&Directive{
20522052
Directive: "set_by_lua_block",
2053-
Args: []string{"$res", "{ return tonumber(ngx.var.foo) + 1 }"},
2053+
Args: []string{"$res", "return tonumber(ngx.var.foo) + 1"},
20542054
Line: 5,
20552055
},
20562056
blockCtx{"http", "server"},
@@ -2059,11 +2059,11 @@ func TestAnalyze_lua(t *testing.T) {
20592059
"set_by_lua_block not ok no return value": {
20602060
&Directive{
20612061
Directive: "set_by_lua_block",
2062-
Args: []string{"{ return tonumber(ngx.var.foo) + 1 }"},
2062+
Args: []string{"return tonumber(ngx.var.foo) + 1"},
20632063
Line: 5,
20642064
},
20652065
blockCtx{"http", "server"},
2066-
false,
2066+
true,
20672067
},
20682068
"content_by_lua ok": {
20692069
&Directive{
@@ -2074,31 +2074,31 @@ func TestAnalyze_lua(t *testing.T) {
20742074
blockCtx{"http", "location"},
20752075
false,
20762076
},
2077-
"content_by_lua not ok": {
2077+
"content_by_lua not ok stream": {
20782078
&Directive{
20792079
Directive: "content_by_lua",
20802080
Args: []string{"'ngx.say('I need no extra escaping here, for example: \r\nblah')'"},
20812081
Line: 5,
20822082
},
2083-
blockCtx{"http", "location"},
2083+
blockCtx{"stream"},
20842084
true,
20852085
},
20862086
"content_by_lua_block ok": {
20872087
&Directive{
20882088
Directive: "content_by_lua_block",
2089-
Args: []string{"{ngx.say('I need no extra escaping here, for example: \r\nblah')}"},
2089+
Args: []string{"ngx.say('I need no extra escaping here, for example: \r\nblah')"},
20902090
Line: 5,
20912091
},
2092-
blockCtx{"http", "server","location"},
2092+
blockCtx{"http", "location", "if"},
20932093
false,
20942094
},
2095-
"content_by_lua_block not ok": {
2095+
"content_by_lua_block not ok extra argument": {
20962096
&Directive{
20972097
Directive: "content_by_lua_block",
2098-
Args: []string{"{ngx.say('I need no extra escaping here, for example: \r\nblah')}"},
2098+
Args: []string{"1", "ngx.say('I need no extra escaping here, for example: \r\nblah')"},
20992099
Line: 5,
21002100
},
2101-
blockCtx{"http", "location"},
2101+
blockCtx{"http", "location", "if"},
21022102
true,
21032103
},
21042104
}

0 commit comments

Comments
 (0)