Grand blackboard
Contents
Wiki
- une rubrique New Askings dans laquelle les gens demandent de nouvelles fonctionnalités
- une rubrique pour chaque element du langage avec son graphe syntaxique
short
short pourrait-il dire si une classe ou procedure est deferred ?
En fait il faudrait deux outils:
- short pour l'utilisateur
- view plus bavard pour la mise au point. Il n'est pas tres bon d'utiliser short pour cela. Dans la bonne tradition unix more/less, je propose de l'appeler long. Cyril 09:56, 17 Jun 2005 (MET DST)
undefine
undefine is equivalent to deferred
la complétion des mots sous emacs
Ctrl-/ (global-set-key [(meta /)] `dabbrev-expand)
comment on masque une fonction dans une classe fille ?
Messages d'Erreur
style
- éviter les ****
- mettre le nom de la classe en toute première position
la forme générale des message
Line 66 column 8 in TRIANGLE (./triangle.e):
l'information la plus importante le nom de la classe n'apparait pas en premier
puis-je proposer qqchse comme:
TRIANGLE (./triangle.e) at line 66 column 8 :
****** Fatal Error: Bad assignment (VJAR). Error detected while checking this code in the VECTOR_3D_KEY context. Cannot assign `storage.reference_at(Current)' which is of type VECTOR into `Result' which is of type VECTOR_3D. Line 59 columns 4, 22 in OBJECT_PERSISTENT_KEY (./object_persistent_key.e): Result := storage.reference_at (Current) ^ ^
je préfèrerais :
VECTOR_3D_KEY context of OBJECT_PERSISTENT_KEY Fatal Error detected while checking code : Bad assignment (VJAR). Cannot assign `storage.reference_at(Current)' of type VECTOR into `Result' of type VECTOR_3D. code file (./object_persistent_key.e) : at line 59 columns 4, 22 Result := storage.reference_at (Current) ^ ^
ensure then
****** Warning: Keyword "ensure" replaced with "ensure then" because there is an inherited ensure assertion. Line 44 column 4 in VECTOR_3D_KEY (./vector_3d_key.e): ensure ^
j'aimerais bien :
- avoir le nom de la procédure
- avoir le texte de l'ensure de la classe mère
un messsage pour spécialiste
****** Warning: The "feature" clause declares a narrower client list than the conforming parent(s). This can lead to catcalls! The final export list is {OBJECT_PERSISTENT_KEY} . Line 223 column 9 in TRIANGLE (./triangle.e): feature {OBJECT_PERSISTENT_KEY} ^ Line 225 column 2 in TRIANGLE (./triangle.e): build_and_store (triangle_key_a : TRIANGLE_KEY) is ^ Line 40 column 9 in OBJECT_PERSISTENT (./object_persistent.e): feature {ANY}
on pourrait le rendre plus clair ?
mauvais pointage de l'erreur et texte
FRA@fec>short segment
****** Fatal Error: The local definition in VECTOR_3D (given first) can't be accepted because a concrete definition is inherited. Missing redefine or undefine? Line 11 column 2 in VECTOR_3D (/home/FRAMES/TRIANGLE_V2/vector_3d.e): VECTOR ^ Line 47 column 2 in VECTOR_3D (/home/FRAMES/TRIANGLE_V2/vector_3d.e): divide, infix "/" (v : REAL_64) : like Current is ^ Line 67 column 2 in VECTOR (/home/FRAMES/TRIANGLE_V2/vector.e): divide, infix "/" (v : REAL_64) : like Current is
C'est pas divide c'est infix "/" qui devrait être pointé
d'autre part, je ne comprends pas la phrase The local definition of what ?
ni la suite (given first)
pas compris
FRA@fec>short vector_3d
****** Warning: Unknown path: "xml/" in /usr/local/EIFFEL/SmartEiffel/lib/loadpath.se. ------ ****** Fatal Error: Can't join these two concrete features. (CDJR2) Line 12 column 2 in VECTOR_3D (/home/FRAMES/TRIANGLE_V2/vector_3d.e): VECTOR ^ Line 73 column 2 in VECTOR (/home/FRAMES/TRIANGLE_V2/vector.e): is_filled: BOOLEAN is ^ Line 81 column 2 in OBJECT_ONE_VALUED (/home/FRAMES/TRIANGLE_V2/object_one_valued.e): is_filled: BOOLEAN is ^
VECTOR_3D
- inherit VECTOR
et n'a rien à voir avec OBJECT_ONE_VALUED
j'ai renommé la classe OBJECT_ONE_VALUED => OBJECT_ONE_VALUE
maintenant ça marche ! Bizarre.
l'endroit où se produit l'erreur manque
****** Fatal Error: Cannot pass `object_a' which is of type OBJECT_PERSISTENT into formal type OBJECT_LEAF. Line 77 column 17 in OBJECT_PERSISTENT_KEY (/home/FRAMES/TRIANGLE_V2/object_persistent_key.e): storage.add (object_a, Current) ^ Line 151 column 10 in BIJECTIVE_DICTIONARY (/usr/local/EIFFEL/SmartEiffel/lib/storage/bijective_dictionary.e): add (v: V; k: K) is ^
OBJECT_LEAF hérite de OBJECT_PERSISTENT
l'erreur vient de OBJECT_LEAF_KEY dans la quelle object_persistent est du type OBJECT_PERSISTENT au lieu de OBJECT_LEAF
message plus précis ?
****** Fatal Error: Type mark expected. Line 66 column 8 in TRIANGLE (./triangle.e): i := triangle_key.leaves_declarations.index_of ("sides@3:SEGMENT") ^
un Type mark est-il vraiment expected et peut-il commencer par = ?
obviously expanded
****** Fatal Error: The declaration type of `names_dictionary.has(object_name_a)' is obviously expanded (i.e. the written type mark is "BOOLEAN").
pourquoi obviously ?
pb dans io.put_string
io.put_string (" for each sides item add %"leaves_declarations.put %(%"sides@1:SEGMENT%", n%)%"%N")
donne ce resultat
for each sides item add "leaves_declarations.put ["sides@1:SEGMENT", n]" ^ ^
%( et %) ont donne [ et ]
Ca c'est normal, voir ETL2 Cyril 10:43, 16 Jun 2005 (MET DST)
Avis de pini
Je prends la discussion en cours de route, mais :
- ) Une rubrique New Askings aurait toute sa place sur un wiki, mais il faudra bien préciser que ce ne sont que des demandes, et non une TO_DO List.
- ) Pour la rubrique avec les éléments du langage et leur graphe syntaxique, je suis pour. Paul Brauner (Polux) m'avait aussi parlé de faire un article sur la grammaire du langage, à voir avec lui.
- ) Pour les messages d'erreur, c'est vrai que la forme proposée est plus claire et plus facile à lire (je trouve)
- ) Ensure then : pourquoi ne pas mettre aussi le ensure de la classe fille en plus du ensure de la classe mère ? Je dis ça pour permettre de voir si par hasard (ou par erreur) on n'aurait pas remis une partie de la post-condition héritée, ce qui m'est déjà arrivé (par exemple pour le widget opengleux).
- ) pas compris : est-ce que cette erreur a quelque chose à voir avec l'héritage en diamant ?
- ) pb dans io.put_string : donc ce pb est normal si ( donne "(" et %( donne "[". pourquoi ne pas utiliser %[ au lieu de %( ?
Avis de Cyril 15:03, 17 Jun 2005 (MET DST)
- On est d'accord sur le New Askings.
- pour la syntaxe, il existe déjà pas mal de choses faites par Dominique sur le site de SmartEiffel.
- Pour io.put_string : ETL définit très précisément les caractères qu'on peut mettre après un % qui joue le même rôle que \ en C. En particulier, %( et %) correspondent aux crochets, %< et %> correspondent aux accolades, etc. Il est vrai que de nos jours, à part %N et %T... Bref, si on veut insérer le signe pourcent il faut écrire %%. L'origine est historique : il semblerait que certains tty n'avaient pas tout le jeu de caractères.