Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.633.mcz
==================== Summary ====================
Name: Kernel-eem.633
Author: eem
Time: 4 October 2011, 12:28:38.308 pm
UUID: b7fedf5b-2cb3-4420-8f0d-c66ac6715c53
Ancestors: Kernel-eem.632
Pragmas need to be #=, not just #==.
MethodPragmaTests now all pass.
=============== Diff against Kernel-eem.632 ===============
Item was added:
+ ----- Method: Pragma>>= (in category 'comparing') -----
+ = anObject
+ ^self class == anObject class
+ and: [keyword == anObject keyword
+ and: [arguments = anObject arguments]]!
Item was added:
+ ----- Method: Pragma>>hash (in category 'comparing') -----
+ hash
+ ^keyword hash + arguments hash!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.633.mcz
==================== Summary ====================
Name: Kernel-eem.633
Author: eem
Time: 4 October 2011, 12:28:38.308 pm
UUID: b7fedf5b-2cb3-4420-8f0d-c66ac6715c53
Ancestors: Kernel-eem.632
Pragmas need to be #=, not just #==.
MethodPragmaTests now all pass.
=============== Diff against Kernel-eem.632 ===============
Item was added:
+ ----- Method: Pragma>>= (in category 'comparing') -----
+ = anObject
+ ^self class == anObject class
+ and: [keyword == anObject keyword
+ and: [arguments = anObject arguments]]!
Item was added:
+ ----- Method: Pragma>>hash (in category 'comparing') -----
+ hash
+ ^keyword hash + arguments hash!
Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.633.mcz
==================== Summary ====================
Name: Kernel-eem.633
Author: eem
Time: 4 October 2011, 12:28:38.308 pm
UUID: b7fedf5b-2cb3-4420-8f0d-c66ac6715c53
Ancestors: Kernel-eem.632
Pragmas need to be #=, not just #==.
MethodPragmaTests now all pass.
=============== Diff against Kernel-eem.632 ===============
Item was added:
+ ----- Method: Pragma>>= (in category 'comparing') -----
+ = anObject
+ ^self class == anObject class
+ and: [keyword == anObject keyword
+ and: [arguments = anObject arguments]]!
Item was added:
+ ----- Method: Pragma>>hash (in category 'comparing') -----
+ hash
+ ^keyword hash + arguments hash!
Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.218.mcz
==================== Summary ====================
Name: Compiler-nice.218
Author: nice
Time: 4 October 2011, 9:16:03.441 pm
UUID: 32663b2d-f5b4-4d87-bd75-22732f1821c0
Ancestors: Compiler-eem.217
Add a backward compatibility preference for allowing compilation of #, #. and other uni-character symbols.
This is necessary for loading some outdated packages.
=============== Diff against Compiler-eem.217 ===============
Item was changed:
Object subclass: #Scanner
instanceVariableNames: 'source mark hereChar aheadChar token tokenType currentComment buffer typeTable'
+ classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors AllowUnicharSymbol DoItCharacter TypeTable'
- classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors DoItCharacter TypeTable'
poolDictionaries: ''
category: 'Compiler-Kernel'!
!Scanner commentStamp: 'ul 4/3/2011 02:04' prior: 0!
I scan a string or text, picking out Smalltalk syntactic tokens. I look one character ahead. I put each token found into the instance variable, token, and its type (a Symbol) into the variable, tokenType. At the end of the input stream, I pretend to see an endless sequence of special characters called doIts.
Instance Variables
aheadChar: <Character>
buffer: <WriteStream>
currentComment: <OrderedCollection>
hereChar: <Character>
mark: <Integer>
source: <ReadStream>
token: <Symbol|String|NumberCharacter|Boolean|nil>
tokenType: <Symbol>
typeTable: <Array>
aheadChar
- the next character in the input stream
buffer
- a reusable WriteStream on a String which is used for building strings. Shouldn't be used from multiple methods without resetting.
currentComment
- an OrderedCollection of strings which contain all comments between the current token and the previous token or the beginning of the source.
hereChar
- the current character
mark
- the position of the current token in the source stream
source
- the input stream of characters
token
- the current token
tokenType
- the type of the current token. The possible token types are: #binary, #character, #colon, #doIt, #keyword, #leftArrow, #leftBrace, #leftBracket, #leftParenthesis, #literal, #period, #rightBrace, #rightBracket, #rightParenthesis, #semicolon, #string, #upArrow, #verticalBar, #word, #xBinary, #xColon, #xDelimiter, #xDigit, #xDollar, #xDoubleQuote, #xLetter, #xLitQuote, #xSingleQuote, #xUnderscore
typeTable
- an array that maps each an evaluable tokenType to each character with asciiValue between 0 and 255!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol (in category 'preferences') -----
+ prefAllowUnicharSymbol
+ "Accessor for the system-wide preference"
+ <preference: 'Allow symbols with unique character like #,'
+ category: 'Compiler'
+ description: 'When true, the historical syntax #, #; or #. is allowed.'
+ type: #Boolean>
+ ^AllowUnicharSymbol ifNil: [false]!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol: (in category 'preferences') -----
+ prefAllowUnicharSymbol: aBoolean
+ "Accessor for the system-wide preference"
+ AllowUnicharSymbol := aBoolean!
Item was changed:
----- Method: Scanner>>xLitQuote (in category 'multi-character scans') -----
xLitQuote
"Symbols and vectors: #(1 (4 5) 2 3) #ifTrue:ifFalse: #'abc'."
| start |
start := mark.
self step. "litQuote"
self scanToken.
tokenType == #leftParenthesis
ifTrue: [self scanToken; scanLitVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched parenthesis']]
ifFalse: [tokenType == #leftBracket
ifTrue: [self scanToken; scanLitByteVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched bracket']]
ifFalse: [(tokenType == #word or: [tokenType == #keyword or: [tokenType == #colon]])
ifTrue: [self scanLitWord]
ifFalse: [tokenType == #string
ifTrue: [token := token asSymbol]
ifFalse: [(tokenType == #binary or: [ tokenType == #verticalBar ])
+ ifFalse: [(token isCharacter and: [self class prefAllowUnicharSymbol])
+ ifTrue:
+ [tokenType := Symbol.
+ token := Symbol with: token]
+ ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]]].
- ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]].
mark := start.
tokenType := #literal
"#(Pen)
#Pen
#'Pen'
##Pen
###Pen
"!
Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.218.mcz
==================== Summary ====================
Name: Compiler-nice.218
Author: nice
Time: 4 October 2011, 9:16:03.441 pm
UUID: 32663b2d-f5b4-4d87-bd75-22732f1821c0
Ancestors: Compiler-eem.217
Add a backward compatibility preference for allowing compilation of #, #. and other uni-character symbols.
This is necessary for loading some outdated packages.
=============== Diff against Compiler-eem.217 ===============
Item was changed:
Object subclass: #Scanner
instanceVariableNames: 'source mark hereChar aheadChar token tokenType currentComment buffer typeTable'
+ classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors AllowUnicharSymbol DoItCharacter TypeTable'
- classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors DoItCharacter TypeTable'
poolDictionaries: ''
category: 'Compiler-Kernel'!
!Scanner commentStamp: 'ul 4/3/2011 02:04' prior: 0!
I scan a string or text, picking out Smalltalk syntactic tokens. I look one character ahead. I put each token found into the instance variable, token, and its type (a Symbol) into the variable, tokenType. At the end of the input stream, I pretend to see an endless sequence of special characters called doIts.
Instance Variables
aheadChar: <Character>
buffer: <WriteStream>
currentComment: <OrderedCollection>
hereChar: <Character>
mark: <Integer>
source: <ReadStream>
token: <Symbol|String|NumberCharacter|Boolean|nil>
tokenType: <Symbol>
typeTable: <Array>
aheadChar
- the next character in the input stream
buffer
- a reusable WriteStream on a String which is used for building strings. Shouldn't be used from multiple methods without resetting.
currentComment
- an OrderedCollection of strings which contain all comments between the current token and the previous token or the beginning of the source.
hereChar
- the current character
mark
- the position of the current token in the source stream
source
- the input stream of characters
token
- the current token
tokenType
- the type of the current token. The possible token types are: #binary, #character, #colon, #doIt, #keyword, #leftArrow, #leftBrace, #leftBracket, #leftParenthesis, #literal, #period, #rightBrace, #rightBracket, #rightParenthesis, #semicolon, #string, #upArrow, #verticalBar, #word, #xBinary, #xColon, #xDelimiter, #xDigit, #xDollar, #xDoubleQuote, #xLetter, #xLitQuote, #xSingleQuote, #xUnderscore
typeTable
- an array that maps each an evaluable tokenType to each character with asciiValue between 0 and 255!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol (in category 'preferences') -----
+ prefAllowUnicharSymbol
+ "Accessor for the system-wide preference"
+ <preference: 'Allow symbols with unique character like #,'
+ category: 'Compiler'
+ description: 'When true, the historical syntax #, #; or #. is allowed.'
+ type: #Boolean>
+ ^AllowUnicharSymbol ifNil: [false]!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol: (in category 'preferences') -----
+ prefAllowUnicharSymbol: aBoolean
+ "Accessor for the system-wide preference"
+ AllowUnicharSymbol := aBoolean!
Item was changed:
----- Method: Scanner>>xLitQuote (in category 'multi-character scans') -----
xLitQuote
"Symbols and vectors: #(1 (4 5) 2 3) #ifTrue:ifFalse: #'abc'."
| start |
start := mark.
self step. "litQuote"
self scanToken.
tokenType == #leftParenthesis
ifTrue: [self scanToken; scanLitVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched parenthesis']]
ifFalse: [tokenType == #leftBracket
ifTrue: [self scanToken; scanLitByteVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched bracket']]
ifFalse: [(tokenType == #word or: [tokenType == #keyword or: [tokenType == #colon]])
ifTrue: [self scanLitWord]
ifFalse: [tokenType == #string
ifTrue: [token := token asSymbol]
ifFalse: [(tokenType == #binary or: [ tokenType == #verticalBar ])
+ ifFalse: [(token isCharacter and: [self class prefAllowUnicharSymbol])
+ ifTrue:
+ [tokenType := Symbol.
+ token := Symbol with: token]
+ ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]]].
- ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]].
mark := start.
tokenType := #literal
"#(Pen)
#Pen
#'Pen'
##Pen
###Pen
"!
Nicolas Cellier uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-nice.218.mcz
==================== Summary ====================
Name: Compiler-nice.218
Author: nice
Time: 4 October 2011, 9:16:03.441 pm
UUID: 32663b2d-f5b4-4d87-bd75-22732f1821c0
Ancestors: Compiler-eem.217
Add a backward compatibility preference for allowing compilation of #, #. and other uni-character symbols.
This is necessary for loading some outdated packages.
=============== Diff against Compiler-eem.217 ===============
Item was changed:
Object subclass: #Scanner
instanceVariableNames: 'source mark hereChar aheadChar token tokenType currentComment buffer typeTable'
+ classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors AllowUnicharSymbol DoItCharacter TypeTable'
- classVariableNames: 'AllowBlockArgumentAssignment AllowUnderscoreAssignments AllowUnderscoreSelectors DoItCharacter TypeTable'
poolDictionaries: ''
category: 'Compiler-Kernel'!
!Scanner commentStamp: 'ul 4/3/2011 02:04' prior: 0!
I scan a string or text, picking out Smalltalk syntactic tokens. I look one character ahead. I put each token found into the instance variable, token, and its type (a Symbol) into the variable, tokenType. At the end of the input stream, I pretend to see an endless sequence of special characters called doIts.
Instance Variables
aheadChar: <Character>
buffer: <WriteStream>
currentComment: <OrderedCollection>
hereChar: <Character>
mark: <Integer>
source: <ReadStream>
token: <Symbol|String|NumberCharacter|Boolean|nil>
tokenType: <Symbol>
typeTable: <Array>
aheadChar
- the next character in the input stream
buffer
- a reusable WriteStream on a String which is used for building strings. Shouldn't be used from multiple methods without resetting.
currentComment
- an OrderedCollection of strings which contain all comments between the current token and the previous token or the beginning of the source.
hereChar
- the current character
mark
- the position of the current token in the source stream
source
- the input stream of characters
token
- the current token
tokenType
- the type of the current token. The possible token types are: #binary, #character, #colon, #doIt, #keyword, #leftArrow, #leftBrace, #leftBracket, #leftParenthesis, #literal, #period, #rightBrace, #rightBracket, #rightParenthesis, #semicolon, #string, #upArrow, #verticalBar, #word, #xBinary, #xColon, #xDelimiter, #xDigit, #xDollar, #xDoubleQuote, #xLetter, #xLitQuote, #xSingleQuote, #xUnderscore
typeTable
- an array that maps each an evaluable tokenType to each character with asciiValue between 0 and 255!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol (in category 'preferences') -----
+ prefAllowUnicharSymbol
+ "Accessor for the system-wide preference"
+ <preference: 'Allow symbols with unique character like #,'
+ category: 'Compiler'
+ description: 'When true, the historical syntax #, #; or #. is allowed.'
+ type: #Boolean>
+ ^AllowUnicharSymbol ifNil: [false]!
Item was added:
+ ----- Method: Scanner class>>prefAllowUnicharSymbol: (in category 'preferences') -----
+ prefAllowUnicharSymbol: aBoolean
+ "Accessor for the system-wide preference"
+ AllowUnicharSymbol := aBoolean!
Item was changed:
----- Method: Scanner>>xLitQuote (in category 'multi-character scans') -----
xLitQuote
"Symbols and vectors: #(1 (4 5) 2 3) #ifTrue:ifFalse: #'abc'."
| start |
start := mark.
self step. "litQuote"
self scanToken.
tokenType == #leftParenthesis
ifTrue: [self scanToken; scanLitVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched parenthesis']]
ifFalse: [tokenType == #leftBracket
ifTrue: [self scanToken; scanLitByteVec.
mark := start + 1.
tokenType == #doIt
ifTrue: [self offEnd: 'Unmatched bracket']]
ifFalse: [(tokenType == #word or: [tokenType == #keyword or: [tokenType == #colon]])
ifTrue: [self scanLitWord]
ifFalse: [tokenType == #string
ifTrue: [token := token asSymbol]
ifFalse: [(tokenType == #binary or: [ tokenType == #verticalBar ])
+ ifFalse: [(token isCharacter and: [self class prefAllowUnicharSymbol])
+ ifTrue:
+ [tokenType := Symbol.
+ token := Symbol with: token]
+ ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]]].
- ifFalse: [self notify: 'Invalid literal character' at: start + 1]]]]].
mark := start.
tokenType := #literal
"#(Pen)
#Pen
#'Pen'
##Pen
###Pen
"!
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.462.mcz
==================== Summary ====================
Name: Collections-eem.462
Author: eem
Time: 2 October 2011, 7:11:42.336 pm
UUID: 50129323-386f-454d-8569-da4400cdc90e
Ancestors: Collections-nice.461
With SequenceableCollection>size being a subclassResponsibility
LinkedList must implement size. WIth this
SequenceableCollection allSubclasses select:
[:c| (c whichClassIncludesSelector: #size)
== SequenceableCollection]
=> an OrderedCollection(SourceFileArray)
which is fine since SourceFileArray is abstract.
=============== Diff against Collections-nice.461 ===============
Item was added:
+ ----- Method: LinkedList>>size (in category 'accessing') -----
+ size
+ "Answer how many elements the receiver contains."
+
+ | tally |
+ tally := 0.
+ self do: [:each | tally := tally + 1].
+ ^ tally!
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.462.mcz
==================== Summary ====================
Name: Collections-eem.462
Author: eem
Time: 2 October 2011, 7:11:42.336 pm
UUID: 50129323-386f-454d-8569-da4400cdc90e
Ancestors: Collections-nice.461
With SequenceableCollection>size being a subclassResponsibility
LinkedList must implement size. WIth this
SequenceableCollection allSubclasses select:
[:c| (c whichClassIncludesSelector: #size)
== SequenceableCollection]
=> an OrderedCollection(SourceFileArray)
which is fine since SourceFileArray is abstract.
=============== Diff against Collections-nice.461 ===============
Item was added:
+ ----- Method: LinkedList>>size (in category 'accessing') -----
+ size
+ "Answer how many elements the receiver contains."
+
+ | tally |
+ tally := 0.
+ self do: [:each | tally := tally + 1].
+ ^ tally!
Eliot Miranda uploaded a new version of Collections to project The Trunk:
http://source.squeak.org/trunk/Collections-eem.462.mcz
==================== Summary ====================
Name: Collections-eem.462
Author: eem
Time: 2 October 2011, 7:11:42.336 pm
UUID: 50129323-386f-454d-8569-da4400cdc90e
Ancestors: Collections-nice.461
With SequenceableCollection>size being a subclassResponsibility
LinkedList must implement size. WIth this
SequenceableCollection allSubclasses select:
[:c| (c whichClassIncludesSelector: #size)
== SequenceableCollection]
=> an OrderedCollection(SourceFileArray)
which is fine since SourceFileArray is abstract.
=============== Diff against Collections-nice.461 ===============
Item was added:
+ ----- Method: LinkedList>>size (in category 'accessing') -----
+ size
+ "Answer how many elements the receiver contains."
+
+ | tally |
+ tally := 0.
+ self do: [:each | tally := tally + 1].
+ ^ tally!
Nicolas Cellier uploaded a new version of Files to project The Trunk:
http://source.squeak.org/trunk/Files-nice.113.mcz
==================== Summary ====================
Name: Files-nice.113
Author: nice
Time: 2 October 2011, 7:20:45.153 pm
UUID: 777d9875-e11c-4439-9a37-349751391f7e
Ancestors: Files-ul.112
Eliminate method duplicated from subclass:
#size is already super subclassResponsibility
=============== Diff against Files-ul.112 ===============
Item was removed:
- ----- Method: SourceFileArray>>size (in category 'accessing') -----
- size
- self subclassResponsibility!