Revert "Revert "builder: create the binary in the current directory if -o is not provided""

This reverts commit f2b73fe3ca.
pull/9441/head
Alexander Medvednikov 2021-03-23 14:49:09 +03:00
parent ae6420afc7
commit 6463dfca29
3 changed files with 20 additions and 5 deletions

View File

@ -12,14 +12,14 @@ vlib/v/checker/tests/in_mismatch_type.vv:13:5: error: left operand to `in` does
| ~~~~~~
14 | println('yeah')
15 | }
vlib/v/checker/tests/in_mismatch_type.vv:16:5: error: left operand to `in` does not match: expected `string`, not `int literal`
vlib/v/checker/tests/in_mismatch_type.vv:16:5: error: use `str.contains(substr)` instead of `substr in str`
14 | println('yeah')
15 | }
16 | if 3 in s {
| ~~~~~~
17 | println('dope')
18 | }
vlib/v/checker/tests/in_mismatch_type.vv:19:5: error: left operand to `in` does not match: expected `string`, not `rune`
vlib/v/checker/tests/in_mismatch_type.vv:19:5: error: use `str.contains(substr)` instead of `substr in str`
17 | println('dope')
18 | }
19 | if `a` in s {
@ -70,7 +70,7 @@ vlib/v/checker/tests/in_mismatch_type.vv:37:5: error: left operand to `!in` does
39 | }
vlib/v/checker/tests/in_mismatch_type.vv:41:5: error: left operand to `!in` does not match the map key type: expected `string`, not `int literal`
39 | }
40 |
40 |
41 | if 5 !in m {
| ~~~~~~~
42 | println('yay')

View File

@ -46,8 +46,10 @@ pub fn (mut p Preferences) fill_with_defaults() {
// The file name is just `.v` or `.vsh` or `.*`
base = filename
}
target_dir := if os.is_dir(rpath) { rpath } else { os.dir(rpath) }
p.out_name = os.join_path(target_dir, base)
// target_dir := if os.is_dir(rpath) { rpath } else { os.dir(rpath) }
// If no "-o" was supplied, create the binary in the current
// directory. This is the behavior of Go, Clang, GCC, etc.
p.out_name = os.join_path(os.getwd(), base)
if rpath == '$p.vroot/cmd/v' && os.is_dir('vlib/compiler') {
// Building V? Use v2, since we can't overwrite a running
// executable on Windows + the precompiled V is more

View File

@ -348,6 +348,18 @@ fn return_sb_str() string {
return sb.str() // sb should be freed, but only after .str() is called
}
fn parse_header0(s string) ?string {
if !s.contains(':') {
return error('missing colon in header')
}
words := s.split_nth(':', 2)
return words[0]
}
fn advanced_optionals() {
s := parse_header0('foo:bar') or { return }
}
fn main() {
println('start')
simple()
@ -374,6 +386,7 @@ fn main() {
s2 := return_sb_str()
// free_map()
// loop_map()
// advanced_optionals()
free_array_except_returned_element()
println('end')
}