2.8 KiB
31. Fichiers source V1
31.1 .saseltype — V1 REQUIS — FIGÉ
- namespace obligatoire après en-tête/docs ;
- exactement un type nominal top-level parmi
class,struct,enum,interface,union; - nom du fichier exactement identique au nom du type, extension exclue ;
- comparaison sensible à la casse même sur un filesystem qui ne l'est pas ;
- chemin relatif au
source_rootcohérent avec le namespace ; - pas de fonctions/variables/constants top-level auxiliaires.
Exemple :
src/compiler/lexer/Token.saseltype
namespace compiler.lexer;
public final class Token { ... }
31.2 .sasel — V1 REQUIS — FIGÉ
- namespace obligatoire et cohérent avec le répertoire ;
- imports ;
- fonctions libres ;
- variables/constants top-level ;
- pas de type nominal top-level ;
- nom de fichier ASCII minuscule suivant
[a-z][a-z0-9_]*.sasel; - aucune correspondance obligatoire entre le nom du fichier et les symboles qu'il contient.
Un fichier .sasel peut porter le même nom qu'un sous-répertoire/sous-namespace voisin. Le nom du fichier ne participe pas à l'identité des symboles et la distinction . / :: évite une ambiguïté de résolution.
31.3 .saselrun — V1 REQUIS — FIGÉ
Le point d'entrée source d'un package bin est obligatoirement :
<source_root>/main.saselrun
Règles :
- directement sous
source_root; - nom exact
main.saselrun; - pas de namespace ;
- imports ;
- exactement
main; - pas de helpers top-level ;
- exactement un
main.saselrunpar packagebin; main.saselruninterdit dans un packagelib.
Cette règle évite d'introduire un champ de manifest destiné uniquement à choisir entre plusieurs points d'entrée concurrents.
31.4 .saselscript — V1 RÉSERVÉ
Extension réservée pour le futur environnement browser Saselang.
Direction actuelle :
- pas de namespace ;
- entrée browser ;
- plusieurs scripts possibles ;
- un script ne doit pas importer directement un autre
.saselscript; - le code réutilisable doit venir de modules/libraries.
La V1 LLVM n'est pas obligée d'implémenter le runtime browser.
31.5 module.saselmod — V1 REQUIS — FIGÉ EN PRINCIPE
Nom exact :
module.saselmod
Fichier entièrement optionnel.
S'il existe, il commence obligatoirement par une déclaration namespace correspondant exactement au répertoire.
Il ne contient :
- ni exports ;
- ni reexports ;
- ni dépendances de package ;
- ni options de build générales ;
- ni code exécutable arbitraire.
Un développeur voulant réexposer une API doit écrire un wrapper explicite.
Responsabilités prévues :
doc module-wide
deprecated module-wide
policies module-wide (ex: forbid unsafe)
requirements de feature
target/capability requirements lorsque pertinent
Syntaxe précise de ces directives : V1 À FINALISER.