Skip to content

Compile errors with V 0.4.7 #40

@jorgeluismireles

Description

@jorgeluismireles

Errors with current v:

~/vpkg$ v -version
V 0.4.7 01fd719
~/vpkg$ v -prod .
api/instance.v:28:1: error: const () groups will be an error after 2025-01-01 (`v fmt -w source.v` will fix that for you)
   26 | import os
   27 | 
   28 | const (
      | ~~~~~
   29 |     version = '0.7.1'
   30 |     global_modules_dir = os.home_dir() + '.vmodules'
api/instance.v:66:64: error: Option and Result types have been split, use `!Foo` to return errors
   64 | 
   65 |     match vpkg.command {
   66 |         'get'     { vpkg.get_packages(vpkg.unknown, true) or { return error("Failed to `get` packages")} }
      |                                                                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   67 |         'help'    { vpkg.show_help() }
   68 |         'info'    { vpkg.show_package_information() }
api/instance.v:69:54: error: Option and Result types have been split, use `!Foo` to return errors
   67 |         'help'    { vpkg.show_help() }
   68 |         'info'    { vpkg.show_package_information() }
   69 |         'init'    { vpkg.create_manifest_file() or { return error("Failed to create manifest file (`init`)")} }
      |                                                      ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   70 |         'link'    { vpkg.link(vpkg.dir) }
   71 |         'install' { vpkg.install_packages(vpkg.dir) or { return error("Failed to `install` packages")} }
api/instance.v:71:58: error: Option and Result types have been split, use `!Foo` to return errors
   69 |         'init'    { vpkg.create_manifest_file() or { return error("Failed to create manifest file (`init`)")} }
   70 |         'link'    { vpkg.link(vpkg.dir) }
   71 |         'install' { vpkg.install_packages(vpkg.dir) or { return error("Failed to `install` packages")} }
      |                                                          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   72 |         'remove'  { vpkg.remove_packages(vpkg.unknown) }
   73 |         'migrate' { if vpkg.unknown[0] == 'manifest' { vpkg.migrate_manifest() or { return error("Failed to `migrate` manifest")} } else {vpkg.show_help()} }
api/instance.v:73:85: error: Option and Result types have been split, use `!Foo` to return errors
   71 |         'install' { vpkg.install_packages(vpkg.dir) or { return error("Failed to `install` packages")} }
   72 |         'remove'  { vpkg.remove_packages(vpkg.unknown) }
   73 |         'migrate' { if vpkg.unknown[0] == 'manifest' { vpkg.migrate_manifest() or { return error("Failed to `migrate` manifest")} } else {vpkg.show_help()} }
      |                                                                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   74 |         'update'  { vpkg.update_packages() }
   75 |         'unlink'  { vpkg.unlink(vpkg.dir) }
api/instance.v:78:55: error: Option and Result types have been split, use `!Foo` to return errors
   76 |         'version' { vpkg.show_version() }
   77 |         'test'    { vpkg.test_package() }
   78 |         'release' { vpkg.release_module_to_git() or { return error("Failed to `release` module")} }
      |                                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   79 |         else      { vpkg.show_help() }
   80 |     }
api/lockfile.v:44:13: error: Option and Result types have been split, use `!Foo` to return errors
   42 |     if os.exists(lockfile_path) {
   43 |         contents := os.read_file(lockfile_path) or {
   44 |             return error('Cannot read ${dir}')
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   45 |         }
   46 |
api/lockfile.v:48:13: error: Option and Result types have been split, use `!Foo` to return errors
   46 | 
   47 |         decoded := json.decode(Lockfile, contents) or {
   48 |             return error('Unable to decode lockfile.')
      |             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   49 |         }
   50 |
api/manifest.v:85:24: error: cannot use `!int` as type `?int` in return argument
   83 | 
   84 | fn (mut mw ManifestWriter) close() ?int {
   85 |     return mw.contents.write(('\n' + mw.closing).bytes())
      |                        ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   86 | }
   87 |
api/manifest.v:107:43: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  105 |         mw.contents.writeln(message)
  106 |     } else {
  107 |         mw.contents.write(message.bytes())?
      |                                           ^
  108 |     }
  109 | }
api/manifest.v:125:105: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  123 |     if mw.contents.len == 0 { mw.init_write() }
  124 | 
  125 |     mw.contents.write((strings.repeat(` `, mw.spaces_count) + key_with_quotes + '${mw.colon} ').bytes())?
      |                                                                                                         ^
  126 | 
  127 |     message := '['
api/manifest.v:131:43: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  129 |         mw.contents.writeln(message)
  130 |     } else {
  131 |         mw.contents.write(message.bytes())?
      |                                           ^
  132 |     }
  133 |
api/manifest.v:142:87: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  140 | 
  141 |         if newline {
  142 |             mw.contents.write((strings.repeat(` `, mw.spaces_count*2) + text).bytes())?
      |                                                                                       ^
  143 |         } else {
  144 |             mw.contents.write(text.bytes())?
api/manifest.v:144:44: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  142 |             mw.contents.write((strings.repeat(` `, mw.spaces_count*2) + text).bytes())?
  143 |         } else {
  144 |             mw.contents.write(text.bytes())?
      |                                            ^
  145 |         }
  146 |     }
api/manifest.v:149:87: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  147 | 
  148 |     if newline {
  149 |         mw.contents.write(('\n' + strings.repeat(` `, mw.spaces_count) + ']').bytes())?
      |                                                                                       ^
  150 |     } else {
  151 |         mw.contents.write(']'.bytes())?
api/manifest.v:151:39: error: propagating a Result like an Option is deprecated, use `foo()!` instead of `foo()?`
  149 |         mw.contents.write(('\n' + strings.repeat(` `, mw.spaces_count) + ']').bytes())?
  150 |     } else {
  151 |         mw.contents.write(']'.bytes())?
      |                                       ^
  152 |     }
  153 | }
api/sources.v:54:44: error: type `net.http.Response` has no field named `text`.
5 possibilities: `body`, `header`, `http_version`, `status_code`, `status_msg`.
   52 |     }
   53 | 
   54 |     repo := json.decode(RegistryRepo, resp.text) or {
      |                                            ~~~~
   55 |         eprintln('Failed to read repo.json')
   56 |         return current_pkg
api/sources.v:54:18: error: json.decode: second argument needs to be a string
   52 |     }
   53 | 
   54 |     repo := json.decode(RegistryRepo, resp.text) or {
      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   55 |         eprintln('Failed to read repo.json')
   56 |         return current_pkg
api/sources.v:90:42: error: type `net.http.Response` has no field named `text`.
5 possibilities: `body`, `header`, `http_version`, `status_code`, `status_msg`.
   88 |     }
   89 | 
   90 |     repo := json.decode(VpmPackage, resp.text) or {
      |                                          ~~~~
   91 |         eprintln('Failed to parse package information from VPM')
   92 |         return Package{}
api/sources.v:90:18: error: json.decode: second argument needs to be a string
   88 |     }
   89 | 
   90 |     repo := json.decode(VpmPackage, resp.text) or {
      |                  ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   91 |         eprintln('Failed to parse package information from VPM')
   92 |         return Package{}
api/vmod.v:83:17: error: byte is deprecated, use u8 instead
   81 | }
   82 | 
   83 | fn is_newline(c byte) bool {
      |                 ~~~~
   84 |     return c == `\r` || c == `\n`
   85 | }
api/vmod.v:87:22: error: byte is deprecated, use u8 instead
   85 | }
   86 | 
   87 | fn is_name_alpha(chr byte) bool {
      |                      ~~~~
   88 |     return chr.is_letter() || chr == `_`
   89 | }

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions