fix(lang): 0.R4 - ludic.ui's UiAct is its own, and a name that meets a package's export says whose it is

A game's exported UiAct collided with ludic.ui's, which nothing outside ludic.ui uses: it is private
to ludic.ui now, and a private record of one spelling in two modules never clashed. A real clash - a
type named like one a package exports - is still refused, and the message names the package and the
way out (`ludic_ui exports it, and exported names are one namespace - rename this one, or declare it
without export inside a module of your own`).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Orkun ÇAKILKAYA 2026-09-26 06:57:35 +03:00
parent eb1e780733
commit d46f0adb5e
10 changed files with 1095 additions and 879 deletions

View file

@ -0,0 +1,7 @@
# own_uiact.ludic - a game module may export a record named like one of ludic.ui's own private ones
import "ludic.ui"
import "own_uiact/acts"
program OwnUiAct {
numbers float
entry { print(`{act_kind()}`) }
}

View file

@ -0,0 +1,6 @@
module acts
export property UiAct { kind: int = 3 }
export function act_kind() -> int {
let a = new UiAct
return a.kind
}

View file

@ -0,0 +1,7 @@
# a program's type named like a package's export is a real clash, and the message says whose
import "ludic.ui"
program PkgClash {
numbers float
property UiNode { kind: int = 3 }
entry { print("x") }
}