Grand blackboard

Un article de SmartEiffelWiki, l'encyclopéde libre.

Le grand tableau collectif au jour le jour. Utiliser cette page pour les discussions que vous ne voyez pas ou placer. Attention, cette page n'est absolument pas obligé de correspondre à ce qui se passe dans la version Anglaise.




Sommaire

1 Messages d'Erreur

2 Avis de pini
3 Avis de Cyril 15:03, 17 Jun 2005 (MET DST)

short

short pourrait-il dire si une 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)

En fait, view, c'est eiffeldoc. Colnet 8 jul 2005 à 09:14 (CEST)

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

des messsages pour spécialistes

1.

****** 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 ?


2.

line 61 column 44 file /usr/local/EIFFEL/SmartEiffel//lib/kernel/general.e
------------------------------------------------------------------------
 56              -- current object ?
 57           require
 58              other /= Void
 59           external "built_in"
 60           ensure
>61++            generating_type = other.generating_type implies Result = other.is_equal(Current)
 62           end
 63

generating_type ? je ne comprends pas l'origine de l'erreur. J'ai redéfini is_equal c'est sans doute par cela, mais que dois-je faire ?

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)


Notation des Réels

****** Fatal Error: Keyword "end" expected at the end of a class.
Line 122 column 27 in MANAGEMENT (../management.e):
  epsilon_64 : REAL_64 is 1.e-15

end ? la bonne syntaxe est : 1.0e-15.

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)
                     ^
c'est ici non ?
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 (qui ne figure pas dans le message) 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 = ?

C'est de la syntaxe pure. Je ne sais pas faire (qui a dit ça ?).


****** Fatal Error: Type OBJECT_PERSISTENT_TIME has no creation
list. You must use the default creation method (named `default_create'
in class GENERAL, or just omit the method name).
Line 34 columns 4, 18 in TRIANGLE_KEY (../triangle_key.e):
        create Result.make
        ^             ^

On pourrait avoir le type de Result ?

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 (http://smarteiffel.loria.fr/technical/syntax.html).
  • 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.

Oui, et on va dégager les vieux truc un de ces jours. Colnet 8 jul 2005 à 09:14 (CEST)

Sinon, c'est bien le bazard sur cette page... mais c'est fait pour cela non ? Colnet 8 jul 2005 à 09:14 (CEST)

Outils personels
Autres langues