This commit is contained in:
2026-09-12 08:56:27 +02:00
parent 426aa92d0d
commit 18306bdc8c
116 changed files with 11080 additions and 0 deletions

View File

@@ -0,0 +1,63 @@
# 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.
---