[squeak-dev] The Inbox: Compiler-cmm.329.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Oct 9 22:00:29 UTC 2019


Chris Muller uploaded a new version of Compiler to project The Inbox:
http://source.squeak.org/inbox/Compiler-cmm.329.mcz

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

Name: Compiler-cmm.329
Author: cmm
Time: 16 August 2016, 2:44:49.238535 pm
UUID: 27532efe-b045-474b-a197-43c6cea193ae
Ancestors: Compiler-tfel.327

Kent Beckian purposefully plenk'd pretty printing.

=============== Diff against Compiler-tfel.327 ===============

Item was added:
+ ----- Method: AssignmentNode>>isComplex (in category 'testing') -----
+ isComplex
+ 	^ value isComplex!

Item was changed:
  ----- Method: AssignmentNode>>printOn:indent: (in category 'printing') -----
  printOn: aStream indent: level 
  	variable printOn: aStream indent: level.
  	aStream nextPutAll: ' := '.
+ 	value printOn: aStream indent: level!
- 	value printOn: aStream indent: level + 2!

Item was changed:
  ----- Method: BlockNode>>isComplex (in category 'testing') -----
  isComplex
+ 	^ statements size > 1 or:
+ 		[ (statements size = 1 and: [ statements first isComplex ]) or:
+ 			[ arguments size > 0 or: [ temporaries size > 0 ] ] ]!
- 
- 	^statements size > 1 or: [statements size = 1 and: [statements first isComplex]]!

Item was changed:
  ----- Method: BlockNode>>printArgumentsOn:indent: (in category 'printing') -----
+ printArgumentsOn: aStream indent: level 
- printArgumentsOn: aStream indent: level
  	arguments size = 0 ifTrue: [^ self].
+ 	arguments do: 
+ 		[ : arg | 
+ 		aStream nextPut: $: ;
+ 			 space;
+ 			 nextPutAll: arg key;
+ 			 space ].
+ 	aStream 
+ 		nextPut: $|;
+ 		space!
- 	arguments do:
- 		[:arg | aStream nextPut: $:;  nextPutAll: arg key;  space].
- 	aStream nextPut: $|; space.
- 	"If >0 args and >1 statement, put all statements on separate lines"
- 	statements size > 1 ifTrue:
- 		[aStream crtab: level]!

Item was changed:
  ----- Method: BlockNode>>printOn:indent: (in category 'printing') -----
+ printOn: aStream indent: level 
+ 	aStream
+ 		 nextPut:  $[ ;
+ 		 space.
+ 	self
+ 		printArgumentsOn:  aStream
+ 		indent:  level.
+ 	(self
+ 		printTemporaries:  temporaries
+ 		on:  aStream
+ 		doPrior:  [ ] ) ifTrue: 
+ 		[ "If >0 temps and >1 statement, put all statements on separate lines"
+ 		statements size >  1
+ 			ifTrue:  [ aStream crtab:  level ] 
+ 			ifFalse:  [ aStream space] ] .
+ 	self
+ 		printStatementsOn:  aStream
+ 		indent:  level.
+ 	aStream
+ 		 space ;
+ 		 nextPut:  $]!
- printOn: aStream indent: level
- 
- 	"statements size <= 1 ifFalse: [aStream crtab: level]."
- 	aStream nextPut: $[.
- 	self printArgumentsOn: aStream indent: level.
- 	(self printTemporaries: temporaries on: aStream doPrior: []) ifTrue:
- 		["If >0 temps and >1 statement, put all statements on separate lines"
- 		 statements size > 1
- 			ifTrue: [aStream crtab: level]
- 			ifFalse: [aStream space]].
- 	self printStatementsOn: aStream indent: level.
- 	aStream nextPut: $]!

Item was changed:
  ----- Method: BlockNode>>printWithClosureAnalysisOn:indent: (in category 'printing') -----
  printWithClosureAnalysisOn: aStream indent: level
+ 	aStream nextPut: $[; space.
- 	aStream nextPut: $[.
  	blockExtent ifNotNil: [aStream print: blockExtent].
  	self printWithClosureAnalysisArgumentsOn: aStream indent: level.
  	self printWithClosureAnalysisTemporariesOn: aStream indent: level.
  	self printWithClosureAnalysisStatementsOn: aStream indent: level.
+ 	aStream space; nextPut: $]!
- 	aStream nextPut: $]!

Item was changed:
  ----- Method: BraceNode>>printOn:indent: (in category 'printing') -----
