Frédéric PRACA
2017-01-26 12:59:10 UTC
Bonjour à toutes et à tous,
en jouant avec les variants, je me suis posé une question.
Dans le code suivant :
with Ada.Text_IO; use Ada.Text_IO;
procedure Test_Variant is
type Formes is (CARRE, RECTANGLE);
type Forme(De_Type : Formes) is
record
case De_Type is
when CARRE =>
Cote : Positive;
when RECTANGLE =>
Longueur : Positive;
Largeur : Positive;
end case;
end record;
ma_forme : Forme := (RECTANGLE, 5, 3);
begin
Put_line(Positive'Image(ma_forme.Cote));
ma_forme.Longueur := -1;
Put_line(Positive'Image(ma_forme.Longueur));
end Test_Variant;
pourquoi le compilateur Gnat ne fournit-il qu'un warning et pas une erreur de compilation lorsque l'on référence un composant inexistant ?
D'ailleurs, je me suis aussi toujours posé la question de l'intérêt d'un avertissement en lieu et place d'une erreur lorsque le compilateur sait à la compilation qu'une valeur sera hors plage.
Je ne doute pas de vous voir éclairer ma lanterne :)
Fred
en jouant avec les variants, je me suis posé une question.
Dans le code suivant :
with Ada.Text_IO; use Ada.Text_IO;
procedure Test_Variant is
type Formes is (CARRE, RECTANGLE);
type Forme(De_Type : Formes) is
record
case De_Type is
when CARRE =>
Cote : Positive;
when RECTANGLE =>
Longueur : Positive;
Largeur : Positive;
end case;
end record;
ma_forme : Forme := (RECTANGLE, 5, 3);
begin
Put_line(Positive'Image(ma_forme.Cote));
ma_forme.Longueur := -1;
Put_line(Positive'Image(ma_forme.Longueur));
end Test_Variant;
pourquoi le compilateur Gnat ne fournit-il qu'un warning et pas une erreur de compilation lorsque l'on référence un composant inexistant ?
D'ailleurs, je me suis aussi toujours posé la question de l'intérêt d'un avertissement en lieu et place d'une erreur lorsque le compilateur sait à la compilation qu'une valeur sera hors plage.
Je ne doute pas de vous voir éclairer ma lanterne :)
Fred