64 lines
1.6 KiB
Markdown
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.
|
|
|
|
---
|