uqbar-project / ozono

Automatically exported from code.google.com/p/objectbrowserpharo
0 stars 0 forks source link

Se tiene que poder hacer Error signal: #228

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
self error: es conceptualmente erróneo.
Error signal: es un poco más correcto (al menos pensando en un futuro cuando 
el pibe lo deba usar).
Para el pibe es igual de mágico.

Original issue reported on code.google.com by alfredo....@gmail.com on 10 Mar 2014 at 11:55

GoogleCodeExporter commented 9 years ago

Original comment by mmato...@gmail.com on 18 Apr 2014 at 3:43

GoogleCodeExporter commented 9 years ago

Original comment by mmato...@gmail.com on 18 Apr 2014 at 3:44

GoogleCodeExporter commented 9 years ago
Deino un método que tiene Error signal: '...' y al tratar de guardarlo salta

Information
an OBCompilationBinder no entiende el mensaje possibleVariablesFor: #Error 
continuedFrom: a SortedCollection()

Este error salta al tener un método con cualquier clase que no sea una clase 
de colecciones (Set new se puede hacer).

Para solucionarlo se agrega #Error a los literales de la lesson, al igual que 
con las clases de colecciones.

Original comment by mmato...@gmail.com on 18 Apr 2014 at 6:09

GoogleCodeExporter commented 9 years ago
En el workspace Error signal no se puede hacer porque promptea que Error no 
está definido como variable (como si estuviera en un método).

Debuggeando llegué a OCRequestorScope >> lookupVar:

lookupVar: name

    name = 'self' ifTrue: [  ^outerScope lookupVar: name].
    name = 'super' ifTrue: [  ^outerScope lookupVar: name].
    name first isUppercase ifTrue: [ ^outerScope lookupVar: name ].  <-- entra por acá y no lo encuentra en un dictionary que sí tiene Set, Bag y OrderedCollection (pero no otras colecciones).

    (requestor bindingOf: name asSymbol) ifNotNil: [:assoc | 
        ^ OCLiteralVariable new assoc: assoc; scope: self; yourself]. <-- de no ser por la línea anterior entraría por acá, ya que el bindingOf: retorna el binding agregado al inicializar la lección.
    ^ super lookupVar: name.

Original comment by mmato...@gmail.com on 18 Apr 2014 at 8:08

GoogleCodeExporter commented 9 years ago
TestCase subclass: #OBExecutionContext
    instanceVariableNames: '_lesson Set Bag OrderedCollection'

OBExecutionContext >> lesson: aLesson

    _lesson := aLesson.

    Set := OBSetPrototype newForLesson: aLesson.
    Bag := OBBagPrototype newForLesson: aLesson.
    OrderedCollection := OBOrderedCollectionPrototype newForLesson: aLesson.

Por eso sólo esas 3 están en el dictionary. El quick fix sería agregar 
Error, Dictionary y SortedCollection acá también, pero suena medio cochino.

Original comment by mmato...@gmail.com on 18 Apr 2014 at 8:28

GoogleCodeExporter commented 9 years ago
Si pueden encontrar una forma de que no quede duplicado lo de las clases 
literales sería genial. De momento sumé al parche.

Original comment by mmato...@gmail.com on 18 Apr 2014 at 9:41