Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
valuesportinglog [2022/01/31 19:05]
christian [FileIn 4]
valuesportinglog [2022/02/27 13:30]
christian [FileIn 3]
Line 12: Line 12:
  ^PackageChange new</code>  ^PackageChange new</code>
  
 +If you don't have VisualWorks and cannot create the fileOut yourself, all versions are on GitHub.
 +
 +The fileOut of this configuration is [[https://github.com/PortingPDFtalk/SqueakValues/releases/tag/3.0.0.2|here]].
 ===== First FileIn ===== ===== First FileIn =====
  
 File out from VW with  File out from VW with 
 <code Smalltalk>Squeak fileOutValues</code> <code Smalltalk>Squeak fileOutValues</code>
-Start squeak, open the Transcript and file in "Values.Squeak.stwith+Start squeak, open the Transcript and file in [[https://github.com/PortingPDFtalk/SqueakValues/blob/43f7e61d7dfc2ffac9063a4b3636fc2b1f3559ef/Values.Squeak.st|Values.Squeak.st]] with
  
 <code Smalltalk>FileStream fileIn: 'C:\Users\Christian\Documents\image\Values.Squeak.st'</code> <code Smalltalk>FileStream fileIn: 'C:\Users\Christian\Documents\image\Values.Squeak.st'</code>
Line 56: Line 59:
 ===== FileIn 2 ===== ===== FileIn 2 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/89f46631c98e54aa7e4ca101826e15ceb626091a/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 80% until it hits the error that ColorValue is not defined. Loads about 80% until it hits the error that ColorValue is not defined.
Line 118: Line 121:
 ===== FileIn 3 ===== ===== FileIn 3 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/77bd6a94b7b0ca5f2844f0feab17414454e55c93/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 85% until it hits the error that GeneralBindingReference is not defined. Loads about 85% until it hits the error that GeneralBindingReference is not defined.
Line 180: Line 183:
 FileOut from VW, then fileIn into a fresh Squeak image. FileOut from VW, then fileIn into a fresh Squeak image.
  
-Loads about 97until it hits the error that Timestamp is not defined.+Loads without errors or warnings!. 
 + 
 +<HTML> 
 +First milestone: <span style="background-color:yellow;font-size:150%;border:2px solid lightgray;">Clean fileIn without errors or warnings!</span><br><br> 
 +</HTML> 
 + 
 +Next step: fileIn the tests. 
 + 
 +===== FileIn 6 - Tests ===== 
 + 
 +Added Squeak class method ''#fileOutValuesTesting'' analog to ''#fileOutValues'': 
 + 
 +<code Smalltalk>fileOutValuesTesting 
 + self 
 + write: ('.' asFilename construct: 'ValuesTesting.Squeak.st'
 + pundles: (Array with: (Store.Registry packageNamed: #'Values Testing')) 
 + package: #'Values-Testing' 
 + prerequisites: nil 
 + packageChanges: (Valuemap with: 'Values Testing' -> self ValuesTestingTransform) 
 +</code> 
 + 
 +with the standard transformation for Value classes: 
 + 
 +<code Smalltalk> 
 +ValuesTestingTransform 
 + ^PackageChange hierarchyChanges: (Array with: (ClassChange 
 + classReference: #{Smalltalk.Value} 
 + classChanges: (Array with: (Rewrite method: #localSpecification rule: #replaceLiteralBindingWithPath)))) 
 +</code> 
 + 
 +FileOut from VW with: 
 + 
 +<code Smalltalk>Squeak fileOutValuesTesting</code> 
 + 
 +then fileIn into a Squeak image  with Values loaded. 
 + 
 +Loads without errors.
  
 The Transcript shows: The Transcript shows:
 <code Smalltalk> <code Smalltalk>
-UndefinedObject>>DoIt (Timestamp is Undeclared)  +ValuemapTests>>testIndexedAccess (SubscriptOutOfBoundsError is Undeclared)  
-UndefinedObject>>DoIt (Timestamp is Undeclared)  +ValuemapTests>>testIndexedAccess (SubscriptOutOfBoundsError is Undeclared)  
-UndefinedObject>>DoIt (Timestamp is Undeclared)  +ValuemapTests>>testIndexedAccess (NonIntegerIndexError is Undeclared)  
-UndefinedObject>>DoIt (Timestamp is Undeclared)  +ValuemapTests>>testIndexedAccess (NonIntegerIndexError is Undeclared)  
-UndefinedObject>>DoIt (Timestamp is Undeclared) +ValuemapTests>>testKeyedAccess (NotFoundError is Undeclared)  
 +ValuemapTests>>testRemoving (NotFoundError is Undeclared)  
 +ValuemapTests>>testRemoving (NotFoundError is Undeclared)  
 +ValuemapTests>>testRemoving (NotFoundError is Undeclared)  
 +ValuemapTests>>testRemoving (NotFoundError is Undeclared) 
 </code> </code>
  
-We do the same trick as in FileIn x and set DateAndTime as superclass of TimestampThe new Transformation is:+The VW error classes are not known in SqueakWe define a rewrite of the three test methods:
  
 <code Smalltalk> <code Smalltalk>
-ValuesTransform+ValuesTestingTransform
  ^PackageChange  ^PackageChange
- unusedClasses: #(#{Smalltalk.GeneralBindingReference}) 
- newSuperclasses: (Valuemap 
- with: #{Smalltalk.ColorValue} -> #Color 
- with: #{Timestamp} -> #DateAndTime) 
  hierarchyChanges: (Array with: (ClassChange  hierarchyChanges: (Array with: (ClassChange
  classReference: #{Smalltalk.Value}  classReference: #{Smalltalk.Value}
  classChanges: (Array with: (Rewrite method: #localSpecification rule: #replaceLiteralBindingWithPath))))  classChanges: (Array with: (Rewrite method: #localSpecification rule: #replaceLiteralBindingWithPath))))
- localChanges: self valuesLocalTransform+ localChanges: (Array with: (ClassChange 
 + classReference: #{Smalltalk.ValuemapTests} 
 + instanceChanges: ((OrderedCollection new) 
 + add: (Rewrite method: #testIndexedAccess rule: #replaceSqueakErrorClasses); 
 + add: (Rewrite method: #testKeyedAccess rule: #replaceSqueakErrorClasses); 
 + add: (Rewrite method: #testRemoving rule: #replaceSqueakErrorClasses); 
 + yourself)))
 </code> </code>
  
-Published as **[Squeak Fileout PDFtalk] (3.0.0.6,chaider)** with the updated transformation.+The rule ''#replaceSqueakErrorClasses'' in class ''ParseTreeRewriter'' (analog to ''#replaceGemstoneErrorClasses'') replaces the Error classes by string replacement: 
 + 
 +<code Smalltalk> 
 +replaceSqueakErrorClasses 
 + ^(self new) 
 + replace: SubscriptOutOfBoundsError name asString with: #Error asString; 
 + replace: NonIntegerIndexError name asString with: #Error asString; 
 + replace: NotFoundError name asString with: #NotFound asString; 
 + yourself 
 +</code> 
 + 
 +Published as **[Squeak Fileout PDFtalk] (3.0.0.7,chaider)** with the updated transformation
 +===== FileIn 7 - Tests ===== 
 + 
 +FileOut [Values] and [Values Testing], then fileIn into a fresh Squeak image. 
 + 
 +Loads without errors or warnings! 
 + 
 +<HTML> 
 +2. milestone: <span style="background-color:yellow;font-size:150%;border:2px solid lightgray;">Clean fileIn of the tests without errors or warnings!</span><br><br> 
 +</HTML> 
 + 
 +Test results: 
 +25 run in 0:00:00:00, 0 passes, 0 expected failures, 1 failures, 24 errors, 0 unexpected passes 
 + 
 +{{:values:2022-02-01_values.squeak.zip |This Squeak fileOut (2022-02-01)}} contains the current ''Values.Squeak.st'' and ''ValuesTesting.Squeak.st''.
  
 +The next step must be done in Squeak: fix the implementation to make the tests pass and modify the transformation so that the next fileOut contains the right code. If you don't have access to VW, please send a change file.
  • valuesportinglog.txt
  • Last modified: 2022/02/27 13:34
  • by christian