On Wednesday, August 11, 2010, Mariano Martinez Peck <marianop...@gmail.com> wrote: > > > On Wed, Aug 11, 2010 at 3:23 PM, Alexandre Bergel <alexan...@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 <ksh...@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 <alexan...@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 _______________________________________________ Pharo-project mailing list Pharo-project@lists.gforge.inria.fr http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project