v/vlib/compiler/tests/msvc_test.v

52 lines
998 B
V
Raw Normal View History

2019-08-20 15:32:15 +02:00
fn test_flag_parsing() {
mut rest := '-lGlfw -f gl2,-ltest_nice_meme,-l cc,-Ldl test.o a.o ' //, whatever.o'
2019-11-30 13:27:16 +01:00
result := ['-l', 'Glfw',
'-f', 'gl2',
'-l', 'test_nice_meme',
2019-08-20 15:32:15 +02:00
'-l', 'cc',
'-L', 'dl',
'', 'test.o',
'', 'a.o']
mut flags := []string
for {
mut base := rest
fl := if rest.starts_with('-') {
base = rest[2..].trim_space()
rest[..2]
2019-08-20 15:32:15 +02:00
} else {
''
}
// Which ever one of these is lowest we use
// TODO: we really shouldnt support all of these cmon
2019-11-30 13:27:16 +01:00
mut lowest := base.index('-') or { -1 }
a := base.index(' ') or { -1 }
b := base.index(',') or { -1 }
for x in [a, b] {
2019-08-20 15:32:15 +02:00
if (x < lowest && x != -1) || lowest == -1 {
lowest = x
}
}
arg := if lowest != -1 {
rest = base[lowest..].trim_space().trim(',')
base[..lowest].trim_space().trim(',')
2019-08-20 15:32:15 +02:00
} else {
rest = ''
base.trim_space()
}
flags << fl
flags << arg
if rest.len == 0 {
break
}
}
for i, f in flags {
2019-11-30 13:27:16 +01:00
assert f == result[i]
2019-08-20 15:32:15 +02:00
}
}