Eliot Miranda uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-eem.787.mcz ==================== Summary ==================== Name: System-eem.787 Author: eem Time: 20 January 2016, 1:47:21.381067 pm UUID: 14aec38e-df6c-4751-9bb8-fa68dffb16e5 Ancestors: System-tpr.786 When triming change set history, nuke changes for methods that can't be found as well as those that have been added then removed. Add some robustness to parsing class names in class definitions in ChangeRecord. =============== Diff against System-tpr.786 =============== Item was changed: ----- Method: ChangeRecord>>methodClassName (in category 'access') ----- methodClassName | tokens | (class isNil and: [type = #doIt + and: [([(tokens := Scanner new scanTokens: self text) size >= 3] + on: Error do: [:ex| false]) - and: [(tokens := Scanner new scanTokens: self text) size >= 3 and: [(tokens includes: #'.') not "exclude multi-statement doits" and: [tokens first isSymbol and: [tokens first isKeyword not and: [tokens first first canBeGlobalVarInitial and: [(tokens includes: #instanceVariableNames:) or: [tokens second == #comment: or: [tokens third == #comment:]]]]]]]]]) ifTrue: ["Could be a class definition. Class definitions start with Superclass blahSubclass: #ClassName Metaclass definitions start with ClassName class instanceVariableNames:" (tokens second isSymbol and: [tokens second isKeyword and: [tokens third isSymbol and: [tokens third isKeyword not and: [(2 to: tokens size by: 2) allSatisfy: [:i| (tokens at: i) isKeyword]]]]]) ifTrue: [^tokens third]. (tokens size = 4 and: [tokens second = #class and: [(tokens third = #instanceVariableNames: or: [tokens third = #comment:]) and: [tokens last isString]]]) ifTrue: [^tokens first]. (tokens size = 3 and: [tokens second = #comment: and: [tokens last isString]]) ifTrue: [^tokens first]]. ^class! Item was changed: ----- Method: ClassChangeRecord>>trimHistory (in category 'all changes') ----- trimHistory "Drop non-essential history." + | realClass | + realClass := self realClass. "Forget methods added and later removed" methodChanges keysAndValuesRemove: + [:sel :chgRecord | + chgRecord changeType == #addedThenRemoved + "this removes methods that have been lost, e.g. by being deleted in a different change set, etc" + or: [(chgRecord changeType == #add or: [chgRecord changeType == #change]) + and: [realClass isNil or: [(realClass includesSelector: sel) not]]]]. - [:sel :chgRecord | chgRecord changeType == #addedThenRemoved]. "Forget renaming and reorganization of newly-added classes." (changeTypes includes: #add) ifTrue: + [changeTypes removeAllFoundIn: #(rename reorganize)]! - [changeTypes removeAllFoundIn: #(rename reorganize)]. - ! |
Free forum by Nabble | Edit this page |