repl: detect fn/enums/struct/const/interface declarations too
parent
034bf46e4d
commit
7a404af097
|
@ -101,13 +101,13 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
||||||
} else {
|
} else {
|
||||||
prompt = '... '
|
prompt = '... '
|
||||||
}
|
}
|
||||||
mut line := readline.read_line(prompt) or {
|
oline := readline.read_line(prompt) or {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
if line.trim_space() == '' && line.ends_with('\n') {
|
if oline.trim_space() == '' && oline.ends_with('\n') {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
line = line.trim_space()
|
line := oline.trim_space()
|
||||||
if line.len <= -1 || line == '' || line == 'exit' {
|
if line.len <= -1 || line == '' || line == 'exit' {
|
||||||
break
|
break
|
||||||
}
|
}
|
||||||
|
@ -157,11 +157,23 @@ fn run_repl(workdir string, vrepl_prefix string) {
|
||||||
mut temp_flag := false
|
mut temp_flag := false
|
||||||
func_call := r.function_call(r.line)
|
func_call := r.function_call(r.line)
|
||||||
filter_line := r.line.replace(r.line.find_between('\'', '\''), '').replace(r.line.find_between('"', '"'), '')
|
filter_line := r.line.replace(r.line.find_between('\'', '\''), '').replace(r.line.find_between('"', '"'), '')
|
||||||
if !(filter_line.contains('=') || filter_line.contains('++') ||
|
possible_statement_patterns := [
|
||||||
filter_line.contains('--') || filter_line.contains('<<') ||
|
'=', '++', '--', '<<',
|
||||||
filter_line.contains('//') || filter_line.contains('/*') ||
|
'//', '/*',
|
||||||
filter_line.contains('struct') ||
|
'fn ', 'pub ', 'mut ', 'enum ', 'const ', 'struct ', 'interface ', 'import '
|
||||||
filter_line.starts_with('import') || r.line == '') && !func_call {
|
]
|
||||||
|
mut is_statement := false
|
||||||
|
for pattern in possible_statement_patterns {
|
||||||
|
if filter_line.contains(pattern) {
|
||||||
|
is_statement = true
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// NB: starting a line with 2 spaces escapes the println heuristic
|
||||||
|
if oline.starts_with(' ') {
|
||||||
|
is_statement = true
|
||||||
|
}
|
||||||
|
if !is_statement && !func_call && r.line != '' {
|
||||||
temp_line = 'println($r.line)'
|
temp_line = 'println($r.line)'
|
||||||
temp_flag = true
|
temp_flag = true
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue