Sakura Lang

V8030 dependency_invalid

An entry of [dependencies] in sakura.toml is malformed (RFC 0003 §1.2, experimental).

An error from the package phase. sakura explain V8030 prints this explanation offline.

An entry of [dependencies] in sakura.toml is malformed (RFC 0003 §1.2, experimental). An entry is name = "MAJOR.MINOR.PATCH", name = { version = "…" }, name = { path = "\<relative dir\>" \} or name = \{ git = "\<https URL\>", rev = "\<40 hex\>" \}, each optionally with effects = [...] and trusted = true. The message names the cause: a name that is not [a-z][a-z0-9_]* or is std or main; a floor that is not three numbers (no *, ranges, pre-release or build metadata); both version and path; a path that is absolute; a git without rev, or a rev that is not a full 40-hex commit hash (a branch or tag is refused); an unknown key; a value of the wrong type; or a path dependency whose own sakura.toml names it differently from its key.

Wrong:

[dependencies]
util = "*"

Fixed:

[dependencies]
util = { path = "../util" }

Wrong program

compiler/tests/ui/V8030_dependency_invalid/, which the compiler's ui suite runs through sakura check:

main.sak:

// RFC 0003 §1.2: each malformed `[dependencies]` entry is `V8030` at the entry, naming its
// `MAJOR.MINOR.PATCH`, both `version` and `path`, an absolute `path`, `git` without `rev`, a
// `rev` that is not a full commit hash, and an unknown key (a branch).
pub fn main() -> Unit ! {Console} { Console.print("hi") }

Open in playground

sakura.toml:

[package]
name = "billing"

[dependencies]
Http = "1.0.0"
std = "1.0.0"
json = "*"
util = { version = "1.0.0", path = "../util" }
abs = { path = "/opt/abs" }
scraper = { git = "https://github.com/acme/scraper" }
parser = { git = "https://github.com/acme/parser", rev = "main" }
lexer = { git = "https://github.com/acme/lexer", branch = "main" }

sakura check --json reports this record (pretty-printed; $DIR is the fixture's directory):

{
  "schema_version": "1.0",
  "kind": "diagnostic",
  "id": "d:ec99ae345000f041",
  "code": "V8030",
  "severity": "error",
  "phase": "package",
  "message": "`Http` is not a package name: lowercase letters, digits and `_`, starting with a letter",
  "snapshot": "sha256:$SNAPSHOT",
  "symbol_id": null,
  "spans": [
    {
      "uri": "file://$DIR/V8030_dependency_invalid/sakura.toml",
      "content_hash": "sha256:b9c24d228819dea3e00c30ad646a86ff3c260dfe4bf0057a938b6860657f8e88",
      "start_byte": 43,
      "end_byte": 57,
      "role": "primary"
    }
  ],
  "related_ids": [],
  "expected": null,
  "actual": null,
  "obligation": null,
  "counterexample": null,
  "explanation_uri": "sakura://explain/V8030",
  "fixes": []
}

Fixed program

No fixed program is checked in for this code yet; the explanation above describes the repair.

Edit on GitHub

Last updated

On this page