fmt: do not generate `import` statements for auto imports (#7966)
parent
9291fb5e0c
commit
cbe7740d97
|
@ -2228,8 +2228,6 @@ a property of the individual channel object. Channels can be passed to coroutine
|
||||||
variables:
|
variables:
|
||||||
|
|
||||||
```v
|
```v
|
||||||
import sync
|
|
||||||
|
|
||||||
fn f(ch chan int) {
|
fn f(ch chan int) {
|
||||||
// ...
|
// ...
|
||||||
}
|
}
|
||||||
|
@ -2331,8 +2329,6 @@ if select {
|
||||||
|
|
||||||
For special purposes there are some builtin properties and methods:
|
For special purposes there are some builtin properties and methods:
|
||||||
```v nofmt
|
```v nofmt
|
||||||
import sync
|
|
||||||
|
|
||||||
struct Abc{x int}
|
struct Abc{x int}
|
||||||
|
|
||||||
a := 2.13
|
a := 2.13
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
import sync
|
|
||||||
|
|
||||||
fn test_pointer() {
|
fn test_pointer() {
|
||||||
mut arr := []&int{}
|
mut arr := []&int{}
|
||||||
a := 1
|
a := 1
|
||||||
|
|
|
@ -461,6 +461,7 @@ pub mut:
|
||||||
scope &Scope
|
scope &Scope
|
||||||
stmts []Stmt // all the statements in the source file
|
stmts []Stmt // all the statements in the source file
|
||||||
imports []Import // all the imports
|
imports []Import // all the imports
|
||||||
|
auto_imports []string // imports that were implicitely added
|
||||||
imported_symbols map[string]string // used for `import {symbol}`, it maps symbol => module.symbol
|
imported_symbols map[string]string // used for `import {symbol}`, it maps symbol => module.symbol
|
||||||
errors []errors.Error // all the checker errors in the file
|
errors []errors.Error // all the checker errors in the file
|
||||||
warnings []errors.Warning // all the checker warings in the file
|
warnings []errors.Warning // all the checker warings in the file
|
||||||
|
|
|
@ -38,7 +38,7 @@ pub mut:
|
||||||
file ast.File
|
file ast.File
|
||||||
did_imports bool
|
did_imports bool
|
||||||
is_assign bool
|
is_assign bool
|
||||||
auto_imports []string // automatically inserted imports that the user forgot to specify
|
auto_imports []string // automatically inserted imports that the user does not need to specify
|
||||||
import_pos int // position of the imports in the resulting string for later autoimports insertion
|
import_pos int // position of the imports in the resulting string for later autoimports insertion
|
||||||
used_imports []string // to remove unused imports
|
used_imports []string // to remove unused imports
|
||||||
is_debug bool
|
is_debug bool
|
||||||
|
@ -83,6 +83,7 @@ pub fn (mut f Fmt) process_file_imports(file &ast.File) {
|
||||||
f.mod2alias[sym.name] = sym.name
|
f.mod2alias[sym.name] = sym.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
f.auto_imports = file.auto_imports
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn (mut f Fmt) write(s string) {
|
pub fn (mut f Fmt) write(s string) {
|
||||||
|
@ -201,8 +202,8 @@ pub fn (mut f Fmt) imports(imports []ast.Import) {
|
||||||
if f.did_imports || imports.len == 0 {
|
if f.did_imports || imports.len == 0 {
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
// f.import_pos = f.out.len
|
|
||||||
f.did_imports = true
|
f.did_imports = true
|
||||||
|
mut num_imports := 0
|
||||||
/*
|
/*
|
||||||
if imports.len == 1 {
|
if imports.len == 1 {
|
||||||
imp_stmt_str := f.imp_stmt_str(imports[0])
|
imp_stmt_str := f.imp_stmt_str(imports[0])
|
||||||
|
@ -215,12 +216,16 @@ pub fn (mut f Fmt) imports(imports []ast.Import) {
|
||||||
// TODO bring back once only unused imports are removed
|
// TODO bring back once only unused imports are removed
|
||||||
// continue
|
// continue
|
||||||
}
|
}
|
||||||
// f.out_imports.write('\t')
|
if imp.mod in f.auto_imports && imp.mod !in f.used_imports {
|
||||||
// f.out_imports.writeln(f.imp_stmt_str(imp))
|
continue
|
||||||
|
}
|
||||||
f.out_imports.write('import ')
|
f.out_imports.write('import ')
|
||||||
f.out_imports.writeln(f.imp_stmt_str(imp))
|
f.out_imports.writeln(f.imp_stmt_str(imp))
|
||||||
|
num_imports++
|
||||||
}
|
}
|
||||||
|
if num_imports > 0 {
|
||||||
f.out_imports.writeln('')
|
f.out_imports.writeln('')
|
||||||
|
}
|
||||||
// f.out_imports.writeln(')\n')
|
// f.out_imports.writeln(')\n')
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
@ -1678,13 +1683,10 @@ pub fn (mut f Fmt) call_expr(node ast.CallExpr) {
|
||||||
// a `node.left` expression. Import `time` automatically.
|
// a `node.left` expression. Import `time` automatically.
|
||||||
// TODO fetch all available modules
|
// TODO fetch all available modules
|
||||||
if node.left.name in ['time', 'os', 'strings', 'math', 'json', 'base64'] {
|
if node.left.name in ['time', 'os', 'strings', 'math', 'json', 'base64'] {
|
||||||
if node.left.name !in f.auto_imports {
|
|
||||||
f.auto_imports << node.left.name
|
|
||||||
f.file.imports << ast.Import{
|
f.file.imports << ast.Import{
|
||||||
mod: node.left.name
|
mod: node.left.name
|
||||||
alias: node.left.name
|
alias: node.left.name
|
||||||
}
|
}
|
||||||
}
|
|
||||||
// for imp in f.file.imports {
|
// for imp in f.file.imports {
|
||||||
// println(imp.mod)
|
// println(imp.mod)
|
||||||
// }
|
// }
|
||||||
|
|
|
@ -1,5 +1,3 @@
|
||||||
import sync
|
|
||||||
|
|
||||||
struct FSMEvent {
|
struct FSMEvent {
|
||||||
x int
|
x int
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,4 +1,3 @@
|
||||||
import sync
|
|
||||||
import time
|
import time
|
||||||
|
|
||||||
struct St {
|
struct St {
|
||||||
|
|
|
@ -42,6 +42,9 @@ fn (mut p Parser) register_auto_import(alias string) {
|
||||||
}
|
}
|
||||||
p.ast_imports << node
|
p.ast_imports << node
|
||||||
}
|
}
|
||||||
|
if alias !in p.auto_imports {
|
||||||
|
p.auto_imports << alias
|
||||||
|
}
|
||||||
p.register_used_import(alias)
|
p.register_used_import(alias)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -53,6 +53,7 @@ mut:
|
||||||
imports map[string]string // alias => mod_name
|
imports map[string]string // alias => mod_name
|
||||||
ast_imports []ast.Import // mod_names
|
ast_imports []ast.Import // mod_names
|
||||||
used_imports []string // alias
|
used_imports []string // alias
|
||||||
|
auto_imports []string // imports, the user does not need to specify
|
||||||
imported_symbols map[string]string
|
imported_symbols map[string]string
|
||||||
is_amp bool // for generating the right code for `&Foo{}`
|
is_amp bool // for generating the right code for `&Foo{}`
|
||||||
returns bool
|
returns bool
|
||||||
|
@ -232,6 +233,7 @@ pub fn (mut p Parser) parse() ast.File {
|
||||||
mod: module_decl
|
mod: module_decl
|
||||||
imports: p.ast_imports
|
imports: p.ast_imports
|
||||||
imported_symbols: p.imported_symbols
|
imported_symbols: p.imported_symbols
|
||||||
|
auto_imports: p.auto_imports
|
||||||
stmts: stmts
|
stmts: stmts
|
||||||
scope: p.scope
|
scope: p.scope
|
||||||
global_scope: p.global_scope
|
global_scope: p.global_scope
|
||||||
|
|
|
@ -2,7 +2,6 @@ module websocket
|
||||||
|
|
||||||
import net
|
import net
|
||||||
import time
|
import time
|
||||||
import sync
|
|
||||||
|
|
||||||
// socket_read reads from socket into the provided buffer
|
// socket_read reads from socket into the provided buffer
|
||||||
fn (mut ws Client) socket_read(mut buffer []byte) ?int {
|
fn (mut ws Client) socket_read(mut buffer []byte) ?int {
|
||||||
|
|
|
@ -7,7 +7,6 @@ import x.openssl
|
||||||
import net.urllib
|
import net.urllib
|
||||||
import time
|
import time
|
||||||
import log
|
import log
|
||||||
import sync
|
|
||||||
import rand
|
import rand
|
||||||
|
|
||||||
const (
|
const (
|
||||||
|
|
|
@ -3,7 +3,6 @@ module websocket
|
||||||
import net
|
import net
|
||||||
import x.openssl
|
import x.openssl
|
||||||
import log
|
import log
|
||||||
import sync
|
|
||||||
import time
|
import time
|
||||||
import rand
|
import rand
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue