[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-dev
Subject: [squeak-dev] The Trunk: KernelTests-eem.339.mcz
From: commits () source ! squeak ! org
Date: 2018-03-27 18:42:20
Message-ID: E1f0tY6-0004dh-PL () andreas
[Download RAW message or body]
Eliot Miranda uploaded a new version of KernelTests to project The Trunk:
http://source.squeak.org/trunk/KernelTests-eem.339.mcz
==================== Summary ====================
Name: KernelTests-eem.339
Author: eem
Time: 27 March 2018, 11:42:08.383576 am
UUID: 8c45b1d4-42d5-405e-888d-9fc6a5418e2c
Ancestors: KernelTests-eem.338
comment that last stipulation
=============== Diff against KernelTests-eem.338 ===============
Item was changed:
----- Method: LiteralRefLocatorTest>>testThoroughFindLiteralsInBytecode (in \
category 'tests') ----- testThoroughFindLiteralsInBytecode
"Create a method referencing integers, characters, special selectors and nil, true \
& false. Compile it and check that the objects are found."
| literals problem primary secondary |
literals := #(-1 0 1 $0 $1 1.0 #[1 2 3 4] 'one' #one nil true false NaN).
problem := Float bindingOf: #NaN.
primary := CompiledCode classPool at: #PrimaryBytecodeSetEncoderClass.
secondary := CompiledCode classPool at: #SecondaryBytecodeSetEncoderClass.
{ primary. secondary } do:
[:encoderClass| | method |
#(('' '') ('^[' ']')) do: "And the locators should work whether in a block or \
not" [:pFixes|
"NaN's binding should still be found even though (Float bindingOf: #NaN) ~= \
(Float bindingOf: #NaN)" method := (Parser new
encoderClass: encoderClass;
parse: 'foo ', pFixes first, '^NaN', pFixes last class: Float)
generate: CompiledMethodTrailer empty.
[:literal|
self assert: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: false).
self assert: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: true).
+ "The selector of a method should never be found (unless it occurs as a literal \
or in a pragma)" self deny: (method
refersTo: method selector
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: false).
self deny: (method
refersTo: method selector
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: true)] value: problem.
"All the literals should be found in a thorough search, but not otherwise"
method := (Parser new
encoderClass: encoderClass;
parse: 'foo ', pFixes first, '^', literals storeString, pFixes last class: \
Float) generate: CompiledMethodTrailer empty.
literals, {problem. problem key} do:
[:literal|
self deny: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: false).
self assert: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: true)]].
"Likewise if in a pragma"
method := (Parser new
encoderClass: encoderClass;
parse: 'foo <pragma: ', literals storeString, ' with: ', problem key \
storeString, '>' class: Float) generate: CompiledMethodTrailer empty.
literals, {problem. problem key} do:
[:literal|
self deny: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: false).
self assert: (method
refersTo: literal
primaryBytecodeScanner: (primary scanBlockOrNilForLiteral: literal)
secondaryBytecodeScanner: (secondary scanBlockOrNilForLiteral: literal)
thorough: true)]]!
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic