[VW 7.9] Atomic load analyzer does not properly handle external interfaces

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

[VW 7.9] Atomic load analyzer does not properly handle external interfaces

Terry Raymond

 

Package A has an external interface that contains a define #MyDefine.

Package B has a class with a shared variable whose initializer expression is

‘MyInterface.MyDefine value’.

 

When package A and B are loaded from a prerequisite list, A followed by B, the

initializer fails because MyInterface.MyDefine has no binding.

 

The define is a simple define, i.e. #define MyDefine 10

 

Terry

 

===========================================================

Terry Raymond

Crafted Smalltalk

80 Lazywood Ln.

Tiverton, RI  02878

(401) 624-4517      [hidden email]

===========================================================

 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [VW 7.9] Atomic load analyzer does not properly handle external interfaces

Terry Raymond

I looked into this further.

 

If I load package A and then evaluate

MyInterface.MyDefine value

in a workspace I see the correct value.

 

However, if I try to initialize the variable I get a no binding error.

 

Terry

 

===========================================================

Terry Raymond

Crafted Smalltalk

80 Lazywood Ln.

Tiverton, RI  02878

(401) 624-4517      [hidden email]

===========================================================

 

From: Terry Raymond [mailto:[hidden email]]
Sent: Thursday, July 19, 2012 11:59 AM
To: VWNC ([hidden email])
Subject: [VW 7.9] Atomic load analyzer does not properly handle external interfaces

 

 

Package A has an external interface that contains a define #MyDefine.

Package B has a class with a shared variable whose initializer expression is

‘MyInterface.MyDefine value’.

 

When package A and B are loaded from a prerequisite list, A followed by B, the

initializer fails because MyInterface.MyDefine has no binding.

 

The define is a simple define, i.e. #define MyDefine 10

 

Terry

 

===========================================================

Terry Raymond

Crafted Smalltalk

80 Lazywood Ln.

Tiverton, RI  02878

(401) 624-4517      [hidden email]

===========================================================

 


_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc
Reply | Threaded
Open this post in threaded view
|

Re: [VW 7.9] Atomic load analyzer does not properly handle external interfaces

Samuel S. Shuster-2
Terry,

There seems to be a LOT more here than meets the eye.

I following,

I created a Package (call it PackageA) Added an External Interface subclass:

Smalltalk defineClass: #MyThang
superclass: #{External.ExternalInterface}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: '
private MyThangDictionary.*
'
category: 'ExternalInterface-New'
attributes: #(
#(#includeFiles #())
#(#includeDirectories #())
#(#libraryFiles #())
#(#libraryDirectories #())
#(#beVirtual false)
#(#optimizationLevel #full))

I added one (instance) method:

MyThang
<C: #define MyThang 3>

Now, I've never really done much of anything with DLLCC, but if I then evaluate:

MyThang.MyThang value, it nicely answers 3, even though there is no class method named MyThang.

Anyway, moving on.

I then create a new package named PackageB, and add a class:

Smalltalk defineClass: #Deddle
superclass: #{Core.Object}
indexedType: #none
private: false
instanceVariableNames: ''
classInstanceVariableNames: ''
imports: ''
category: ''

Now I add a SharedVariable named BindingBoy:

Smalltalk.Deddle defineSharedVariable: #BindingBoy
private: false
constant: false
category: 'MyThang'
initializer: 'MyThang.MyThang value'

Now here is where it STARTS to get interesting, I go to the prerequsites tab for the PackageB and I get a DNU !!!!

That needs to be reported to the Tools folks.

Anyway, I manually add the developmentPrerequisites and prerequisiteDescriptions properties, publish it all, unload it all, then then try to load just PackageB, and lo, everything loads fine.

Do you have a better example... I don't want this to just drop between the cracks.

I looked into this further.
 
If I load package A and then evaluate
MyInterface.MyDefine value
in a workspace I see the correct value.
 
However, if I try to initialize the variable I get a no binding error.


                                And So It Goes
                                     Sames
______________________________________________________________________

Samuel S. Shuster [|]
VisualWorks Engineering, Code Management Project




_______________________________________________
vwnc mailing list
[hidden email]
http://lists.cs.uiuc.edu/mailman/listinfo/vwnc