--- a/CustomNamespace.st Sun Nov 02 11:52:59 2014 +0100
+++ b/CustomNamespace.st Sun Nov 02 22:01:00 2014 +0100
@@ -208,12 +208,12 @@
createClassImmediate: aClassName superClassName: aSuperClassName instanceVariableNames: instVarNames classVariableNames: classVarNames poolDictionaries: poolDict category: category privateIn: privateInClassName
"Creates class immediately and returns the real class"
- | newClassName |
+ | newClassName change |
newClassName := aClassName.
privateInClassName isNil ifTrue: [
- changes addChange: (InteractiveAddClassChange definition:
+ change := (InteractiveAddClassChange definition:
aSuperClassName asString, ' subclass:#', aClassName asString, '
instanceVariableNames:''', instVarNames asString, '''
classVariableNames:''', classVarNames asString, '''
@@ -221,7 +221,7 @@
category:''', category asString, '''
')
] ifFalse: [
- changes addChange: (InteractiveAddClassChange definition:
+ change := (InteractiveAddClassChange definition:
aSuperClassName asString, ' subclass:#', aClassName asString, '
instanceVariableNames:''', instVarNames asString, '''
classVariableNames:''', classVarNames asString, '''
@@ -232,12 +232,12 @@
newClassName := privateInClassName asString, '::', aClassName asString.
].
- self execute.
+ changeManager performChange: change.
^ Smalltalk classNamed: newClassName
"Created: / 30-10-2014 / 21:28:40 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
- "Modified: / 31-10-2014 / 00:17:53 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 02-11-2014 / 16:30:54 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
createClassImmediate: aClassName superClassName: aSuperClassName privateIn: privateInClassName
@@ -268,14 +268,13 @@
change package: aPackageId
].
- changes addChange: change.
-
- self execute.
+ changeManager performChange: change.
selector := (Parser parseMethodSpecification: aSource) selector.
^ aClass compiledMethodAt: selector
"Created: / 17-10-2014 / 09:53:45 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 02-11-2014 / 16:17:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
createMethodImmediate: aClass source: aSource
--- a/CustomNamespaceTests.st Sun Nov 02 11:52:59 2014 +0100
+++ b/CustomNamespaceTests.st Sun Nov 02 22:01:00 2014 +0100
@@ -531,6 +531,24 @@
"Modified: / 27-07-2014 / 12:42:53 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
+test_create_class_immediate_object_changes_kept
+ | expectedId actualId mockClass |
+
+ mockClass := model createClassImmediate: 'MockClassForTestCase01'.
+ expectedId := mockClass identityHash.
+ mockClass package: #some_package.
+
+ model createClassImmediate: 'MockClassForTestCase02'.
+ self assertClassExists: #MockClassForTestCase02.
+
+ actualId := (Smalltalk at: #MockClassForTestCase01) identityHash.
+
+ self assert: expectedId = actualId.
+ self assert: (Smalltalk at: #MockClassForTestCase01) package = #some_package.
+
+ "Created: / 02-11-2014 / 16:27:21 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
test_create_class_immediate_super_class_name_instance_variable_names_class_variable_names_pool_dictionaries_category_private_in_private_class
| mockClass |
@@ -731,6 +749,22 @@
"Modified: / 24-06-2014 / 21:59:23 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
!
+test_create_method_immediate_object_changes_kept
+ | expectedId actualId mockClass method |
+
+ mockClass := model createClassImmediate: 'MockClassForTestCase' superClassName: 'Object'.
+ method := model createMethodImmediate: mockClass protocol: 'a protocol' source: 'selector_01 ^ 11'.
+ expectedId := method identityHash.
+ method package: #some_package.
+ model createMethodImmediate: mockClass protocol: 'a protocol' source: 'selector_02 ^ 22'.
+ actualId := (mockClass compiledMethodAt:#selector_01) identityHash.
+
+ self assert: expectedId = actualId.
+ self assert: ((mockClass compiledMethodAt:#selector_01) package) = #some_package.
+
+ "Created: / 02-11-2014 / 16:12:09 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+!
+
test_create_method_immediate_protocol_source_package
| expectedSource actualSource mockClass |
--- a/patches/extensions.st Sun Nov 02 11:52:59 2014 +0100
+++ b/patches/extensions.st Sun Nov 02 22:01:00 2014 +0100
@@ -164,14 +164,14 @@
selector := self selector.
"Do not try to retrieve method when its not possible"
- (realClass notNil and: [ selector notNil ]) ifTrue: [
+ (realClass notNil and: [ selector notNil ]) ifTrue: [
compiledMethod := realClass compiledMethodAt: selector.
]
].
^compiledMethod
"Modified: / 17-02-2012 / 00:07:48 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 08-10-2014 / 18:52:37 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 02-11-2014 / 16:38:38 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!RBMethod methodsFor:'accessing'!
@@ -187,9 +187,9 @@
method := self method.
- method isNil ifTrue: [
+ method isNil ifTrue: [
package := PackageId noProjectID
- ] ifFalse: [
+ ] ifFalse: [
package := method package
]
].
@@ -197,7 +197,7 @@
^ package
"Created: / 17-02-2012 / 00:41:36 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 10-10-2014 / 11:11:36 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
+ "Modified: / 02-11-2014 / 16:34:27 / Jakub Nesveda <nesvejak@fit.cvut.cz>"
! !
!jn_refactoring_custom_patches class methodsFor:'documentation'!
--- a/patches/patches.rc Sun Nov 02 11:52:59 2014 +0100
+++ b/patches/patches.rc Sun Nov 02 22:01:00 2014 +0100
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "LibraryName\0"
VALUE "ProductVersion", "6.2.4.1378\0"
- VALUE "ProductDate", "Sun, 02 Nov 2014 10:48:54 GMT\0"
+ VALUE "ProductDate", "Sun, 02 Nov 2014 20:52:52 GMT\0"
END
END
--- a/refactoring_custom.rc Sun Nov 02 11:52:59 2014 +0100
+++ b/refactoring_custom.rc Sun Nov 02 22:01:00 2014 +0100
@@ -25,7 +25,7 @@
VALUE "LegalCopyright", "My CopyRight or CopyLeft\0"
VALUE "ProductName", "ProductName\0"
VALUE "ProductVersion", "6.2.4.1378\0"
- VALUE "ProductDate", "Sun, 02 Nov 2014 10:48:51 GMT\0"
+ VALUE "ProductDate", "Sun, 02 Nov 2014 20:52:49 GMT\0"
END
END