mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
repl: handle assigning anonymous function to a variable
This commit is contained in:
parent
931c846602
commit
96a8eaabc5
@ -138,6 +138,10 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
|||||||
repl_help()
|
repl_help()
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
if r.line.contains(':=') && r.line.contains('fn(') {
|
||||||
|
r.in_func = true
|
||||||
|
r.functions_name << r.line.all_before(':= fn(').trim_space()
|
||||||
|
}
|
||||||
if r.line.starts_with('fn') {
|
if r.line.starts_with('fn') {
|
||||||
r.in_func = true
|
r.in_func = true
|
||||||
r.functions_name << r.line.all_after('fn').all_before('(').trim_space()
|
r.functions_name << r.line.all_after('fn').all_before('(').trim_space()
|
||||||
@ -190,7 +194,8 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
|||||||
possible_statement_patterns := [
|
possible_statement_patterns := [
|
||||||
'=', '++', '--', '<<',
|
'=', '++', '--', '<<',
|
||||||
'//', '/*',
|
'//', '/*',
|
||||||
'fn ', 'pub ', 'mut ', 'enum ', 'const ', 'struct ', 'interface ', 'import '
|
'fn ', 'pub ', 'mut ', 'enum ', 'const ', 'struct ', 'interface ', 'import ',
|
||||||
|
'#include ', ':='
|
||||||
]
|
]
|
||||||
mut is_statement := false
|
mut is_statement := false
|
||||||
for pattern in possible_statement_patterns {
|
for pattern in possible_statement_patterns {
|
||||||
@ -208,7 +213,7 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
|||||||
temp_flag = true
|
temp_flag = true
|
||||||
}
|
}
|
||||||
mut temp_source_code := ''
|
mut temp_source_code := ''
|
||||||
if temp_line.starts_with('import ') {
|
if temp_line.starts_with('import ') || temp_line.starts_with('#include ') {
|
||||||
temp_source_code = '${temp_line}\n' + r.current_source_code(false)
|
temp_source_code = '${temp_line}\n' + r.current_source_code(false)
|
||||||
} else {
|
} else {
|
||||||
temp_source_code = r.current_source_code(true) + '\n${temp_line}\n'
|
temp_source_code = r.current_source_code(true) + '\n${temp_line}\n'
|
||||||
@ -225,7 +230,7 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
|||||||
}
|
}
|
||||||
r.temp_lines.delete(0)
|
r.temp_lines.delete(0)
|
||||||
}
|
}
|
||||||
if r.line.starts_with('import ') {
|
if r.line.starts_with('import ') || r.line.starts_with('#include ') {
|
||||||
mut imports := r.imports
|
mut imports := r.imports
|
||||||
r.imports = [r.line]
|
r.imports = [r.line]
|
||||||
r.imports << imports
|
r.imports << imports
|
||||||
|
Loading…
x
Reference in New Issue
Block a user