On Wednesday, August 11, 2010, Mariano Martinez Peck <marianopeck@gmail.com> wrote:
On Wed, Aug 11, 2010 at 3:23 PM, Alexandre Bergel <alexandre@bergel.eu> wrote:
Yes please don't add that.
This is not my intention. But I just discovered some bugs in my test because I instantiated a class that shouldn't be instantiated since it is abstract. If now we close our eyes and dream about a clean oo language. Will forbidding to instantiate an abstract class a wished feature?
I am also against of this change. We should continue to have flexible language and not to convert this in Java. In addition, I MAY want to instantiate Abstract classes. Sometime you are doing prototypes, or TDD, and you want to instantiate an object of an abstract class. Even if you have a subclassResponsability. I don't care. Maybe I am not testing that right now, nor showing that to my client.
I think the correct way to detect your kind of problems is with Lint. If it is not already done, maybe it could be added.
There is a rule that checks for that, I think it is called "refers to abstract class". I don't have an image at hand to verify. It could be extended to take a declaration like #isAbstractClass into account. Lukaz
Cheers
Mariano
Cheers, Alexandre
On Wednesday, August 11, 2010, Stanislav Paskalev <kshorg@gmail.com> wrote:
And it will also require modifying the Pharo by Example book that says that there's nothing wrong with instantiating abstract classes and that there is no *abstract* class marker in this sense, only abstract methods.
So, why would try to convert Pharo to another language ?
Stanislav Paskalev
On Wed, Aug 11, 2010 at 3:43 PM, Alexandre Bergel <alexandre@bergel.eu> wrote:
Hi!
Just wondering. What about redefining new into: -=-=-=-=-=-=-=-=-=-=-=-= Behavior>>new     "Answer a new initialized instance of the receiver (which is a class) with no indexable variables. Fail if the class is indexable."     self isAbstractClass ifTrue: [ self error: 'An abstract class cannot be instantiated' ].     ^ self basicNew initialize -=-=-=-=-=-=-=-=-=-=-=-=
This may break a lot of code however.
Cheers, Alexandre -- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel  http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli www.lukas-renggli.ch
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- _,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;: Alexandre Bergel  http://www.bergel.eu ^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;.
_______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
-- Lukas Renggli www.lukas-renggli.ch