docs← Back to article

Markdown for LLMs

LDC-E1110 — Standard-library import with the wrong version

The source Markdown for this article. Copy it into your assistant or download it as a text file.

Download this articlePlain text ↗
# LDC-E1110 — Standard-library import with the wrong version

## What it means

The standard library travels with the language itself: for each language
line there is exactly one built-in standard-library release, and an
explicit import of a standard package only confirms that pin. Naming a
different version claims a release the language does not carry, so the
compiler stops at the import line.

The repair is to repeat the version the language line implies, or to
drop the import entirely — the standard vocabulary is visible without
any import. Bumping the language line forward is the only way to move
to a newer standard release.

## Example

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
import law.std.time version "0.1.0";

entity Applicant;
```

## Fix

```law
language "law.core" version "0.2";
package demo.diagnostics version "0.1.0";
namespace "urn:law:demo:diagnostics";
import law.std.time version "0.2.0";

entity Applicant;
```

## Engine message

The engine reports this in its own wording:

```text
example.law:4:1: error LDC-E1110: import "law.std.time" is declared with version "0.1.0", but the "0.2" language prelude carries std version "0.2.0" (§23: an explicit import std confirms the built-in pin and must match it; errata E-0154)
```

## Related

- [LDC-E1114](/diagnostics/LDC-E1114/) — importing a standard package that does not exist.
- [Vocabulary](/constructs/vocabulary/) — how names are declared and which positions take them.