[squeak-dev] The Trunk: Kernel-mt.1119.mcz

commits at source.squeak.org commits at source.squeak.org
Thu Nov 9 10:13:47 UTC 2017


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

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

Name: Kernel-mt.1119
Author: mt
Time: 9 November 2017, 11:13:37.82048 am
UUID: a210d4c7-b8eb-e544-a857-2b0bbade9668
Ancestors: Kernel-mt.1118

Improves support for having custom compiler classes for class-side methods. No need to use #respondsTo:. Just provide default implementation of #meta*Class methods in Class. The "super" is important here because the old behavior has been to  use a custom compiler for the instance-side only.

=============== Diff against Kernel-mt.1118 ===============

Item was added:
+ ----- Method: Class>>metaCompilerClass (in category 'compiling') -----
+ metaCompilerClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 	
+ 	^ super compilerClass!

Item was added:
+ ----- Method: Class>>metaDecompilerClass (in category 'compiling') -----
+ metaDecompilerClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 
+ 	^ super decompilerClass!

Item was added:
+ ----- Method: Class>>metaEvaluatorClass (in category 'compiling') -----
+ metaEvaluatorClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 
+ 	^ super evaluatorClass!

Item was added:
+ ----- Method: Class>>metaFormatterClass (in category 'printing') -----
+ metaFormatterClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 
+ 	^ super formatterClass!

Item was added:
+ ----- Method: Class>>metaParserClass (in category 'compiling') -----
+ metaParserClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 
+ 	^ super parserClass!

Item was added:
+ ----- Method: Class>>metaPrettyPrinterClass (in category 'printing') -----
+ metaPrettyPrinterClass
+ 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
+ 
+ 	^ super prettyPrinterClass!

Item was changed:
  ----- Method: Metaclass>>compilerClass (in category 'compiling') -----
  compilerClass
+ 	
+ 	^ self theNonMetaClass metaCompilerClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaCompilerClass)
- 		ifTrue: [self theNonMetaClass metaCompilerClass]
- 		ifFalse: [super compilerClass]!

Item was changed:
  ----- Method: Metaclass>>decompilerClass (in category 'compiling') -----
  decompilerClass
+ 	
+ 	^ self theNonMetaClass metaDecompilerClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaDecompilerClass)
- 		ifTrue: [self theNonMetaClass metaDecompilerClass]
- 		ifFalse: [super decompilerClass]!

Item was changed:
  ----- Method: Metaclass>>evaluatorClass (in category 'compiling') -----
  evaluatorClass
+ 	
+ 	^ self theNonMetaClass metaEvaluatorClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaEvaluatorClass)
- 		ifTrue: [self theNonMetaClass metaEvaluatorClass]
- 		ifFalse: [super evaluatorClass]!

Item was changed:
  ----- Method: Metaclass>>formatterClass (in category 'printing') -----
  formatterClass
+ 	
+ 	^ self theNonMetaClass metaFormatterClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaFormatterClass)
- 		ifTrue: [self theNonMetaClass metaFormatterClass]
- 		ifFalse: [super formatterClass]!

Item was changed:
  ----- Method: Metaclass>>parserClass (in category 'compiling') -----
  parserClass
+ 	
+ 	^ self theNonMetaClass metaParserClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaParserClass)
- 		ifTrue: [self theNonMetaClass metaParserClass]
- 		ifFalse: [super parserClass]!

Item was changed:
  ----- Method: Metaclass>>prettyPrinterClass (in category 'printing') -----
  prettyPrinterClass
+ 	
+ 	^ self theNonMetaClass metaPrettyPrinterClass!
- 	"BE CAREFUL!! If you provide your own class to treat class-side (resp. meta) methods, you MUST account for the #meta*Class selector to use the default implementation in that case. That is, the methods behind #meta*Class MUST always get the default Smalltalk treatment."
- 
- 	^ (self theNonMetaClass respondsTo: #metaPrettyPrinterClass)
- 		ifTrue: [self theNonMetaClass metaPrettyPrinterClass]
- 		ifFalse: [super prettyPrinterClass]!



More information about the Squeak-dev mailing list