Files
saselang-bible/chapters/033-imports-et-resolution-des-noms.md
2026-09-12 08:56:27 +02:00

64 lines
1.6 KiB
Markdown

# 33. Imports et résolution des noms
## 33.1 Imports — V1 REQUIS — FIGÉ
Imports file-level uniquement, après `namespace` lorsque celui-ci existe.
Pas de wildcard `*`.
Import symbole par symbole :
```text
import type saselang.compiler.lexer.Token;
import func saselang.compiler.lexer.tokenize;
import const saselang.compiler.config.MaxDepth;
import var saselang.runtime.state.CurrentMode;
```
`import type` couvre :
```text
class
struct
enum
interface
union
```
## 33.2 Alias — V1 REQUIS — FIGÉ
Sans `as`, le dernier nom devient l'alias local implicite.
```text
import type foo.Token;
```
importe `Token`.
Alias explicite :
```text
import type foo.Token as FooToken;
```
Les alias locaux doivent être uniques dans le fichier.
Pas d'alias de module.
## 33.3 Utilisation sans import — V1 REQUIS — FIGÉ
L'utilisation d'un chemin qualifié complet sans `import` est autorisée uniquement pour les symboles appartenant au **package courant**.
```text
saselang.compiler.lexer.Token
saselang.compiler.lexer::tokenize(...)
```
`.` qualifie le chemin ; `::` accède au symbole contenu.
Un symbole provenant d'une dépendance externe ne peut pas être référencé directement par un chemin complet dans une expression ou une déclaration. Il doit d'abord être importé explicitement avec une clause `from "vendor/package@requirement"`.
Cette règle évite d'introduire la syntaxe de coordonnées package (`/`, `@`, contraintes SemVer) dans la grammaire générale des expressions et garantit qu'un fichier énonce explicitement toutes ses provenances externes.
---