In VW 3.0 take a class that is part of a parcel and a CVST project. Commit the project. Remove one method from the class, but do not update the parcel. Commit the CVST project. You get an exception. Of course, updating the parcel before you commit would be better, but still you shouldn't get an exception if you forgot.
Fix (in class CVSParcelController):
instanceMethodsIn: aClassName for: aModule
| class |
class := self realClassFor: aClassName.
^(aModule systemModule definedSelectorsFor: class) select: [:each | class selectors includes: each]
Mhm, your fix will definitely take care of the exception. However I am not sure that hidind the fact that the parcel is corrupt is a good idea. How about we still throw an exception but explaining the fact that the method was removed behind the parcel's back ? Would you find that acceptable ? BTW, #classMethodsIn:for: will have the same problem.