[squeak-dev] The Inbox: Kernel-ct.1455.mcz

christoph.thiede at student.hpi.uni-potsdam.de christoph.thiede at student.hpi.uni-potsdam.de
Mon Apr 4 11:45:23 UTC 2022


The probably largest change is that the instvar classComment is no longer guaranteed to be either nil or a RemoteString, but can also be a String or Text. I hope I haven't missed any other user. Otherwise, I'd be happy to merge this.

Best,
Christoph

---
Sent from Squeak Inbox Talk

On 2022-04-02T10:21:26-07:00, tim at rowledge.org wrote:

> Looks pretty good to me; I must confess I didn't think of class comments when I added the original "save no source" thing.
> 
> > On 2022-04-02, at 4:04 PM, commits at source.squeak.org wrote:
> > 
> > A new version of Kernel was added to project The Inbox:
> > http://source.squeak.org/inbox/Kernel-ct.1455.mcz
> > 
> > ==================== Summary ====================
> > 
> > Name: Kernel-ct.1455
> > Author: ct
> > Time: 2 April 2022, 6:03:46.669052 pm
> > UUID: d86c9223-8db7-e541-96bd-cde0c9b7fb92
> > Ancestors: Kernel-ul.1454
> > 
> > Proposal: Adds basic support for #acceptsLoggingOfCompilation to class comments by allowing strings in BasicClassOrganizer.classComment. With this change, installing updates in a read-only image becomes more feasible. Please review.
> > 
> > =============== Diff against Kernel-ul.1454 ===============
> > 
> > Item was changed:
> >  ----- Method: BasicClassOrganizer>>classComment (in category 'accessing') -----
> >  classComment
> >      classComment
> >          ifNil: [^ ''].
> > +     (classComment isString
> > +             or: [classComment isText])
> > +         ifTrue: [^ classComment].
> > +     ^ classComment text
> > +         ifNil: ['']!
> > -     ^ classComment text ifNil: ['']!
> > 
> > Item was changed:
> >  ----- Method: BasicClassOrganizer>>classComment:stamp: (in category 'accessing') -----
> >  classComment: aString  stamp: aStamp
> > +     "Store the comment, aString, associated with the object that refers to the receiver. PRIVATE!! Clients should use aClass classComment: instead."
> > -     "Store the comment, aString, associated with the object that refers to the receiver."
> > 
> >      self commentStamp: aStamp.
> >      (aString isKindOf: RemoteString) 
> >          ifTrue: [classComment := aString]
> >          ifFalse: [(aString == nil or: [aString size = 0])
> >              ifTrue: [classComment := nil]
> >              ifFalse:
> > +                 [classComment := aString]]
> > -                 [self error: 'use aClass classComment:'.
> > -                 classComment := RemoteString newString: aString onFileNumber: 2]]
> >                  "Later add priorSource and date and initials?"!
> > 
> > Item was changed:
> >  ----- Method: BasicClassOrganizer>>commentRemoteStr (in category 'accessing') -----
> >  commentRemoteStr
> > +     ^ (classComment isKindOf: RemoteString)
> > +         ifTrue: [classComment]!
> > -     ^ classComment!
> > 
> > Item was changed:
> >  ----- Method: BasicClassOrganizer>>fileOutCommentOn:moveSource:toFile: (in category 'fileIn/Out') -----
> >  fileOutCommentOn: aFileStream moveSource: moveSource toFile: fileIndex
> >      "Copy the class comment to aFileStream.  If moveSource is true (as in compressChanges or compressSources, then update classComment to point to the new file."
> >      | fileComment |
> > +     self hasNoComment ifTrue: [^ self].
> > +     
> > +     aFileStream cr.
> > +     fileComment := RemoteString
> > +         newString: self classComment
> > +         onFileNumber: fileIndex
> > +         toFile: aFileStream.
> > +     moveSource ifTrue: [classComment := fileComment].!
> > -     classComment ifNotNil: 
> > -             [aFileStream cr.
> > -             fileComment := RemoteString newString: classComment text
> > -                             onFileNumber: fileIndex toFile: aFileStream.
> > -             moveSource ifTrue: [classComment := fileComment]]!
> > 
> > Item was changed:
> >  ----- Method: BasicClassOrganizer>>moveChangedCommentToFile:numbered: (in category 'fileIn/Out') -----
> >  moveChangedCommentToFile: aFileStream numbered: fileIndex 
> >      "If the comment is in the changes file, then move it to a new file."
> > 
> > +     (self commentRemoteStr ~~ nil and: [classComment sourceFileNumber > 1]) ifTrue: 
> > -     (classComment ~~ nil and: [classComment sourceFileNumber > 1]) ifTrue: 
> >          [self fileOutCommentOn: aFileStream moveSource: true toFile: fileIndex]!
> > 
> > Item was changed:
> >  ----- Method: ClassDescription>>classComment:stamp: (in category 'fileIn/Out') -----
> >  classComment: aString stamp: aStamp
> >      "Store the comment, aString or Text or RemoteString, associated with the class we are organizing.  Empty string gets stored only if had a non-empty one before."
> > 
> > -     | ptr header file oldCommentRemoteStr |
> >      (aString isKindOf: RemoteString) ifTrue:
> >          [SystemChangeNotifier uniqueInstance classCommented: self.
> >          ^ self organization classComment: aString stamp: aStamp].
> > 
> > +     self acceptsLoggingOfCompilation
> > +         ifTrue:
> > +             [| ptr header file oldCommentRemoteStr |
> > +             oldCommentRemoteStr := self organization commentRemoteStr.
> > +             (aString size = 0) & (oldCommentRemoteStr == nil) ifTrue:
> > +                 ["never had a class comment, no need to write empty string out"
> > +                 ^ self organization classComment: nil].
> > +     
> > +             ptr := oldCommentRemoteStr ifNil: [0] ifNotNil: [oldCommentRemoteStr sourcePointer].
> > +             SourceFiles ifNotNil: [(file := SourceFiles at: 2) ifNotNil:
> > +                 [file setToEnd; cr; nextPut: $!!.    "directly"
> > +                 "Should be saying (file command: ''H3'') for HTML, but ignoring it here"
> > +                 header := String streamContents: [:strm | strm nextPutAll: self name;
> > +                     nextPutAll: ' commentStamp: '.
> > +                     aStamp storeOn: strm.
> > +                     strm nextPutAll: ' prior: '; nextPutAll: ptr printString].
> > +                 file nextChunkPut: header]].
> > +             self organization classComment: (RemoteString newString: aString onFileNumber: 2) stamp: aStamp.
> > +             file ifNotNil: [ InMidstOfFileinNotification signal ifFalse: [ file flush ] ]]
> > +         ifFalse:
> > +             [self organization classComment: aString stamp: aStamp].
> > +     
> > +     SystemChangeNotifier uniqueInstance classCommented: self.!
> > -     oldCommentRemoteStr := self organization commentRemoteStr.
> > -     (aString size = 0) & (oldCommentRemoteStr == nil) ifTrue: [^ self organization classComment: nil].
> > -         "never had a class comment, no need to write empty string out"
> > - 
> > -     ptr := oldCommentRemoteStr ifNil: [0] ifNotNil: [oldCommentRemoteStr sourcePointer].
> > -     SourceFiles ifNotNil: [(file := SourceFiles at: 2) ifNotNil:
> > -         [file setToEnd; cr; nextPut: $!!.    "directly"
> > -         "Should be saying (file command: 'H3') for HTML, but ignoring it here"
> > -         header := String streamContents: [:strm | strm nextPutAll: self name;
> > -             nextPutAll: ' commentStamp: '.
> > -             aStamp storeOn: strm.
> > -             strm nextPutAll: ' prior: '; nextPutAll: ptr printString].
> > -         file nextChunkPut: header]].
> > -     self organization classComment: (RemoteString newString: aString onFileNumber: 2) stamp: aStamp.
> > -     file ifNotNil: [ InMidstOfFileinNotification signal ifFalse: [ file flush ] ].
> > -     SystemChangeNotifier uniqueInstance classCommented: self.
> > - !
> > 
> > 
> > 
> 
> 
> tim
> --
> tim Rowledge; tim at rowledge.org; http://www.rowledge.org/tim
> Oxymorons: Exact estimate
> 
> 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/squeak-dev/attachments/20220404/a4298597/attachment.html>


More information about the Squeak-dev mailing list