2014-10-17 13:28 GMT+02:00 Marcus Denker <marcus.denker@inria.fr>:
-- Marcus Denker Sent with Airmail
On 17 Oct 2014 at 12:46:20, Nicolai Hess (nicolaihess@web.de) wrote:
I ran some testcases with your changes and I expect some test are failing now, but actually they don't fail but others do.
Yes, but I think these tests are wrong. (needs to be carefully checked).
Ok, some checks: OCASTCheckerTest testSemanticAnalysisOnNonMethodNode is this a testcase? what does it test? testNoRemoteBlockArgument testNoRemoteBlockTemp both look similiar. testsingleRemoteTempVarWhileWithTempNotInlined I would add assertions for the "temp" var the others look fine. OCASTClosureAnalyzerTest testOptimizedBlockWriteInNestedBlockCase2: the testmethos like (OCOpalExamples>>#optimizedBlockWriteInNestedBlockCase2) arent supposed to be runnable code, but I would change the "(true)whileTrue:" to -> "[true] whileTrue:" anyway. testOptimizedBlockWriteInNestedBlockCase3 look at the comment for : self assert: ast scope copiedVars size = 1. "Is this correct, I think that the copied vars should be empty." I think the number of copiedVars is right, because there is a outer block. the same for testOptimizedBlockWriteInNestedBlockCase4, the whileTrue is inside of a block. in testOptimizedBlockWrittenAfterClosedOverCase1 there is a comment "problem: as block is optimized, this var does not need to be remote" self assert: (scopes third tempVector at: 'temp') isRemote. But I think this is correct, the temp var is within a block the others look fine. Changing the method visitVariableNode: and lookupVariableForWrite: makes these tests failing: testOptimizedBlockWrittenAfterClosedOverCase1 it fails in self deny: (ast scope lookupVar: 'index') isEscaping. I think the test is right, the var index is only used within the whileTrue block. the same for testOptimizedBlockWrittenAfterClosedOverCase2 testExampleSimpleBlockLocalWhile fails, I think the test is right, but I am not sure. testOptimizedBlockWriteInBlock fails in self assert: ast scope tempVars size = 1. But I think the test is right, there is only one local var, and it is written only in the whileTrue:[block] the same in testOptimizedBlockWriteInNestedBlockCase2, allthough the whileTrue: is in another ifTrue:[] block the same for the other failing tests.