Hannes

 

You are certainly not required to eliminate #name altogether; all you have to 
do is to ensure that any object that receives the message #name knows how to 
answer its own name in an appropriate way. To rephrase Ben’s second para in a 
more long-winded way:

 

a.      Run the code that generates the deprecation warning.
b.      In the warning pop-up, click on ‘Debug’.
c.      Examine the debug stack in the top pane. It is probable that the first 
two lines will read:

HannesClass(Object)               deprecated:on:in

HannesClass(Object)               name

               where HannesClass is the name of some class in your domain model.

d.      You now know that some code you have written is sending the message 
#name to an instance of HannesClass, but the class does not have such a method. 
The solution is to decide how an instance of that class should answer its name, 
and implement that as a method on the instance side of that class. If nothing 
else is obvious, the usual default is ^self printString.
e.      If the top line of the debug stack does not refer to a class in your 
model, work your way down the stack until you find a class that is yours.

 

Hope this helps

 

Peter Kenny

 

 

 

From: Pharo-users [mailto:pharo-users-boun...@lists.pharo.org] On Behalf Of Ben 
Coman
Sent: 26 August 2017 13:08
To: Any question about pharo is welcome <pharo-users@lists.pharo.org>
Subject: Re: [Pharo-users] Object>>#name deprecated in Pharo 6 -- what do I 
need to do?

 

Just checking my presumption... is  PPCMNode>>#gtTreeViewIn:  

you own application method?   So where it sends #name, instead send 
#printString (or #asString).

 

Alternatively, #name is being sent to some domain object that doesn't implement 
#name, so it falls back to the super one from Object.  So implement 
YourDomainObject>>#name: so the one from Object is not executed.

 

cheers -ben

 

 

On Sat, Aug 26, 2017 at 4:38 PM, H. Hirzel <hannes.hir...@gmail.com 
<mailto:hannes.hir...@gmail.com> > wrote:

OK, so #name should not be used at all [1]

The error message I get is

PPCommonMarkSpecTest class>>DoIt (blockVisitor is Undeclared)
The method Object>>#name called from PPCMNode>>#gtTreeViewIn: has been
deprecated.
Implement your own domain representation of an object, or use
#asString or #printString instead.


I wonder how I can fix this without going to much into details.

--Hannes


------------------------------------------------------------------------------------------------------------------------
[1] Pharo 6.1 source code:

Object>>name
        "Answer a name for the receiver.  This is used generically in the
title of certain inspectors, such as the referred-to inspector, and
specificially by various subsystems.  By default, we let the object
just print itself out..  "

        self
                deprecated: 'Implement your own domain representation of an 
object,
or use #asString or #printString instead.'
                on: '27 May 2016'
                in: #Pharo6.
        ^ self printString


On 8/25/17, Ben Coman <b...@openinworld.com <mailto:b...@openinworld.com> > 
wrote:
> I don't have an Image to check, but I believe Object>>name
> just does "^self printString",
> so by default, in your application send #printString instead of #name.
>
> cheers -ben
>
> P.S. Perhaps this would be a good candidate for automated rewrite?
>
>
> On Thu, Aug 24, 2017 at 8:49 PM, H. Hirzel <hannes.hir...@gmail.com 
> <mailto:hannes.hir...@gmail.com> > wrote:
>
>> Hello
>>
>> In the last days there was a discussion that
>>
>>      Object>>#name
>>
>>
>> should no longer be used. I did not follow the discussion in detail.
>> What was decided how #name should be replaced?
>>
>> What do I need to do if I get a deprecation warning [1]?
>>
>>
>> Thanks for the answer in advance
>>
>> Hannes
>>
>>
>>
>>
>> [1]
>> The method Object>>#name called from PPCMNode>>#gtTreeViewIn: has been
>> deprecated.
>> Implement your own domain representation of an object, or use
>> #asString or #printString instead.
>>
>> Select Proceed to continue, or close this window to cancel the operation.
>>
>>
>

 

Reply via email to