[Pkg] The Trunk: System-mt.1027.mcz

commits at source.squeak.org commits at source.squeak.org
Thu May 24 08:31:05 UTC 2018


Marcel Taeumel uploaded a new version of System to project The Trunk:
http://source.squeak.org/trunk/System-mt.1027.mcz

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

Name: System-mt.1027
Author: mt
Time: 24 May 2018, 10:30:46.580621 am
UUID: 03fbd834-afce-ba4b-89d0-989e09f085bd
Ancestors: System-kfr.1026

Harmonize method references and class references.

=============== Diff against System-kfr.1026 ===============

Item was added:
+ ----- Method: ClassDescription>>asReference (in category '*System-Tools') -----
+ asReference
+ 
+ 	^ self classReference!

Item was added:
+ ----- Method: ClassDescription>>classReference (in category '*System-Tools') -----
+ classReference
+ 
+ 	^ ClassReference class: self!

Item was changed:
  Object subclass: #ClassReference
  	instanceVariableNames: 'classSymbol stringVersion classIsMeta environment'
+ 	classVariableNames: 'InvalidReference'
- 	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'System-Tools'!
  
  !ClassReference commentStamp: '<historical>' prior: 0!
  A ClassReference is is a lightweight proxy for a Class's definition.  Allows class definitions to be viewed in MessageLists
  
  Instance Variables
  	classSymbol:		Symbol for method's class (without class keyword if meta)
  	stringVersion:		the class's definition
  
  !

Item was added:
+ ----- Method: ClassReference class>>invalid (in category 'instance creation') -----
+ invalid
+ 	"Returns an invalid class reference to avoid the usage of nil."
+ 	
+ 	^ InvalidReference ifNil: [
+ 		InvalidReference := self new
+ 			setClassSymbol: #NonExistentClass
+ 			classIsMeta: false
+ 			environment: Environment default
+ 			stringVersion: '<The Invalid Class Reference>']!

Item was added:
+ ----- Method: ClassReference>>asReference (in category 'converting') -----
+ asReference
+ 
+ 	^ self!

Item was added:
+ ----- Method: ClassReference>>asString (in category 'converting') -----
+ asString
+ 
+ 	^(stringVersion ifNil: [ self stringVersionDefault ]) asString!

Item was changed:
+ ----- Method: ClassReference>>isClassReference (in category 'testing') -----
- ----- Method: ClassReference>>isClassReference (in category 'comparisons') -----
  isClassReference
+ 
+ 	^ true!
- 	^true!

Item was changed:
+ ----- Method: ClassReference>>isMethodReference (in category 'testing') -----
- ----- Method: ClassReference>>isMethodReference (in category 'comparisons') -----
  isMethodReference
+ 
+ 	^ false!
- 	^false!

Item was added:
+ ----- Method: ClassReference>>isValid (in category 'testing') -----
+ isValid
+ 
+ 	^ self actualClass notNil!

Item was changed:
  ----- Method: ClassReference>>setClassSymbol:classIsMeta:environment:stringVersion: (in category 'initialize-release') -----
  setClassSymbol: classSym classIsMeta: isMeta environment: anEnvironment stringVersion: aString 
  
  	classSymbol := classSym.
  	classIsMeta := isMeta.
+ 	stringVersion := aString.
- 	stringVersion := aString, ' (definition)'.
  	environment := anEnvironment!

Item was changed:
  ----- Method: ClassReference>>setClassSymbol:classIsMeta:stringVersion: (in category 'initialize-release') -----
  setClassSymbol: classSym classIsMeta: isMeta stringVersion: aString 
  
  	classSymbol := classSym.
  	classIsMeta := isMeta.
+ 	stringVersion := aString.!
- 	stringVersion := aString, ' (definition)'!

Item was changed:
  ----- Method: ClassReference>>setStandardClass: (in category 'initialize-release') -----
  setStandardClass: aClass
  
  	self
  		setClassSymbol:  aClass theNonMetaClass name
  		classIsMeta: aClass isMeta
  		environment: aClass environment
+ 		stringVersion: aClass name, ' (definition)'!
- 		stringVersion: aClass name!

Item was added:
+ ----- Method: ClassReference>>stringVersion: (in category 'accessing') -----
+ stringVersion: aString
+ 
+ 	stringVersion := aString!

Item was added:
+ ----- Method: ClassReference>>stringVersionDefault (in category 'accessing') -----
+ stringVersionDefault
+ 
+ 	^classSymbol, (classIsMeta ifTrue: [ ' class' ] ifFalse: [''])  !

Item was added:
+ ----- Method: CompiledCode>>asReference (in category '*System-converting') -----
+ asReference
+ 
+ 	^ self methodReference ifNil: [MethodReference invalid]!

Item was changed:
  ----- Method: CompiledCode>>methodReference (in category '*System-Support') -----
  methodReference
+ 
  	| class selector |
  	class := self methodClass ifNil: [^nil].
  	selector := self selector ifNil: [^nil].
+ 	^ MethodReference class: class selector: selector!
- 	^MethodReference class: class selector: selector.
- 	!

Item was changed:
  Object subclass: #MethodReference
  	instanceVariableNames: 'classSymbol classIsMeta methodSymbol stringVersion category environment'
+ 	classVariableNames: 'InvalidReference'
- 	classVariableNames: ''
  	poolDictionaries: ''
  	category: 'System-Tools'!
  
  !MethodReference commentStamp: 'tlk 5/9/2006 18:43' prior: 0!
  A MethodReference is is a lightweight proxy for a CompiledMethod.  Has methods for pointed to the CompileMethod's source statements, byte codes. Is heavily used my Tools.
  
  Instance Variables
  	classIsMeta:		     Boolean class vs. instance
  	classSymbol:		Symbol for method's class (without class keyword if meta)
  	methodSymbol:		Symbol for method's selector
  	stringVersion:		'Class>>selector:' format
  
  !

Item was added:
+ ----- Method: MethodReference class>>invalid (in category 'instance creation') -----
+ invalid
+ 	"Creates an invalid method reference to avoid the usage of nil."
+ 	
+ 	^ InvalidReference ifNil: [
+ 		InvalidReference := self new
+ 			setClassSymbol: #NonExistentClass
+ 			classIsMeta: false
+ 			methodSymbol: #nonExistentSelector
+ 			stringVersion: '<The Invalid Method Reference>']!

Item was added:
+ ----- Method: MethodReference>>asReference (in category 'converting') -----
+ asReference
+ 
+ 	^ self!

Item was added:
+ ----- Method: MethodReference>>isClassReference (in category 'testing') -----
+ isClassReference
+ 
+ 	^ false!

Item was changed:
  ----- Method: MethodReference>>isMethodReference (in category 'testing') -----
  isMethodReference
+ 
+ 	^ true!
- 	^true!

Item was changed:
  ----- Method: MethodReference>>sourceCode (in category 'accessing') -----
  sourceCode
+ 
+ 	^ self actualClass sourceCodeAt: self methodSymbol!
- 	^ self actualClass sourceCodeAt: methodSymbol!

Item was changed:
  ----- Method: MethodReference>>sourceString (in category 'accessing') -----
  sourceString
+ 
+ 	^ self sourceCode asString!
- 	^ (self actualClass sourceCodeAt: self methodSymbol) asString!



More information about the Packages mailing list