Revert last update, which was based on bad assumptions about how a proxy should behave (thanks Levente).
If a proxy doesn't want to forward a message, it can just implement the method. If you want direct access to the proxy object, you can use the mirror primitives.
=============== Diff against Tests-dtl.395 ===============
Item was removed:
- ----- Method: MCPackageInEnvironmentTest>>testPerformIdentityEquals (in category 'testing') -----
- "Verify that #perform:with: can be used to send #== for identity test. Required
- for identity test in PluggableDictionary. Delegation to the MCPackage does not
- work in that case because the package is a different object."
- | aProtoObj |
- aProtoObj :=MCPackageInEnvironment
- decorating: (MCPackage new name: 'No Name Yet')
- in: Environment default.
- self assert: [aProtoObj == aProtoObj]
- description: 'Direct test for identity does not invoke delegation'.
- "Normal perform:with: delegation with any selector other than #=="
- aProtoObj perform: #name: with: #FOO.
- self assert: #FOO equals: aProtoObj name
- description: 'name of the MCPackage should have been set to #FOO'.
- "Selector #== must refer to aProtoObj, not to the MCPackage to which it delegates"
- self assert: [aProtoObj perform: #== with: aProtoObj]
- description: 'If aProtoObj delegates to the MCPackage the identity test will fail'.