+ printOn: aStream indent: level 
- printOn: aStream indent: level
- 
  	aStream nextPut: ${.
+ 	1
+ 		to: elements size
+ 		do: 
+ 			[ : i | 
+ 			(elements at: i)
+ 				printOn: aStream
+ 				indent: level.
+ 			i < elements size ifTrue: 
+ 				[ aStream
+ 					 nextPutAll: '. ' ;
+ 					 crtab: level ] ].
- 	1 to: elements size do: 
- 		[:i | (elements at: i) printOn: aStream indent: level.
- 		i < elements size ifTrue: [aStream nextPutAll: '. ']].
  	aStream nextPut: $}!

Item was added:
+ ----- Method: CascadeNode>>isComplex (in category 'testing') -----
+ isComplex
+ 	^ true!

Item was changed:
  ----- Method: CascadeNode>>printOn:indent:precedence: (in category 'printing') -----
  printOn: aStream indent: level precedence: p 
+ 	p > 0 ifTrue: [ aStream nextPut: $( ].
+ 	messages first
+ 		printReceiver: receiver
+ 		on: aStream
+ 		indent: level.
+ 	1
+ 		to: messages size
+ 		do: 
+ 			[ : i | 
+ 			aStream crtab: level + 1.
+ 			(messages at: i)
+ 				printOn: aStream
+ 				indent: level.
+ 			i < messages size ifTrue: [ aStream nextPutAll: ' ;' ] ].
+ 	p > 0 ifTrue: [ aStream nextPut: $) ]!
- 
- 	p > 0 ifTrue: [aStream nextPut: $(].
- 	messages first printReceiver: receiver on: aStream indent: level.
- 	1 to: messages size do: 
- 		[:i | (messages at: i) printOn: aStream indent: level.
- 		i < messages size ifTrue: 
- 				[aStream nextPut: $;.
- 				messages first precedence >= 2 ifTrue: [aStream crtab: level + 1]]].
- 	p > 0 ifTrue: [aStream nextPut: $)]!

Item was changed:
  ----- Method: MessageNode>>isComplex (in category 'testing') -----
  isComplex
+ 	^ (special
+ 			between: 1
+ 			and: 10)
+ 		or: 
+ 		[ arguments size > 1
+ 			or: 
+ 			[ receiver isComplex or: [ arguments anySatisfy: [ : each | each isComplex ] ] ] ]!
- 	
- 	^(special between: 1 and: 10) or: [arguments size > 2 or: [receiver isComplex]]!

Item was changed:
  ----- Method: MessageNode>>printIfOn:indent: (in category 'printing') -----
+ printIfOn: aStream indent: level 
+ 	receiver ifNotNil: 
+ 		[ receiver
+ 			printOn: aStream
+ 			indent: level
+ 			precedence: precedence ].
+ 	(arguments last isJust: NodeNil) ifTrue: [ ^ self
+ 			printKeywords: #ifTrue:
+ 			arguments: (Array with: arguments first)
+ 			on: aStream
+ 			indent: level ].
+ 	(arguments last isJust: NodeFalse) ifTrue: [ ^ self
+ 			printKeywords: #and:
+ 			arguments: (Array with: arguments first)
+ 			on: aStream
+ 			indent: level ].
+ 	(arguments first isJust: NodeNil) ifTrue: [ ^ self
+ 			printKeywords: #ifFalse:
+ 			arguments: (Array with: arguments last)
+ 			on: aStream
+ 			indent: level ].
+ 	(arguments first isJust: NodeTrue) ifTrue: [ ^ self
+ 			printKeywords: #or:
+ 			arguments: (Array with: arguments last)
+ 			on: aStream
+ 			indent: level ].
+ 	self
+ 		printKeywords: #ifTrue:ifFalse:
+ 		arguments: arguments
+ 		on: aStream
+ 		indent: level!
- printIfOn: aStream indent: level
- 
- 	receiver ifNotNil:
- 		[receiver printOn: aStream indent: level + 1 precedence: precedence].
- 	(arguments last isJust: NodeNil) ifTrue:
- 		[^self printKeywords: #ifTrue: arguments: (Array with: arguments first)
- 					on: aStream indent: level].
- 	(arguments last isJust: NodeFalse) ifTrue:
- 		[^self printKeywords: #and: arguments: (Array with: arguments first)
- 					on: aStream indent: level].
- 	(arguments first isJust: NodeNil) ifTrue:
- 		[^self printKeywords: #ifFalse: arguments: (Array with: arguments last)
- 					on: aStream indent: level].
- 	(arguments first isJust: NodeTrue) ifTrue:
- 		[^self printKeywords: #or: arguments: (Array with: arguments last)
- 					on: aStream indent: level].
- 	self printKeywords: #ifTrue:ifFalse: arguments: arguments
- 					on: aStream indent: level!

