[Pharo-project] Problem with loading Nautilus after Seaside
Not sure where to report this, so here goes... As of just recently, I can't load Nautilus after loading Seaside due to a name clash on "Bindings". It's a global in DynamicBindings-lr.13 (Seaside) and a class variable in Spec-Core-BenjaminVanRyseghem.9 (Nautilus). Ideally I think DynamicBindings wouldn't be putting a bare word symbol like "Bindings" into globals, but as it happens the declaration in Spec-Core/ComposableModel isn't used and could be removed. Cheers, Martin
thanks for the report. To me it looks like we changed some on classVar lookup and it is not modular anymore⦠Stef On Mar 27, 2012, at 11:16 PM, Martin Sandiford wrote:
Not sure where to report this, so here goes...
As of just recently, I can't load Nautilus after loading Seaside due to a name clash on "Bindings". It's a global in DynamicBindings-lr.13 (Seaside) and a class variable in Spec-Core-BenjaminVanRyseghem.9 (Nautilus).
If this is a class variable then it should not be a problem, code using a class var should see the class var before the global.
Ideally I think DynamicBindings wouldn't be putting a bare word symbol like "Bindings" into globals, but as it happens the declaration in Spec-Core/ComposableModel isn't used and could be removed.
Cheers, Martin
On Wed, Mar 28, 2012 at 8:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
thanks for the report. To me it looks like we changed some on classVar lookup and it is not modular anymoreâ¦
I don't really know enough about the system to judge whether the compiler is being over-conservative in this case. A minimal case to reproduce the same error is: Smalltalk at: #Foo put: #Foo. Then define a class: Object subclass: #FooTest instanceVariableNames: '' classVariableNames: 'Foo' "This is the trigger" poolDictionaries: '' category: 'ClassVar-Testing' On save, a debug window with "DuplicatedVariableError: Foo is defined elsewhere" is shown. I've tried this with a selection of images in the 1.4 set from 14400-14414 and with 1.3 13315 with the same results. It seems that Class>>declare: calls Class>>bindingOf: to check if a symbol is already bound, and this always returns non-nil for globals. Martin
Yes this is a bug probably due to the looked up of variable (bindingOf:) We should fix it for 1.4 Thanks. Stef On Mar 28, 2012, at 4:27 AM, Martin Sandiford wrote:
On Wed, Mar 28, 2012 at 8:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
thanks for the report. To me it looks like we changed some on classVar lookup and it is not modular anymoreâ¦
I don't really know enough about the system to judge whether the compiler is being over-conservative in this case.
A minimal case to reproduce the same error is:
Smalltalk at: #Foo put: #Foo.
Then define a class:
Object subclass: #FooTest instanceVariableNames: '' classVariableNames: 'Foo' "This is the trigger" poolDictionaries: '' category: 'ClassVar-Testing'
On save, a debug window with "DuplicatedVariableError: Foo is defined elsewhere" is shown.
I've tried this with a selection of images in the 1.4 set from 14400-14414 and with 1.3 13315 with the same results. It seems that Class>>declare: calls Class>>bindingOf: to check if a symbol is already bound, and this always returns non-nil for globals.
Martin
I entered a bug entry http://code.google.com/p/pharo/issues/detail?id=5566 Stef On Mar 28, 2012, at 7:18 AM, Stéphane Ducasse wrote:
Yes this is a bug probably due to the looked up of variable (bindingOf:) We should fix it for 1.4
Thanks.
Stef
On Mar 28, 2012, at 4:27 AM, Martin Sandiford wrote:
On Wed, Mar 28, 2012 at 8:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
thanks for the report. To me it looks like we changed some on classVar lookup and it is not modular anymoreâ¦
I don't really know enough about the system to judge whether the compiler is being over-conservative in this case.
A minimal case to reproduce the same error is:
Smalltalk at: #Foo put: #Foo.
Then define a class:
Object subclass: #FooTest instanceVariableNames: '' classVariableNames: 'Foo' "This is the trigger" poolDictionaries: '' category: 'ClassVar-Testing'
On save, a debug window with "DuplicatedVariableError: Foo is defined elsewhere" is shown.
I've tried this with a selection of images in the 1.4 set from 14400-14414 and with 1.3 13315 with the same results. It seems that Class>>declare: calls Class>>bindingOf: to check if a symbol is already bound, and this always returns non-nil for globals.
Martin
Bug fixed! Stef
I entered a bug entry http://code.google.com/p/pharo/issues/detail?id=5566
Stef
On Mar 28, 2012, at 7:18 AM, Stéphane Ducasse wrote:
Yes this is a bug probably due to the looked up of variable (bindingOf:) We should fix it for 1.4
Thanks.
Stef
On Mar 28, 2012, at 4:27 AM, Martin Sandiford wrote:
On Wed, Mar 28, 2012 at 8:12 AM, Stéphane Ducasse <stephane.ducasse@inria.fr> wrote:
thanks for the report. To me it looks like we changed some on classVar lookup and it is not modular anymoreâ¦
I don't really know enough about the system to judge whether the compiler is being over-conservative in this case.
A minimal case to reproduce the same error is:
Smalltalk at: #Foo put: #Foo.
Then define a class:
Object subclass: #FooTest instanceVariableNames: '' classVariableNames: 'Foo' "This is the trigger" poolDictionaries: '' category: 'ClassVar-Testing'
On save, a debug window with "DuplicatedVariableError: Foo is defined elsewhere" is shown.
I've tried this with a selection of images in the 1.4 set from 14400-14414 and with 1.3 13315 with the same results. It seems that Class>>declare: calls Class>>bindingOf: to check if a symbol is already bound, and this always returns non-nil for globals.
Martin
participants (2)
-
Martin Sandiford -
Stéphane Ducasse