[Pkg] The Trunk: KernelTests-eem.339.mcz

commits at source.squeak.org commits at source.squeak.org
Tue Mar 27 18:42:20 UTC 2018


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)]]!



More information about the Packages mailing list