[squeak-dev] The Trunk: Compiler-eem.388.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Jun 30 16:40:17 UTC 2018

Eliot Miranda uploaded a new version of Compiler to project The Trunk:

==================== Summary ====================

Name: Compiler-eem.388
Author: eem
Time: 30 June 2018, 9:39:44.257778 am
UUID: 656179c4-4227-43e5-91f5-b10d57129aba
Ancestors: Compiler-eem.387

Initialize the temp for ThisContext (the argument to DoItIn: in the context inspector in the debugger) correctly, avoiding a spurious undefined warning and consequent reselection.

Fix typedScan:do: sio that character literals are scanned (and hence that e.g. local senders of... $A et al work properly).

=============== Diff against Compiler-eem.387 ===============

Item was changed:
  ----- Method: Encoder>>init:notifying: (in category 'initialize-release') -----
  init: aCue notifying: anObject
  	"The use of the variable requestor is a bit confusing here. This is
  	*not* the original requestor, which is available through the cue.
  	It's the Parser instance that is using the encoder."
  	self setCue: aCue.
  	requestor := anObject.
  	nTemps := 0.
  	supered := false.
  	self initScopeAndLiteralTables.
  	cue getClass variablesAndOffsetsDo:
  		[:variable "<String|CFieldDefinition>" :offset "<Integer|nil>" |
  		offset isNil
  			ifTrue: [scopeTable at: variable name put: (FieldNode new fieldDefinition: variable)]
  			ifFalse: [scopeTable
  						at: variable
  						put: (offset >= 0
  								ifTrue: [InstanceVariableNode new
  											name: variable index: offset]
  								ifFalse: [MaybeContextInstanceVariableNode new
  											name: variable index: offset negated])]].
+ 	cue context ifNotNil:
- 	cue context ~~ nil ifTrue:
  		[| homeNode |
+ 		 homeNode := self bindArg: self doItInContextName.
- 		 homeNode := self bindTemp: self doItInContextName.
  		 "0th temp = aContext passed as arg"
  		 cue context tempNames withIndexDo:
  			[:variable :index|
  			variable ~= self doItInContextName ifTrue:
  					at: variable
  					put: (MessageAsTempNode new
  							receiver: homeNode
  							selector: #namedTempAt:
  							arguments: (Array with: (self encodeLiteral: index))
  							precedence: 3
  							from: self)]]].
  	sourceRanges := Dictionary new: 32.
+ 	globalSourceRanges := OrderedCollection new: 32!
- 	globalSourceRanges := OrderedCollection new: 32
- !

Item was changed:
  ----- Method: Scanner>>typedScan:do: (in category 'public access') -----
  typedScan: textOrString do: aBinaryBlock
  	"Evaluate aBinaryBlock with the token and its type for the first token in input,
  	 mapping literals to type #literal and anything else to type #word."
  	| theTokensType atNumber theToken |
  	self initScannerForTokenization.
  	self scan: (ReadStream on: textOrString asString).
  	atNumber := hereChar notNil and: [hereChar isDigit].
  	theTokensType := tokenType.
  	theToken := self advance.
  	(theToken == #- and: [atNumber and: [token isNumber]]) ifTrue:
  		[theToken := self advance negated].
  	theToken isNumber ifTrue: [theTokensType := #number].
  		value: theToken
+ 		value: ((#(number string literal character) includes: theTokensType)
- 		value: ((#(number string literal) includes: theTokensType)
  				ifTrue: [#literal]
  				ifFalse: [#word])!

More information about the Squeak-dev mailing list