Skip to content

Commit fda5e96

Browse files
committed
run vint also for py/pycompiler.vim
1 parent 847601a commit fda5e96

File tree

2 files changed

+111
-97
lines changed

2 files changed

+111
-97
lines changed

Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ checkpy: all
2020
flake8 py
2121

2222
checkvim: all
23-
vint autoload
23+
vint autoload py/pycompiler.vim
2424

2525
test:
2626
test/run.sh

py/pycompiler.vim

Lines changed: 110 additions & 96 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,16 @@
11

22
call extend(s:, vimlparser#import())
33

4+
" Ignore undefined variable errors of vint
5+
" vint: -ProhibitUsingUndeclaredVariable
6+
let s:StringReader = s:StringReader
7+
let s:VimLParser = s:VimLParser
8+
let s:ExprParser = s:ExprParser
9+
let s:NIL = s:NIL
10+
" vint: +ProhibitUsingUndeclaredVariable
11+
412
let s:opprec = {}
13+
" vint: -ProhibitUsingUndeclaredVariable
514
let s:opprec[s:NODE_TERNARY] = 1
615
let s:opprec[s:NODE_OR] = 2
716
let s:opprec[s:NODE_AND] = 3
@@ -58,6 +67,7 @@ let s:opprec[s:NODE_IDENTIFIER] = 9
5867
let s:opprec[s:NODE_CURLYNAME] = 9
5968
let s:opprec[s:NODE_ENV] = 9
6069
let s:opprec[s:NODE_REG] = 9
70+
" vint: +ProhibitUsingUndeclaredVariable
6171

6272
" Reserved Python keywords (dict for faster lookup).
6373
let s:reserved_keywords = {
@@ -110,8 +120,8 @@ function s:PythonCompiler.__init__()
110120
endfunction
111121

112122
function s:PythonCompiler.out(...)
113-
if len(a:000) == 1
114-
if a:000[0] =~ '^)\+$'
123+
if len(a:000) ==# 1
124+
if a:000[0] =~# '^)\+$'
115125
let self.lines[-1] .= a:000[0]
116126
else
117127
call add(self.lines, self.indent[0] . a:000[0])
@@ -133,177 +143,181 @@ function s:PythonCompiler.decindent()
133143
call remove(self.indent, 0)
134144
endfunction
135145

146+
" vint: -ProhibitUsingUndeclaredVariable
136147
function s:PythonCompiler.compile(node)
137-
if a:node.type == s:NODE_TOPLEVEL
148+
if a:node.type ==# s:NODE_TOPLEVEL
138149
return self.compile_toplevel(a:node)
139-
elseif a:node.type == s:NODE_COMMENT
150+
elseif a:node.type ==# s:NODE_COMMENT
140151
return self.compile_comment(a:node)
141-
elseif a:node.type == s:NODE_EXCMD
152+
elseif a:node.type ==# s:NODE_EXCMD
142153
return self.compile_excmd(a:node)
143-
elseif a:node.type == s:NODE_FUNCTION
154+
elseif a:node.type ==# s:NODE_FUNCTION
144155
return self.compile_function(a:node)
145-
elseif a:node.type == s:NODE_DELFUNCTION
156+
elseif a:node.type ==# s:NODE_DELFUNCTION
146157
return self.compile_delfunction(a:node)
147-
elseif a:node.type == s:NODE_RETURN
158+
elseif a:node.type ==# s:NODE_RETURN
148159
return self.compile_return(a:node)
149-
elseif a:node.type == s:NODE_EXCALL
160+
elseif a:node.type ==# s:NODE_EXCALL
150161
return self.compile_excall(a:node)
151-
elseif a:node.type == s:NODE_LET
162+
elseif a:node.type ==# s:NODE_LET
152163
return self.compile_let(a:node)
153-
elseif a:node.type == s:NODE_UNLET
164+
elseif a:node.type ==# s:NODE_UNLET
154165
return self.compile_unlet(a:node)
155-
elseif a:node.type == s:NODE_LOCKVAR
166+
elseif a:node.type ==# s:NODE_LOCKVAR
156167
return self.compile_lockvar(a:node)
157-
elseif a:node.type == s:NODE_UNLOCKVAR
168+
elseif a:node.type ==# s:NODE_UNLOCKVAR
158169
return self.compile_unlockvar(a:node)
159-
elseif a:node.type == s:NODE_IF
170+
elseif a:node.type ==# s:NODE_IF
160171
return self.compile_if(a:node)
161-
elseif a:node.type == s:NODE_WHILE
172+
elseif a:node.type ==# s:NODE_WHILE
162173
return self.compile_while(a:node)
163-
elseif a:node.type == s:NODE_FOR
174+
elseif a:node.type ==# s:NODE_FOR
164175
return self.compile_for(a:node)
165-
elseif a:node.type == s:NODE_CONTINUE
176+
elseif a:node.type ==# s:NODE_CONTINUE
166177
return self.compile_continue(a:node)
167-
elseif a:node.type == s:NODE_BREAK
178+
elseif a:node.type ==# s:NODE_BREAK
168179
return self.compile_break(a:node)
169-
elseif a:node.type == s:NODE_TRY
180+
elseif a:node.type ==# s:NODE_TRY
170181
return self.compile_try(a:node)
171-
elseif a:node.type == s:NODE_THROW
182+
elseif a:node.type ==# s:NODE_THROW
172183
return self.compile_throw(a:node)
173-
elseif a:node.type == s:NODE_ECHO
184+
elseif a:node.type ==# s:NODE_ECHO
174185
return self.compile_echo(a:node)
175-
elseif a:node.type == s:NODE_ECHON
186+
elseif a:node.type ==# s:NODE_ECHON
176187
return self.compile_echon(a:node)
177-
elseif a:node.type == s:NODE_ECHOHL
188+
elseif a:node.type ==# s:NODE_ECHOHL
178189
return self.compile_echohl(a:node)
179-
elseif a:node.type == s:NODE_ECHOMSG
190+
elseif a:node.type ==# s:NODE_ECHOMSG
180191
return self.compile_echomsg(a:node)
181-
elseif a:node.type == s:NODE_ECHOERR
192+
elseif a:node.type ==# s:NODE_ECHOERR
182193
return self.compile_echoerr(a:node)
183-
elseif a:node.type == s:NODE_EXECUTE
194+
elseif a:node.type ==# s:NODE_EXECUTE
184195
return self.compile_execute(a:node)
185-
elseif a:node.type == s:NODE_TERNARY
196+
elseif a:node.type ==# s:NODE_TERNARY
186197
return self.compile_ternary(a:node)
187-
elseif a:node.type == s:NODE_OR
198+
elseif a:node.type ==# s:NODE_OR
188199
return self.compile_or(a:node)
189-
elseif a:node.type == s:NODE_AND
200+
elseif a:node.type ==# s:NODE_AND
190201
return self.compile_and(a:node)
191-
elseif a:node.type == s:NODE_EQUAL
202+
elseif a:node.type ==# s:NODE_EQUAL
192203
return self.compile_equal(a:node)
193-
elseif a:node.type == s:NODE_EQUALCI
204+
elseif a:node.type ==# s:NODE_EQUALCI
194205
return self.compile_equalci(a:node)
195-
elseif a:node.type == s:NODE_EQUALCS
206+
elseif a:node.type ==# s:NODE_EQUALCS
196207
return self.compile_equalcs(a:node)
197-
elseif a:node.type == s:NODE_NEQUAL
208+
elseif a:node.type ==# s:NODE_NEQUAL
198209
return self.compile_nequal(a:node)
199-
elseif a:node.type == s:NODE_NEQUALCI
210+
elseif a:node.type ==# s:NODE_NEQUALCI
200211
return self.compile_nequalci(a:node)
201-
elseif a:node.type == s:NODE_NEQUALCS
212+
elseif a:node.type ==# s:NODE_NEQUALCS
202213
return self.compile_nequalcs(a:node)
203-
elseif a:node.type == s:NODE_GREATER
214+
elseif a:node.type ==# s:NODE_GREATER
204215
return self.compile_greater(a:node)
205-
elseif a:node.type == s:NODE_GREATERCI
216+
elseif a:node.type ==# s:NODE_GREATERCI
206217
return self.compile_greaterci(a:node)
207-
elseif a:node.type == s:NODE_GREATERCS
218+
elseif a:node.type ==# s:NODE_GREATERCS
208219
return self.compile_greatercs(a:node)
209-
elseif a:node.type == s:NODE_GEQUAL
220+
elseif a:node.type ==# s:NODE_GEQUAL
210221
return self.compile_gequal(a:node)
211-
elseif a:node.type == s:NODE_GEQUALCI
222+
elseif a:node.type ==# s:NODE_GEQUALCI
212223
return self.compile_gequalci(a:node)
213-
elseif a:node.type == s:NODE_GEQUALCS
224+
elseif a:node.type ==# s:NODE_GEQUALCS
214225
return self.compile_gequalcs(a:node)
215-
elseif a:node.type == s:NODE_SMALLER
226+
elseif a:node.type ==# s:NODE_SMALLER
216227
return self.compile_smaller(a:node)
217-
elseif a:node.type == s:NODE_SMALLERCI
228+
elseif a:node.type ==# s:NODE_SMALLERCI
218229
return self.compile_smallerci(a:node)
219-
elseif a:node.type == s:NODE_SMALLERCS
230+
elseif a:node.type ==# s:NODE_SMALLERCS
220231
return self.compile_smallercs(a:node)
221-
elseif a:node.type == s:NODE_SEQUAL
232+
elseif a:node.type ==# s:NODE_SEQUAL
222233
return self.compile_sequal(a:node)
223-
elseif a:node.type == s:NODE_SEQUALCI
234+
elseif a:node.type ==# s:NODE_SEQUALCI
224235
return self.compile_sequalci(a:node)
225-
elseif a:node.type == s:NODE_SEQUALCS
236+
elseif a:node.type ==# s:NODE_SEQUALCS
226237
return self.compile_sequalcs(a:node)
227-
elseif a:node.type == s:NODE_MATCH
238+
elseif a:node.type ==# s:NODE_MATCH
228239
return self.compile_match(a:node)
229-
elseif a:node.type == s:NODE_MATCHCI
240+
elseif a:node.type ==# s:NODE_MATCHCI
230241
return self.compile_matchci(a:node)
231-
elseif a:node.type == s:NODE_MATCHCS
242+
elseif a:node.type ==# s:NODE_MATCHCS
232243
return self.compile_matchcs(a:node)
233-
elseif a:node.type == s:NODE_NOMATCH
244+
elseif a:node.type ==# s:NODE_NOMATCH
234245
return self.compile_nomatch(a:node)
235-
elseif a:node.type == s:NODE_NOMATCHCI
246+
elseif a:node.type ==# s:NODE_NOMATCHCI
236247
return self.compile_nomatchci(a:node)
237-
elseif a:node.type == s:NODE_NOMATCHCS
248+
elseif a:node.type ==# s:NODE_NOMATCHCS
238249
return self.compile_nomatchcs(a:node)
239-
elseif a:node.type == s:NODE_IS
250+
elseif a:node.type ==# s:NODE_IS
240251
return self.compile_is(a:node)
241-
elseif a:node.type == s:NODE_ISCI
252+
elseif a:node.type ==# s:NODE_ISCI
242253
return self.compile_isci(a:node)
243-
elseif a:node.type == s:NODE_ISCS
254+
elseif a:node.type ==# s:NODE_ISCS
244255
return self.compile_iscs(a:node)
245-
elseif a:node.type == s:NODE_ISNOT
256+
elseif a:node.type ==# s:NODE_ISNOT
246257
return self.compile_isnot(a:node)
247-
elseif a:node.type == s:NODE_ISNOTCI
258+
elseif a:node.type ==# s:NODE_ISNOTCI
248259
return self.compile_isnotci(a:node)
249-
elseif a:node.type == s:NODE_ISNOTCS
260+
elseif a:node.type ==# s:NODE_ISNOTCS
250261
return self.compile_isnotcs(a:node)
251-
elseif a:node.type == s:NODE_ADD
262+
elseif a:node.type ==# s:NODE_ADD
252263
return self.compile_add(a:node)
253-
elseif a:node.type == s:NODE_SUBTRACT
264+
elseif a:node.type ==# s:NODE_SUBTRACT
254265
return self.compile_subtract(a:node)
255-
elseif a:node.type == s:NODE_CONCAT
266+
elseif a:node.type ==# s:NODE_CONCAT
256267
return self.compile_concat(a:node)
257-
elseif a:node.type == s:NODE_MULTIPLY
268+
elseif a:node.type ==# s:NODE_MULTIPLY
258269
return self.compile_multiply(a:node)
259-
elseif a:node.type == s:NODE_DIVIDE
270+
elseif a:node.type ==# s:NODE_DIVIDE
260271
return self.compile_divide(a:node)
261-
elseif a:node.type == s:NODE_REMAINDER
272+
elseif a:node.type ==# s:NODE_REMAINDER
262273
return self.compile_remainder(a:node)
263-
elseif a:node.type == s:NODE_NOT
274+
elseif a:node.type ==# s:NODE_NOT
264275
return self.compile_not(a:node)
265-
elseif a:node.type == s:NODE_PLUS
276+
elseif a:node.type ==# s:NODE_PLUS
266277
return self.compile_plus(a:node)
267-
elseif a:node.type == s:NODE_MINUS
278+
elseif a:node.type ==# s:NODE_MINUS
268279
return self.compile_minus(a:node)
269-
elseif a:node.type == s:NODE_SUBSCRIPT
280+
elseif a:node.type ==# s:NODE_SUBSCRIPT
270281
return self.compile_subscript(a:node)
271-
elseif a:node.type == s:NODE_SLICE
282+
elseif a:node.type ==# s:NODE_SLICE
272283
return self.compile_slice(a:node)
273-
elseif a:node.type == s:NODE_DOT
284+
elseif a:node.type ==# s:NODE_DOT
274285
return self.compile_dot(a:node)
275-
elseif a:node.type == s:NODE_CALL
286+
elseif a:node.type ==# s:NODE_CALL
276287
return self.compile_call(a:node)
277-
elseif a:node.type == s:NODE_NUMBER
288+
elseif a:node.type ==# s:NODE_NUMBER
278289
return self.compile_number(a:node)
279-
elseif a:node.type == s:NODE_BLOB
290+
elseif a:node.type ==# s:NODE_BLOB
280291
return self.compile_blob(a:node)
281-
elseif a:node.type == s:NODE_STRING
292+
elseif a:node.type ==# s:NODE_STRING
282293
return self.compile_string(a:node)
283-
elseif a:node.type == s:NODE_LIST
294+
elseif a:node.type ==# s:NODE_LIST
284295
return self.compile_list(a:node)
285-
elseif a:node.type == s:NODE_DICT
296+
elseif a:node.type ==# s:NODE_DICT
286297
return self.compile_dict(a:node)
287-
elseif a:node.type == s:NODE_OPTION
298+
elseif a:node.type ==# s:NODE_OPTION
288299
return self.compile_option(a:node)
289-
elseif a:node.type == s:NODE_IDENTIFIER
300+
elseif a:node.type ==# s:NODE_IDENTIFIER
290301
return self.compile_identifier(a:node)
291-
elseif a:node.type == s:NODE_CURLYNAME
302+
elseif a:node.type ==# s:NODE_CURLYNAME
292303
return self.compile_curlyname(a:node)
293-
elseif a:node.type == s:NODE_ENV
304+
elseif a:node.type ==# s:NODE_ENV
294305
return self.compile_env(a:node)
295-
elseif a:node.type == s:NODE_REG
306+
elseif a:node.type ==# s:NODE_REG
296307
return self.compile_reg(a:node)
297308
else
298309
throw self.err('Compiler: unknown node: %s', string(a:node))
299310
endif
300311
endfunction
312+
" vint: +ProhibitUsingUndeclaredVariable
301313

302314
function s:PythonCompiler.compile_body(body)
303315
let empty = 1
304316
for node in a:body
305317
call self.compile(node)
318+
" vint: -ProhibitUsingUndeclaredVariable
306319
if node.type != s:NODE_COMMENT
320+
" vint: +ProhibitUsingUndeclaredVariable
307321
let empty = 0
308322
endif
309323
endfor
@@ -359,13 +373,13 @@ endfunction
359373
function s:PythonCompiler.compile_function(node)
360374
let left = self.compile(a:node.left)
361375
let rlist = map(a:node.rlist, 'self.compile(v:val)')
362-
if !empty(rlist) && rlist[-1] == '...'
376+
if !empty(rlist) && rlist[-1] ==# '...'
363377
let rlist[-1] = '*a000'
364378
endif
365379

366-
if left =~ '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
380+
if left =~# '^\(VimLParser\|ExprTokenizer\|ExprParser\|LvalueParser\|StringReader\|Compiler\|RegexpParser\)\.'
367381
let left = matchstr(left, '\.\zs.*')
368-
if left == 'new'
382+
if left ==# 'new'
369383
return
370384
endif
371385
call self.insert_empty_lines_before_comment(1)
@@ -405,7 +419,7 @@ endfunction
405419

406420
function s:PythonCompiler.compile_let(node)
407421
let op = a:node.op
408-
if op == '.='
422+
if op ==# '.='
409423
let op = '+='
410424
endif
411425
let right = self.compile(a:node.right)
@@ -745,7 +759,7 @@ endfunction
745759
function s:PythonCompiler.compile_subscript(node)
746760
let left = self.compile(a:node.left)
747761
let right = self.compile(a:node.right)
748-
if left == 'self'
762+
if left ==# 'self'
749763
return printf('getattr(%s, %s)', left, right)
750764
else
751765
return printf('%s[%s]', left, right)
@@ -765,15 +779,15 @@ endfunction
765779
function s:PythonCompiler.compile_call(node)
766780
let rlist = map(a:node.rlist, 'self.compile(v:val)')
767781
let left = self.compile(a:node.left)
768-
if left == 'map'
782+
if left ==# 'map'
769783
let r = s:StringReader.new([eval(rlist[1])])
770784
let p = s:ExprParser.new(r)
771785
let n = p.parse()
772786
return printf('[%s for vval in %s]', self.compile(n), rlist[0])
773-
elseif left == 'call' && rlist[0][0] =~ '[''"]'
787+
elseif left ==# 'call' && rlist[0][0] =~# '[''"]'
774788
return printf('viml_%s(*%s)', rlist[0][1:-2], rlist[1])
775789
endif
776-
if left =~ '\.new$'
790+
if left =~# '\.new$'
777791
let left = matchstr(left, '.*\ze\.new$')
778792
endif
779793
if index(s:viml_builtin_functions, left) != -1
@@ -787,7 +801,7 @@ function s:PythonCompiler.compile_number(node)
787801
endfunction
788802

789803
function s:PythonCompiler.compile_string(node)
790-
if a:node.value[0] == "'"
804+
if a:node.value[0] ==# "'"
791805
let s = substitute(a:node.value[1:-2], "''", "'", 'g')
792806
return '"' . escape(s, '\"') . '"'
793807
else
@@ -819,11 +833,11 @@ endfunction
819833

820834
function s:PythonCompiler.compile_identifier(node)
821835
let name = a:node.value
822-
if name == 'a:000'
836+
if name ==# 'a:000'
823837
let name = 'a000'
824-
elseif name == 'v:val'
838+
elseif name ==# 'v:val'
825839
let name = 'vval'
826-
elseif name =~ '^[sa]:'
840+
elseif name =~# '^[sa]:'
827841
let name = name[2:]
828842
endif
829843
if has_key(s:reserved_keywords, name)
@@ -892,9 +906,9 @@ endfunction
892906
function! s:numtoname(num)
893907
let sig = printf("function('%s')", a:num)
894908
for k in keys(s:)
895-
if type(s:[k]) == type({})
909+
if type(s:[k]) ==# type({})
896910
for name in keys(s:[k])
897-
if type(s:[k][name]) == type(function('tr')) && string(s:[k][name]) == sig
911+
if type(s:[k][name]) ==# type(function('tr')) && string(s:[k][name]) ==# sig
898912
return printf('%s.%s', k, name)
899913
endif
900914
endfor

0 commit comments

Comments
 (0)