2017-05-27 14:45 GMT+02:00 Denis Kudriashov <dionisiydk@gmail.com>:
2017-05-27 14:15 GMT+02:00 Thierry Goubier <thierry.goubier@gmail.com>:
Will:
#MyPackage asPackage definedClasses do: [:each | each tagWith: #MyPackage]
put the classes in the #MyPackage or in the #MyPackage-MyPackage system category?
#tagWith: not touches package of class. It only adds receiver into package tag. I not understand the question about system category because I don't know what it is exactly in current system.
The package and tag names are translated into a 'PackageName-TagName' system category. But: the tag #PackageName has a special meaning in RPackage (for now). It means : what is defined in the package, and not in any other tag.
Now in class definition we have "package: " part. And it will be modified with new tag-suffix. It will become "package: 'ActualPackageName-TagName'"
Just like it is now in system category then.
Will that API stay the same when we will be able to put a class in multiple categories (or a method in multiple protocols)?
Yes but #tagWith: will add extra tag into class/method. It will not remove existing tags. But in Pharo6 it is only new API. Multiple tags are not supported and #tagWith: removes existing tag.
The problem I foresee is that at a certain point in the future, not
advertised, that semantic will change to not mean 'remove existing tag'. If I start using that API, I'll need to add a test in my stuff that will flag that API semantic change without name change. Thierry