mirror of
https://github.com/vlang/v.git
synced 2023-08-10 21:13:21 +03:00
main: vrepl interactive shell update
This commit is contained in:
parent
0f8682d2f0
commit
f630d3f342
@ -963,6 +963,7 @@ fn run_repl() []string {
|
|||||||
println('Use Ctrl-C or `exit` to exit')
|
println('Use Ctrl-C or `exit` to exit')
|
||||||
println('For now you have to use println() to print values, this will be fixed soon\n')
|
println('For now you have to use println() to print values, this will be fixed soon\n')
|
||||||
file := TmpPath + '/vrepl.v'
|
file := TmpPath + '/vrepl.v'
|
||||||
|
temp_file := TmpPath + '/vrepl_temp.v'
|
||||||
mut lines := []string
|
mut lines := []string
|
||||||
for {
|
for {
|
||||||
print('>>> ')
|
print('>>> ')
|
||||||
@ -982,13 +983,52 @@ fn run_repl() []string {
|
|||||||
lines << void_line
|
lines << void_line
|
||||||
source_code := lines.join('\n') + '\n' + line
|
source_code := lines.join('\n') + '\n' + line
|
||||||
os.write_file(file, source_code)
|
os.write_file(file, source_code)
|
||||||
mut v := new_v( ['v', '-repl', file])
|
s := os.exec('v run '+TmpPath+'/vrepl.v')
|
||||||
v.compile()
|
mut vals := s.split('\n')
|
||||||
s := os.exec(TmpPath + '/vrepl')
|
if s.contains('panic: ') {
|
||||||
println(s)
|
if !s.contains('declared and not used') {
|
||||||
|
for i:=1; i<vals.len; i++ {
|
||||||
|
println(vals[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
println(s)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
for i:=0; i<vals.len-1; i++ {
|
||||||
|
println(vals[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
lines << line
|
mut temp_line := line
|
||||||
|
mut temp_flag := false
|
||||||
|
if !(line.contains(' ') || line.contains(':') || line.contains('=') || line.contains(',') ){
|
||||||
|
temp_line = 'println('+line+')'
|
||||||
|
temp_flag = true
|
||||||
|
}
|
||||||
|
temp_source_code := lines.join('\n') + '\n' + temp_line
|
||||||
|
os.write_file(temp_file, temp_source_code)
|
||||||
|
s := os.exec('v run '+TmpPath+'/vrepl_temp.v')
|
||||||
|
if s.contains('panic: ') {
|
||||||
|
if !s.contains('declared and not used') {
|
||||||
|
mut vals := s.split('\n')
|
||||||
|
for i:=1; i<vals.len; i++ {
|
||||||
|
println(vals[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lines << line
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
lines << line
|
||||||
|
mut vals := s.split('\n')
|
||||||
|
for i:=0; i<vals.len-1; i++ {
|
||||||
|
println(vals[i])
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return lines
|
return lines
|
||||||
|
Loading…
Reference in New Issue
Block a user