[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