>
>> Ok. If I understand this correctly, this is yet ANOTHER thing to test,
>> right?  I mean, it does not cover my original problem but another one
>> possible ;)
>> right?
>>
>
> I was assuming that my test is a superset of yours, but now I see it is
> not strict enough.  It also needs to compare bindings to see that they're
> identical. I've attached a stricter version.  This says that for any
> global, it should match either the class's notion of what bindingOf: the
> key is, or bindingOf: should be nil and the binding should be in
> Undeclared.   If the class answers a different binding through bindingOf:
> or answers no binding and the binding is not in Undeclared then the
> variable in the method is wrong.
>
>
Ok, now we agree :)
I commited this version and removed my previous test.

Thanks!



> methodsWithUnboundGlobals
> "Get all methods that use undeclared global objects that are not listed in
> Undeclared. For a clean image the result should be empty."
>
> "SystemNavigation new methodsWithUnboundGlobals"
>
> ^self allSelect:
>  [:m|
> m literals anySatisfy:
> [:l|
>  l isVariableBinding
> and: [l key isSymbol "avoid class-side methodClass literals"
>  and: [(m methodClass bindingOf: l key)
> ifNil: [(Undeclared associationAt: l key ifAbsent: []) ~~ l]
>  ifNotNil: [:b| b ~~ l]]]]]
>
>
> So I think with this stricter definition self assert: SystemNavigation
> new methodsWithUnboundGlobals isEmpty is an adequate test.
>
>
>> Thanks Eliot.
>>
>>
>>
>>
>>>  And I have 6 methods from the classes SmalltalkImage and ScriptLoader
>>>> and all the 6 literals are pointing to ScriptLoader. So something weird
>>>> happened with this class.
>>>> Any idea?
>>>>
>>>> For the moment I will update the test and do a Compiler recompileAll.
>>>>
>>>>
>>>>
>>>>
>>>>>
>>>>>> > Association >> #literalEqual: otherLiteral
>>>>>> >     "Answer true if the receiver and otherLiteral represent the same
>>>>>> > literal.
>>>>>> >     Variable bindings are literally equals only if identical.
>>>>>> >     This is how variable sharing works, by preserving identity and
>>>>>> changing
>>>>>> > only the value."
>>>>>> >     ^self == otherLiteral
>>>>>> >
>>>>>> > instead of the Object implementation.
>>>>>> >
>>>>>> >
>>>>>> >>
>>>>>> >> On 1 May 2012 17:52, Mariano Martinez Peck <[email protected]>
>>>>>> wrote:
>>>>>> >>>
>>>>>> >>> (Smalltalk globals associationAt: #ScriptLoader) ==
>>>>>> ((SmalltalkImage >>
>>>>>> >>> #shrinkToCore) literalAt: 4)
>>>>>> >>> gives false when it should be true.  If I do a Compiler
>>>>>> recompileAll it
>>>>>> >>> gets fixed. So, my question is, is that normal? how could that
>>>>>> happen?
>>>>>> >>> is there any real problem behind?
>>>>>> >>>
>>>>>> >>> anyway, can we do a recompileAll for the moment?
>>>>>> >>>
>>>>>> >>> thanks!
>>>>>> >>>
>>>>>> >>> --
>>>>>> >>> Mariano
>>>>>> >>> http://marianopeck.wordpress.com
>>>>>> >>>
>>>>>> >>
>>>>>> >
>>>>>> >
>>>>>> >
>>>>>> > --
>>>>>> > Mariano
>>>>>> > http://marianopeck.wordpress.com
>>>>>> >
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards,
>>>>>> Igor Stasenko.
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Mariano
>>>>> http://marianopeck.wordpress.com
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Mariano
>>>> http://marianopeck.wordpress.com
>>>>
>>>>
>>>
>>>
>>> --
>>> best,
>>> Eliot
>>>
>>>
>>
>>
>> --
>> Mariano
>> http://marianopeck.wordpress.com
>>
>>
>
>
> --
> best,
> Eliot
>
>


-- 
Mariano
http://marianopeck.wordpress.com

Reply via email to