# 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. ---