This commit is contained in:
2026-09-12 19:31:05 +02:00
parent 57ae671f88
commit fd4e879c0c
20 changed files with 1232 additions and 255 deletions

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 2 — Principes généraux du langage
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -111,6 +111,13 @@ Map<String,List<int32>>
}
```
### Exemple 12
```text
String text = "abc";
text::append("def"); // OK si append est une méthode mutante de String
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 6 — Types, variables, constantes et scopes
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -21,6 +21,84 @@
foo(a(), b(), c())
```
### Exemple 3
```text
Type value = ...;
```
### Exemple 4
```text
const Type value = ...;
```
### Exemple 5
```text
interdit la réaffectation du binding
interdit toute mutation obtenue uniquement à travers ce binding
n'impose aucune immutabilité globale à l'objet éventuellement référencé
n'affecte pas les autres alias mutables légitimes
```
### Exemple 6
```text
User a = ...;
const User b = a;
a::setName("John"); // OK
b::setName("John"); // ERROR
b::getName(); // OK et observe la modification faite via a
```
### Exemple 7
```text
const User user = ...;
user::address::getCity(); // OK si const method
user::address::setCity("Paris"); // ERROR
```
### Exemple 8
```text
const User source = ...;
User mutable = source; // ERROR
```
### Exemple 9
```text
User source = ...;
const User readonly = source; // OK
```
### Exemple 10
```text
const int32 a = 10;
int32 b = a; // OK
b = 20; // OK
```
### Exemple 11
```text
class Document {
const User owner;
}
```
### Exemple 12
```text
this::owner = other; // ERROR après initialisation
this::owner::setName(...); // ERROR via cet accès
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 15 — Fonctions, méthodes et `clsmethod`
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -48,6 +48,67 @@ return Result::Ok(value);
return Result::Ok(Void);
```
### Exemple 6
```text
class User {
const method getName() -> String {
return this::name;
}
method setName(String name) -> Void {
this::name = name;
return Void;
}
}
```
### Exemple 7
```text
User a = ...;
const User b = a;
a::setName("John"); // OK
a::getName(); // OK
b::getName(); // OK
b::setName("John"); // ERROR
```
### Exemple 8
```text
réassigner un champ via this
appeler une method non-const via this
obtenir puis exposer comme mutable un accès disponible uniquement via this const
```
### Exemple 9
```text
allouer des valeurs locales
modifier des valeurs locales mutables
faire de l'I/O
faire du logging
lever une Exception déclarée
modifier un état externe auquel elle possède indépendamment un accès mutable
```
### Exemple 10
```text
func display(const User user) -> Void
```
### Exemple 11
```text
const method getOwner() -> const User {
return this::owner;
}
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 16 — Dispatch, override et modificateurs
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -12,6 +12,7 @@ visibility
-> linkage / ABI
-> type / dispatch modifiers
-> override
-> access qualifier
-> declaration kind
```
@@ -31,8 +32,9 @@ public open class Service
public abstract class Base
public unsafe extern "C" union NativeValue
protected open method calculate(...)
protected const method inspect(...)
protected override method calculate(...)
protected final override method calculate(...)
protected final override const method inspect(...)
```
### Exemple 4
@@ -59,6 +61,16 @@ override method
final override method
```
### Exemple 8
```text
const method
doit être implémentée/overridée par const method
method
doit être implémentée/overridée par method
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,31 +1,18 @@
# Exemples / DO-DON'T — Chapitre 21 — Strings, Unicode et encodages
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
```text
Utf8String
Utf16String
Utf32String
AsciiString éventuel
Bytes
String text = "abc";
text::append("def"); // OK
```
### Exemple 2
```text
byte
code unit
Unicode scalar
code point
grapheme cluster
```
### Exemple 3
```text
'A'
'é'
@@ -35,8 +22,184 @@ grapheme cluster
'\u{1F600}'
```
### Exemple 3
```text
Utf8Char
Utf16Char
Utf32Char
Utf8String
Utf16String
Utf32String
```
### Exemple 4
```text
Utf8Char
exactement un Unicode scalar encodé en UTF-8
1 à 4 uint8
Utf16Char
exactement un Unicode scalar encodé en UTF-16
1 à 2 uint16
Utf32Char
exactement un Unicode scalar encodé en UTF-32
1 uint32
```
### Exemple 5
```text
Utf8String
séquence UTF-8 valide
Utf16String
séquence UTF-16 valide
Utf32String
séquence UTF-32 valide
```
### Exemple 6
```text
UTF-8 -> uint8
UTF-16 -> uint16
UTF-32 -> uint32
```
### Exemple 7
```text
char::toUtf8Char()
Utf8Char::toChar()
Utf8Char::toUtf16Char()
Utf8Char::tryFrom(uint8)
Utf16Char::tryFrom(uint16)
Utf32Char::tryFrom(uint32)
Utf8Char::tryToUint8()
Utf16Char::tryToUint16()
Utf32Char::toUint32()
```
### Exemple 8
```text
Utf8String text = ...;
Utf16Char value = ...;
text::append(value); // ERROR
text::append(value::toUtf8Char()); // OK
```
### Exemple 9
```text
String text = ...;
text[5]; // ERROR
```
### Exemple 10
```text
text::scalarAt(index) -> char
text::scalarCount() -> uint64
```
### Exemple 11
```text
Utf8String[index] -> uint8
Utf16String[index] -> uint16
Utf32String[index] -> uint32
```
### Exemple 12
```text
encodedCharAt(scalarIndex)
retourne le UtfXChar correspondant au scalar ordinal demandé
scalarAt(scalarIndex)
retourne le char correspondant
```
### Exemple 13
```text
Utf8String::encodedCharAt(uint64) -> Utf8Char
Utf16String::encodedCharAt(uint64) -> Utf16Char
Utf32String::encodedCharAt(uint64) -> Utf32Char
Utf8String::scalarAt(uint64) -> char
Utf16String::scalarAt(uint64) -> char
Utf32String::scalarAt(uint64) -> char
```
### Exemple 14
```text
scalarCount()
```
### Exemple 15
```text
codeUnitCount()
scalarCount()
```
### Exemple 16
```text
String implements Iterable<char>
```
### Exemple 17
```text
code units
encoded chars
Unicode scalars
```
### Exemple 18
```text
codeUnits()
encodedChars()
scalars()
```
### Exemple 19
```text
String text = "abc";
text::append("def");
```
### Exemple 20
```text
Utf8String text = ...;
Utf8Char value = ...;
text::append(value); // OK
```
### Exemple 21
```text
text[index] = 0xFF; // ERROR
```
### Exemple 22
```text
"..." String normale, escapes actifs
"""...""" String normale multiligne
@@ -55,56 +218,19 @@ cr"..." chaîne C brute, réservé
t"..." template structuré, réservé
```
### Exemple 5
### Exemple 23
```text
i"Hello {name}"
i"Hello ${name}"
```
### Exemple 6
```text
"""
first
second
"""
```
### Exemple 7
```text
r"simple"
r#"He said "hello"."#
r##"contains "# inside"##
```
### Exemple 8
```text
r"""..."""
r#"""..."""#
```
### Exemple 9
```text
\\ backslash
\" double quote
\' single quote
\n newline
\r carriage return
\t horizontal tab
\0 NUL
\u{...} Unicode scalar
```
### Exemple 10
```text
b"\x00\x7f\x80\xff"
\\
\"
\'
\n
\r
\t
\0
\u{...}
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 27 — Mémoire, références et `unsafe`
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -39,6 +39,15 @@ unsafe constant
unsafe field
```
### Exemple 4
```text
mot-clé mut pour obtenir la mutabilité normale
borrow checker visible dans la syntaxe
lifetimes utilisateur omniprésents
ownership annotations pour les usages ordinaires
```
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.

