[squeak-dev] Re: Error "opaque URL with no scheme--shouldn't happen!" after updating trunk from 10474 to 10500

Levente Uzonyi leves at elte.hu
Tue Jan 11 01:40:54 UTC 2011



Quoting Frank Shearar <frank.shearar at angband.za.org>:

> On 2011/01/02 11:13, Levente Uzonyi wrote:
>> On Fri, 31 Dec 2010, Frank Shearar wrote:
>>
>>> On 2010/12/31 16:12, Levente Uzonyi wrote:
>>>> On Fri, 31 Dec 2010, Frank Shearar wrote:
>>>>
>>>>> On 2010/12/31 13:59, Enrico Spinielli wrote:
>>>>>> Hi,
>>>>>> I still have the following applied in my image and I see it is still
>>>>>> not yet in Trunk.
>>>>>> Any core developer willing to commit it?
>>>>>
>>>>> It's not in the Inbox anymore and you're right, it wasn't applied. I
>>>>> have a local copy I can put back in the Inbox, if it's convenient? Or
>>>>> if preferred I can remake the submission based on Network's latest
>>>>> version.
>>>>
>>>> I moved it to the treated inbox, because another solution was applied.
>>>> SchemeRegistry has HttpUrl at nil, so Url urlClassForScheme: nil should
>>>> return HttpUrl.
>>>
>>> Right, I see so. My confusion in reconstructing history came from
>>> Andreas suggesting the fix I implemented in Network-fbs.91, after
>>> suggesting we either fix the call sites causing the issue or what you
>>> then did on 2010/10/28, Levente, and then not seeing anything happen
>>> after that (in my possibly too-brief investigation).
>>>
>>> (Why, by the way, do we _not_ call super initialize?)
>>
>>> From which method?
>
> Url class>>initialize. In a git-like diff we have
>
> +++	SchemeRegistry := Dictionary new
> ---	super initialize.
> ---	SchemeRegistry := Dictionary new.
> ---	SchemeRegistry
> 		at: 'browser' put: BrowserUrl;
> 		at: 'file' put: FileUrl;
> 		at: 'ftp' put: FtpUrl;
> 		at: 'http' put: HttpUrl;
> 		at: 'https' put: HttpUrl;
> 		at: 'mailto' put: MailtoUrl;
> 		at: nil put: HttpUrl;
> 		yourself
> ---		at: 'mailto' put: MailtoUrl.

There are a few reasons why we shouldn't send #initialize to super  
from the class side. In this case it doesn't make a real difference,  
because Url is a subclass of Object, and Object implements #initialize  
on the class side relatively safely. What are the problems with the  
super sends?
- if your class is not a subclass of Object, but ProtoObject, then  
sending #initialize to super will mess up your class, because you will  
execute Behavior >> #initialize.
- a superclass may initialize class variables which are shared by it's  
subclasses, doing that from the subclasses may break some stuff.


Levente

>
> frank
>>
>>
>> Levente
>>
>>>
>>> frank
>>>>
>>>>
>>>> Levente
>>>>
>>>>>
>>>>> frank
>>>>>
>>>>>>
>>>>>> Hope it helps
>>>>>> Bye
>>>>>> Enrico
>>>>>>
>>>>>> On Wed, Sep 8, 2010 at 08:31, Frank Shearar
>>>>>> <frank.shearar at angband.za.org> wrote:
>>>>>>> On 2010/09/08 08:04, Andreas Raab wrote:
>>>>>>>>
>>>>>>>> On 9/7/2010 11:01 PM, Frank Shearar wrote:
>>>>>>>>>
>>>>>>>>> There's a quicker test: Do It with: Url absoluteFromText: 'foo'
>>>>>>>>>
>>>>>>>>> Up until my submission (which is causing this trouble), "no scheme"
>>>>>>>>> meant "use an HttpUrl".
>>>>>>>>>
>>>>>>>>> I can see two ways forward: (a) fix the calling sites like C. A.
>>>>>>>>> Oliver's submission, or (b) add "at: nil put: HttpUrl" in the
>>>>>>>>> SchemeRegistry.
>>>>>>>>>
>>>>>>>>> I prefer (a) myself: 'foo' isn't any kind of valid _absolute_ URI.
>>>>>>>>>
>>>>>>>>> The Inbox contains Network-fbs.90, which contains (b)'s fix.
>>>>>>>>
>>>>>>>> Perhaps even easier:
>>>>>>>>
>>>>>>>> ^SchemeRegistry at: (scheme ifNil:['http']) ifAbsent:[GenericUrl]
>>>>>>>
>>>>>>> I prefer this to my submission: it doesn't pollute SchemeRegistry.
>>>>>>>
>>>>>>> Network-fbs.91 contains it.
>>>>>>>
>>>>>>> frank
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
>
>
>







More information about the Squeak-dev mailing list