class: RegressionTests::CompilerTests2
Context tests refactored and more checks added.
--- a/RegressionTests__CompilerTests2.st Fri Sep 26 15:35:44 2014 +0200
+++ b/RegressionTests__CompilerTests2.st Fri Sep 26 16:10:52 2014 +0200
@@ -3,7 +3,9 @@
"{ NameSpace: RegressionTests }"
TestCase subclass:#CompilerTests2
- instanceVariableNames:'methods enabledJIT argAndVarNames argAndVarNamesContext'
+ instanceVariableNames:'methods enabledJIT savedContext savedContextArgAndVarNames
+ savedContextArgAndVarValues savedContextArgAndVarValuesUsingEval
+ savedContextLine'
classVariableNames:''
poolDictionaries:''
category:'tests-Regression-Compilers'
@@ -73,6 +75,43 @@
"Created: / 12-04-2013 / 21:20:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
"Modified: / 13-04-2013 / 10:12:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+saveContext
+ self saveContext: thisContext sender.
+
+ "Created: / 26-09-2014 / 12:49:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+!
+
+saveContext: aContext
+ savedContext := aContext.
+ savedContextArgAndVarNames := savedContext argAndVarNames asArray.
+ savedContextArgAndVarValues := savedContext argsAndVars.
+ savedContextArgAndVarValuesUsingEval := savedContextArgAndVarNames
+ collect:[ :each |
+ Compiler evaluate:each
+ in:savedContext
+ receiver:savedContext receiver
+ notifying:nil
+ logged:false
+ ifFail:[ '*Error when evaluating*'].
+ ].
+ savedContextLine := savedContext lineNumber.
+
+ self assert: savedContextArgAndVarNames size == savedContextArgAndVarValues size.
+ self assert: savedContextArgAndVarNames size == savedContextArgAndVarValuesUsingEval size.
+
+ 1 to: savedContextArgAndVarValues size do:[:i |
+ | v1 v2 |
+
+ v1 := savedContextArgAndVarValues at: i.
+ v2 := savedContextArgAndVarValuesUsingEval at: i.
+
+ self assert: v1 == v2. "HAS to be IDENTICAL"
+ ].
+
+ "Created: / 26-09-2014 / 12:49:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 14:58:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CompilerTests2 methodsFor:'private-mock methods'!
@@ -82,10 +121,11 @@
| isEven |
isEven := each even.
- argAndVarNames := thisContext argAndVarNames asArray.
+ self saveContext.
].
"Created: / 20-08-2013 / 09:04:46 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:00:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_argAndVarNames_02
@@ -98,21 +138,22 @@
someOtherLocal := char == $1.
].
isEven := each even.
- argAndVarNames := thisContext argAndVarNames asArray.
+ self saveContext.
].
"Created: / 20-08-2013 / 09:17:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:00:59 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_argAndVarNames_03
"Reported by Stefan"
- argAndVarNames := 1.
- (Smalltalk isStandAloneApp | (argAndVarNames == 1)) ifTrue:[
+ savedContextArgAndVarNames := 1.
+ (Smalltalk isStandAloneApp | (savedContextArgAndVarNames == 1)) ifTrue:[
| ttt |
ttt := 123.
- argAndVarNames := (argAndVarNamesContext := thisContext) argAndVarNames asArray.
+ self saveContext.
].
self halt.
@@ -122,7 +163,7 @@
"
"Created: / 20-08-2013 / 09:22:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 25-06-2014 / 14:27:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:01:04 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_argAndVarNames_04
@@ -134,11 +175,12 @@
| isOddNot |
isOddNot := each odd not.
- argAndVarNames := thisContext argAndVarNames asArray.
+ self saveContext.
]
].
"Created: / 20-08-2013 / 10:11:54 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:01:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_argAndVarNames_05
@@ -152,7 +194,7 @@
local2 := 42.
i == 1 ifTrue:[
- argAndVarNames := thisContext argAndVarNames asArray.
+ self saveContext.
]
]
].
@@ -164,6 +206,7 @@
"
"Created: / 22-08-2013 / 15:48:57 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:01:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_argAndVarNames_06
@@ -179,7 +222,7 @@
superDef := ProjectDefinition definitionClassForPackage: cls superclass package.
superNm := cls superclass name.
- argAndVarNames := thisContext argAndVarNames asArray.
+ self saveContext.
^ self
].
].
@@ -191,6 +234,7 @@
"
"Created: / 20-09-2013 / 11:44:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:01:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
method_lineno_002
@@ -558,13 +602,19 @@
setUp
methods := Set new.
enabledJIT := ObjectMemory justInTimeCompilation:true.
- argAndVarNames := nil.
+ savedContext := savedContextArgAndVarNames
+ := savedContextArgAndVarValues := savedContextArgAndVarValuesUsingEval
+ := savedContextLine := '* Not assigned *'.
"Created: / 25-04-2013 / 15:20:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 20-08-2013 / 09:05:15 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 13:00:31 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
tearDown
+ savedContext := savedContextArgAndVarNames
+ := savedContextArgAndVarValues := savedContextArgAndVarValuesUsingEval
+ := savedContextLine := nil.
+
ObjectMemory justInTimeCompilation: enabledJIT.
Class withoutUpdatingChangesDo:[
| classesToRemove |
@@ -590,7 +640,7 @@
]
"Created: / 26-10-2012 / 11:32:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
- "Modified: / 24-06-2013 / 14:12:22 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 12:59:58 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CompilerTests2 methodsFor:'tests'!
@@ -801,73 +851,93 @@
test_argAndVarNames_01
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_01) source mode: mode.
self perform: (mode , '_method_argAndVarNames_01') asSymbol.
- self assert: argAndVarNames = #(each isEven)
+ self assert: savedContextArgAndVarNames = #(each isEven).
+ self assert: savedContextArgAndVarValues = #(4 true)
+
]
"Created: / 20-08-2013 / 09:05:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:02:00 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_argAndVarNames_02
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_02) source mode: mode.
self perform: (mode , '_method_argAndVarNames_02') asSymbol.
- self assert: argAndVarNames = #(each isEven)
+ self assert: savedContextArgAndVarNames = #(each isEven).
+ self assert: savedContextArgAndVarValues = #(4 true)
]
"Created: / 20-08-2013 / 09:17:16 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:02:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_argAndVarNames_03
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_03) source mode: mode.
self perform: (mode , '_method_argAndVarNames_03') asSymbol.
- self assert: argAndVarNames = #(ttt)
+ self assert: savedContextArgAndVarNames = #(ttt).
+ self assert: savedContextArgAndVarValues = #(123)
]
"Created: / 20-08-2013 / 09:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:03:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_argAndVarNames_04
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_04) source mode: mode.
self perform: (mode , '_method_argAndVarNames_04') asSymbol.
- self assert: argAndVarNames = #(each isEven isOddNot)
+ self assert: savedContextArgAndVarNames = #(each isEven isOddNot).
+ self assert: savedContextArgAndVarValues = #(4 true true).
]
"Created: / 20-08-2013 / 10:12:08 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:04:18 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_argAndVarNames_05
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_05) source mode: mode.
self perform: (mode , '_method_argAndVarNames_05') asSymbol.
- self assert: argAndVarNames = #(len i local1 local2)
+ self assert: savedContextArgAndVarNames = #(len i local1 local2).
+ self assert: savedContextArgAndVarValues = #(5 1 #local1 42)
]
"Created: / 22-08-2013 / 15:49:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:05:13 / Jan Vrany <jan.vrany@fit.cvut.cz>"
!
test_argAndVarNames_06
#(bc jit stc) do:[:mode |
- argAndVarNames := nil.
+ savedContextArgAndVarNames := nil.
self compile: (self class >> #method_argAndVarNames_06) source mode: mode.
self perform: (mode , '_method_argAndVarNames_06') asSymbol.
- self assert: argAndVarNames = #(clsnm attributes cls superDef superNm)
+ self assert: savedContextArgAndVarNames = #(clsnm attributes cls superDef superNm).
+ self assert: savedContextArgAndVarValues = {
+ self class name.
+ #(#autoload).
+ self class.
+ Smalltalk at: #stx_goodies_sunit.
+ self class superclass name.
+ }
+
]
"Created: / 20-09-2013 / 11:44:47 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+ "Modified: / 26-09-2014 / 15:09:01 / Jan Vrany <jan.vrany@fit.cvut.cz>"
! !
!CompilerTests2 methodsFor:'tests - line numbers'!