Grand blackboard

From Liberty Eiffel Wiki
Revision as of 17:39, 17 June 2005 by SEWikiImport Colonna (talk)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Wiki

  1. une rubrique New Askings dans laquelle les gens demandent de nouvelles fonctionnalités
  2. 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

  1. éviter les ****
  2. 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 :

  1. avoir le nom de la procédure
  2. 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.