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
valuesportinglog [2022/01/31 19:05]
christian [FileIn 4]
valuesportinglog [2022/02/27 13:34]
christian [FileIn 6 - Tests]
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 146: Line 149:
 ===== FileIn 4 ===== ===== FileIn 4 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/6f52f46cef184aa47b2bd48896417b6eb2d3b6d3/Values.Squeak.st|Values.Squeak.st]] into a fresh Squeak image.
  
 Loads about 97% until it hits the error that Timestamp is not defined. Loads about 97% until it hits the error that Timestamp is not defined.
Line 178: Line 181:
 ===== FileIn 5 ===== ===== FileIn 5 =====
  
-FileOut from VW, then fileIn into a fresh Squeak image.+FileOut from VW, then fileIn [[https://github.com/PortingPDFtalk/SqueakValues/blob/084fcf08b7fee76e4534b57a8e4fe6336f5bc986/Values.Squeak.st|Values.Squeak.st]] 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 [[https://github.com/PortingPDFtalk/SqueakValues/blob/084fcf08b7fee76e4534b57a8e4fe6336f5bc986/ValuesTesting.Squeak.st|ValuesTesting.Squeak.st]] 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