Item was changed:
  ----- Method: MessageNode>>printKeywords:arguments:on:indent: (in category 'printing') -----
+ printKeywords: key arguments: args on: aStream indent: level 
- printKeywords: key arguments: args on: aStream indent: level
  	| keywords indent arg kwd doCrTab |
  	args size = 0 ifTrue:
+ 		[ aStream
+ 			 space ;
+ 			 nextPutAll: key.
+ 		^ self ].
+ 	keywords := key keywords.
+ 	doCrTab := args size > 1.
+ 	1
+ 		to: (args size min: keywords size)
+ 		do:
+ 			[ : i | arg := args at: i.
+ 			kwd := keywords at: i.
+ 			doCrTab
+ 				ifTrue:
+ 					[ aStream crtab: level + 1.
+ 					indent := 1
+ 					"newline after big args" ]
+ 				ifFalse:
+ 					[ aStream space.
+ 					indent := 0 ].
+ 			aStream nextPutAll: kwd.
+ 			arg isComplex
+ 				ifTrue: [ aStream crtab: level + indent + 1 ]
+ 				ifFalse: [ aStream space ].
+ 			arg
+ 				printOn: aStream
+ 				indent: level + 1 + indent
+ 				precedence:
+ 					(precedence = 2
+ 						ifTrue: [ 1 ]
+ 						ifFalse: [ precedence ]) ]!
- 		[aStream space; nextPutAll: key.
- 		 ^self].
- 	keywords := key asString keywords.
- 	doCrTab := args size > 2
- 				or: [{receiver} , args anySatisfy:
- 						[:thisArg |
- 						thisArg notNil
- 						and: [thisArg isBlockNode
- 							 or: [thisArg isMessageNode and: [thisArg precedence >= 3]]]]].
- 	1 to: (args size min: keywords size) do:
- 		[:i |
- 		arg := args at: i.
- 		kwd := keywords at: i.
- 		doCrTab
- 			ifTrue: [aStream crtab: level+1. indent := 1] "newline after big args"
- 			ifFalse: [aStream space. indent := 0].
- 		aStream nextPutAll: kwd; space.
- 		arg printOn: aStream
- 			indent: level + 1 + indent
- 			precedence: (precedence = 2 ifTrue: [1] ifFalse: [precedence])]!

Item was changed:
  ----- Method: ParseNode>>printSingleComment:on:indent: (in category 'private') -----
  printSingleComment: aString on: aStream indent: indent 
+ 	"Print the comment string, assuming it has been indented indent tabs.  Break the string at word breaks, given the widths in the default font, at 450 points."
+ 	aStream nextPutAll: aString!
- 	"Print the comment string, assuming it has been indented indent tabs.
- 	Break the string at word breaks, given the widths in the default
- 	font, at 450 points."
- 
- 	| readStream word position lineBreak font wordWidth tabWidth spaceWidth lastChar |
- 	readStream := ReadStream on: aString.
- 	font := TextStyle default defaultFont.
- 	tabWidth := TextConstants at: #DefaultTab.
- 	spaceWidth := font widthOf: Character space.
- 	position := indent * tabWidth.
- 	lineBreak := 450.
- 	[readStream atEnd]
- 		whileFalse: 
- 			[word := self nextWordFrom: readStream setCharacter: [:lc | lastChar := lc].
- 			wordWidth := word inject: 0 into: [:width :char | width + (font widthOf: char)].
- 			position := position + wordWidth.
- 			position > lineBreak
- 				ifTrue: 
- 					[aStream skip: -1; crtab: indent.
- 					position := indent * tabWidth + wordWidth + spaceWidth.
- 					lastChar = Character cr
- 						ifTrue: [[readStream peekFor: Character tab] whileTrue].
- 					word isEmpty ifFalse: [aStream nextPutAll: word; space]]
- 				ifFalse: 
- 					[aStream nextPutAll: word.
- 					readStream atEnd
- 						ifFalse: 
- 							[position := position + spaceWidth.
- 							aStream space].
- 					lastChar = Character cr
- 						ifTrue: 
- 							[aStream skip: -1; crtab: indent.
- 							position := indent * tabWidth.
- 							[readStream peekFor: Character tab] whileTrue]]]!



More information about the Squeak-dev mailing list