docs← Back to article

Markdown for LLMs

LDC-E1201 — Name already declared in this package

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

Download this articlePlain text ↗
# LDC-E1201 — Name already declared in this package

## What it means

A package keeps a single flat namespace for the names it declares: the
second declaration of an already-taken name does not shadow or merge,
it collides. When a declaration reuses a name an earlier declaration
owns, the compiler stops at the newcomer and points back at the first
owner.

The repair is a rename of one of the two sides, or a merge into a
single declaration if both meant the same thing. In a multi-file
package the first owner may live in another file — the message says so.

## Example

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

entity Applicant;
entity Applicant;
```

## Fix

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

entity Applicant;
```

## Engine message

The engine reports this in its own wording:

```text
example.law:6:8: error LDC-E1201: name "Applicant" is already declared in this package (§24; in a multi-file package — possibly in another file)
```

## Related

- [Vocabulary](/constructs/vocabulary/) — how names are declared and which positions take them.
- [LDC-E1338](/diagnostics/LDC-E1338/) — the companion collision at the identifier level.