View File

@@ -1,8 +1,8 @@
# Exemples / DO-DON'T — Chapitre 47 — Concepts rejetés ou déconseillés
> Document compagnon non normatif tant qu'une règle n'est pas explicitement référencée comme normative par le chapitre.
> Document compagnon. Les exemples illustrent les règles du chapitre ; la formulation normative reste dans le chapitre lui-même.
## Exemples actuellement présents dans le chapitre
## Exemples extraits du chapitre
### Exemple 1
@@ -25,6 +25,9 @@ match guards `when` / `if`
loop/until/repeat/unless comme synonymes de structures existantes
magic getters/setters
mandatory native GC
immutability by default for ordinary variables/objects
mandatory `mut` qualifier for ordinary mutation
Rust-style user-visible borrow/lifetime syntax as the default programming model
```
### Exemple 2
@@ -40,4 +43,4 @@ transitive dependencies importables sans déclaration directe
## DO / DON'T / WHY / compiler error / edge cases
La couverture structurée de cette section sera enrichie au fur et à mesure de la fermeture des règles du chapitre. La migration `0.2.12` conserve volontairement les exemples historiques dans le chapitre afin de ne perdre aucun contexte normatif.
À consolider progressivement avant la baseline publique V3 et à transformer, lorsque pertinent, en tests de conformité de la toolchain.