# HG changeset patch # User Claus Gittinger # Date 1421097429 -3600 # Node ID 90d8b9febd7adfc83168cd497165f304dcf2216f # Parent e93cd2eb8afac9b8fd5fe2329390a98991ead591 class: ChangesBrowser changed: #doApplyRest support for VSE variableByte classes diff -r e93cd2eb8afa -r 90d8b9febd7a ChangesBrowser.st --- a/ChangesBrowser.st Mon Jan 12 15:25:18 2015 +0100 +++ b/ChangesBrowser.st Mon Jan 12 22:17:09 2015 +0100 @@ -1759,12 +1759,15 @@ "if we apply multiple changes, and an error occurs, ask the user if all operations should be aborted..." multipleApply := (lastNr - changeNr) > 1. - - changeNr to:lastNr do:[:changeNr | - changeListView setSelection:changeNr. - self applyChange:changeNr - ]. - self autoSelect:self numberOfChanges. + AbortAllOperationRequest handle:[:ex | + ex return + ] do:[ + changeNr to:lastNr do:[:changeNr | + changeListView setSelection:changeNr. + self applyChange:changeNr + ]. + self autoSelect:self numberOfChanges. + ] ] "Modified: 21.1.1997 / 22:25:29 / cg" @@ -6245,7 +6248,7 @@ processNonMethodChunk |s changeClass sel cls p rec clsName ownerTree ownerName - m nameAndClass| + m nameAndClass args instVarsArg classVarsArg categoryArg| (chunkText startsWith:'''---- snap') ifTrue:[ self processSnapshotChunk. @@ -6271,6 +6274,7 @@ p isMessage ifTrue:[ sel := p selector. rec := p receiver. + args := p args. ] ] ifFalse:[ sel := nil. @@ -6301,19 +6305,20 @@ (changeClass isNil or:[changeClass isLoaded not]) ifTrue:[ changeDelta := '?' ] ifFalse:[ - (changeClass comment = (p args at:1) evaluate) ifTrue:[ + (changeClass comment = (args at:1) evaluate) ifTrue:[ changeDelta := '='. ] ] ]. - sel := nil. + "/ sel := nil. + ^ self. ]. (sel == #removeSelector:) ifTrue:[ nameAndClass := self extractClassAndClassNameFromParseTree:rec. clsName := nameAndClass key. changeClass := nameAndClass value. - sel := (p args at:1) evaluate. + sel := (args at:1) evaluate. changeClassNames at:changeClassNames size put:clsName. autoCompare value ifTrue:[ @@ -6329,7 +6334,8 @@ ]. changeType := '(remove)'. changeString := self contractClass:clsName selector:sel to:maxLen. - sel := nil. + "/ sel := nil. + ^ self. ]. (p notNil @@ -6357,6 +6363,7 @@ ] ] ]. + ^ self. ]. (sel == #privacy:) ifTrue:[ sel := (rec args at:1) evaluate. @@ -6370,18 +6377,19 @@ changeDelta := ' ' ] ]. + ^ self. ]. sel := nil. ]. (Class definitionSelectors includes:sel) ifTrue:[ changeType := '(class definition)'. - clsName := (p args at:1) evaluate. + clsName := (args at:1) evaluate. changeClassNames at:changeClassNames size put:clsName. "/ is it a private-class ? ('*privateIn:' match:sel) ifTrue:[ - ownerTree := p args last. + ownerTree := args last. ownerName := ownerTree name asString. clsName := ownerName , '::' , clsName ]. @@ -6411,19 +6419,28 @@ and:[p receiver isConstant not and:[cls superclass name = p receiver name]] ]) ifTrue:[ - cls instanceVariableString asCollectionOfWords = (p args at:2) evaluate asCollectionOfWords ifTrue:[ - cls classVariableString asCollectionOfWords = (p args at:3) evaluate asCollectionOfWords ifTrue:[ - (p args at:4) evaluate isEmpty ifTrue:[ - cls definitionSelector = (sel , 'category:') - ifTrue:[ - "/ ST/V, VAge or Dolphin definition + (sel == #'variableByteSubclass:classVariableNames:poolDictionaries:category:') + ifTrue:[ + "/ VSE definition message + instVarsArg := ''. + classVarsArg := (args at:2) evaluate. + categoryArg := (args at:4) evaluate. + ] ifFalse:[ + instVarsArg := (args at:2) evaluate. + classVarsArg := (args at:3) evaluate. + categoryArg := (args at:5) evaluate. + ]. + cls instanceVariableString asCollectionOfWords = instVarsArg asCollectionOfWords ifTrue:[ + cls classVariableString asCollectionOfWords = classVarsArg asCollectionOfWords ifTrue:[ + cls definitionSelector = (sel , 'category:') + ifTrue:[ + "/ ST/V, VAge or Dolphin definition + changeDelta := '='. + ] ifFalse:[ + cls category = categoryArg ifTrue:[ changeDelta := '='. ] ifFalse:[ - cls category = (p args at:5) evaluate ifTrue:[ - changeDelta := '='. - ] ifFalse:[ - changeType := '(class category change)'. - ] + changeType := '(class category change)'. ] ] ] @@ -6432,36 +6449,39 @@ ] ] ]. - sel := nil. - ] ifFalse:[ - (#( - #'primitiveDefinitions:' - #'primitiveFunctions:' - #'primitiveVariables:' - ) includes:sel) ifTrue:[ - changeType := '(class definition)'. - clsName := rec name. - ] ifFalse:[ - ((sel == #instanceVariableNames:) - and:[rec isMessage - and:[rec selector == #class]]) ifTrue:[ - clsName := rec receiver name. - changeClass := (self nameSpaceForApply) classNamed:clsName. - changeType := '(class definition)'. - changeClassNames at:changeClassNames size put:clsName. - - autoCompare value ifTrue:[ - changeClass isNil ifTrue:[ - changeDelta := '?'. - ] ifFalse:[ - s := (p args at:1) evaluate. - s = changeClass class instanceVariableString ifTrue:[ - changeDelta := '='. - ] - ] - ]. + "/ sel := nil. + ^ self. + ]. + + (#( + #'primitiveDefinitions:' + #'primitiveFunctions:' + #'primitiveVariables:' + ) includes:sel) ifTrue:[ + changeType := '(class definition)'. + clsName := rec name. + ^ self. + ]. + + ((sel == #instanceVariableNames:) + and:[rec isMessage + and:[rec selector == #class]]) ifTrue:[ + clsName := rec receiver name. + changeClass := (self nameSpaceForApply) classNamed:clsName. + changeType := '(class definition)'. + changeClassNames at:changeClassNames size put:clsName. + + autoCompare value ifTrue:[ + changeClass isNil ifTrue:[ + changeDelta := '?'. + ] ifFalse:[ + s := (p args at:1) evaluate. + s = changeClass class instanceVariableString ifTrue:[ + changeDelta := '='. + ] ] - ] + ]. + ^ self. ]. "Modified: / 14-08-2010 / 12:54:24 / cg" @@ -6528,10 +6548,10 @@ !ChangesBrowser class methodsFor:'documentation'! version - ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.465 2015-01-04 19:00:04 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.466 2015-01-12 21:17:09 cg Exp $' ! version_CVS - ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.465 2015-01-04 19:00:04 cg Exp $' + ^ '$Header: /cvs/stx/stx/libtool/ChangesBrowser.st,v 1.466 2015-01-12 21:17:09 cg Exp $' ! !