compiler/tests/PPCOptimizingTest.st
changeset 438 20598d7ce9fa
parent 422 116d2b2af905
child 444 a3657ab0ca6b
--- a/compiler/tests/PPCOptimizingTest.st	Tue Apr 21 17:20:11 2015 +0100
+++ b/compiler/tests/PPCOptimizingTest.st	Thu Apr 30 23:43:14 2015 +0200
@@ -13,11 +13,11 @@
 !PPCOptimizingTest methodsFor:'test support'!
 
 assert: object type: class
-	self assert: object class == class
+	self assert: (object isKindOf: class)
 !
 
 optimize: p
-	^ self optimize: p parameters: #()
+	^ p asCompilerTree optimizeTree 
 !
 
 optimize: p parameters: parameters
@@ -45,8 +45,11 @@
 	tree := self optimize: $a asParser  / $b asParser.
 
 	self assert: tree type: PPCChoiceNode.
-	self assert: tree children first  type: PPCInlineCharacterNode.
-	self assert: tree children second type: PPCInlineCharacterNode.
+	self assert: tree children first  type: PPCCharacterNode.
+	self assert: tree children first isMarkedForInline.
+	self assert: tree children second type: PPCCharacterNode.
+	self assert: tree children first isMarkedForInline.
+	
 !
 
 testForwarding
@@ -56,7 +59,7 @@
 	p1 name: 'p1'.
 	tree := self optimize: p1.
 
-	self assert: tree type: PPCCharacterNode.
+	self assert: tree type: PPCAbstractCharacterNode.
 	self assert: tree name = 'p1'.
 	
 	p2 name: 'p2'.
@@ -71,7 +74,8 @@
 	tree := self optimize: $a asParser plus.
 
 	self assert: tree type: PPCPlusNode.
-	self assert: tree child  type: PPCInlineCharacterNode.
+	self assert: tree child type: PPCCharacterNode.
+	self assert: tree child isMarkedForInline.
 	self assert: tree child character = $a.
 !
 
@@ -80,7 +84,8 @@
 	tree := self optimize: $a asParser star.
 
 	self assert: tree type: PPCStarNode.
-	self assert: tree child  type: PPCInlineCharacterNode.
+	self assert: tree child type: PPCCharacterNode.
+	self assert: tree child isMarkedForInline.
 	self assert: tree child character = $a.
 !
 
@@ -89,9 +94,11 @@
 	tree := self optimize: $a asParser, $b asParser.
 
 	self assert: tree type: PPCSequenceNode.
-	self assert: tree children first type: PPCInlineCharacterNode.
+	self assert: tree children first type: PPCCharacterNode.
+	self assert: tree children first isMarkedForInline.
 	self assert: tree children first character = $a.
-	self assert: tree children second type: PPCInlineCharacterNode.
+	self assert: tree children second type: PPCCharacterNode.
+	self assert: tree children second isMarkedForInline.
 	self assert: tree children second character = $b.	
 !
 
@@ -100,7 +107,8 @@
 	tree := self optimize: nil asParser star.
 
 	self assert: tree type: PPCStarNode.
-	self assert: tree child type: PPCInlineNilNode.
+	self assert: tree child type: PPCNilNode.
+	self assert: tree child isMarkedForInline.
 !
 
 testInlineNotLiteral
@@ -108,8 +116,9 @@
 	tree := self optimize: 'foo' asParser not star.
 
 	self assert: tree type: PPCStarNode.
-	self assert: tree child type: PPCInlineNotLiteralNode.
+	self assert: tree child type: PPCNotLiteralNode.
 	self assert: tree child literal = 'foo'.
+	self assert: tree child isMarkedForInline.
 !
 
 testInlineNotPredicate
@@ -117,16 +126,25 @@
 	tree := self optimize: (#letter asParser not, (PPPredicateObjectParser on: [ :e | e = $a or: [  e = $b ]] message: #foo) not).
 
 	self assert: tree type: PPCSequenceNode.
-	self assert: tree children first type: PPCInlineNotMessagePredicateNode.
-	self assert: tree children second type: PPCInlineNotCharSetPredicateNode.
+	self assert: tree children first type: PPCNotMessagePredicateNode.
+	self assert: tree children first isMarkedForInline.
+	self assert: tree children second type: PPCNotCharSetPredicateNode.
+	self assert: tree children second isMarkedForInline.
+	
 !
 
 testInlinePluggable
 	| tree |
 	tree := self optimize: [:ctx | nil] asParser star.
 
+	((Smalltalk respondsTo:#isSmalltalkX) and:[ Smalltalk isSmalltalkX ]) 
+		ifTrue:[ self skip: 'not supported in St/X' ].
+
 	self assert: tree type: PPCStarNode.
-	self assert: tree child type: PPCInlinePluggableNode.
+	self assert: tree child type: PPCPluggableNode.
+	self assert: tree child isMarkedForInline.
+
+    "Modified: / 23-04-2015 / 12:19:42 / Jan Vrany <jan.vrany@fit.cvut.cz>"
 !
 
 testInlinePredicate
@@ -134,8 +152,11 @@
 	tree := self optimize: (#letter asParser, (PPPredicateObjectParser on: [ :e | e = $a or: [  e = $b ]] message: #foo)).
 
 	self assert: tree type: PPCSequenceNode.
-	self assert: tree children first type: PPCInlineMessagePredicateNode.
-	self assert: tree children second type: PPCInlineCharSetPredicateNode.
+	self assert: tree children first type: PPCMessagePredicateNode.
+	self assert: tree children first isMarkedForInline.
+	self assert: tree children second type: PPCCharSetPredicateNode.
+	self assert: tree children second isMarkedForInline.
+	
 !
 
 testLetterPredicate
@@ -207,7 +228,7 @@
 
 testStarSeparator
 	| tree |
-	tree := self optimize: #space asParser star trimmingToken parameters: { #inline -> false }.
+	tree := self optimize: #space asParser star trimmingToken parameters: { #rewrite . #token }.
 
 	self assert: tree type: PPCTrimmingTokenNode.
 	self assert: tree child type: PPCTokenStarSeparatorNode.
@@ -219,7 +240,8 @@
 
 	self assert: tree type: PPCTrimmingTokenNode.
 	self assert: tree child type: PPCTokenSequenceNode.
-	self assert: tree child children first type: PPCInlineTokenStarSeparatorNode.
+	self assert: tree child children first type: PPCTokenStarSeparatorNode.
+	self assert: tree child children first isMarkedForInline.
 !
 
 testSymbolAction
@@ -239,11 +261,14 @@
 	self assert: tree type: PPCTokenNode.
 	self assert: tree child type: PPCTokenSequenceNode.
 	self assert: tree child children size = 2.
-	self assert: tree child children first type: PPCInlineMessagePredicateNode.
-	self assert: tree child children second type: PPCInlineTokenStarMessagePredicateNode.	
+	self assert: tree child children first type: PPCMessagePredicateNode.
+	self assert: tree child children first isMarkedForInline.
+	self assert: tree child children second type: PPCTokenStarMessagePredicateNode.	
+	self assert: tree child children second isMarkedForInline.
+	
 !
 
-testTokenSequence
+testTokenSequence2
 	| tree |
 	tree := self optimize: ($a asParser, $b asParser) token.
 
@@ -261,11 +286,15 @@
 	tree := self optimize: ((#letter asParser, #word asParser star) trimmingToken).
 
 	self assert: tree type: PPCTrimmingTokenNode.
-	self assert: tree whitespace type: PPCInlineTokenStarSeparatorNode.
+	self assert: tree whitespace type: PPCTokenStarSeparatorNode.
+	self assert: tree whitespace isMarkedForInline.
+	
 	self assert: tree child type: PPCTokenSequenceNode.
 	self assert: tree child children size = 2.
-	self assert: tree child children first type: PPCInlineMessagePredicateNode.
-	self assert: tree child children second type: PPCInlineTokenStarMessagePredicateNode.	
+	self assert: tree child children first type: PPCMessagePredicateNode.
+	self assert: tree child children first isMarkedForInline.
+	self assert: tree child children second type: PPCTokenStarMessagePredicateNode.	
+	self assert: tree child children first isMarkedForInline.
 !
 
 testTrimmingToken2
@@ -274,7 +303,8 @@
 	tree := parser asCompilerTree optimizeTree.
 	
 	self assert: tree type: PPCTrimmingTokenNode.
-	self assert: tree child type: PPCInlineLiteralNode.
+	self assert: tree child type: PPCLiteralNode.
+	self assert: tree child isMarkedForInline.
 	self assert: (tree whitespace allNodes allSatisfy: [ :n | n isKindOf: PPCNode ]).
 
 	parser := ('foo' asParser, $b asParser) trimmingToken.
@@ -282,14 +312,16 @@
 	
 	self assert: tree type: PPCTrimmingTokenNode.
 	self assert: tree child type: PPCTokenSequenceNode.
-	self assert: tree whitespace type: PPCInlineTokenStarSeparatorNode.
+	self assert: tree whitespace type: PPCTokenStarSeparatorNode.
+	self assert: tree whitespace isMarkedForInline.
 	
 	parser := $d asParser trimmingToken star.
 	tree := parser asCompilerTree optimizeTree.
 	
 	self assert: tree type: PPCStarNode.
 	self assert: tree child type: PPCTrimmingTokenNode.
-	self assert: tree child child type: PPCInlineCharacterNode.
+	self assert: tree child child type: PPCCharacterNode.
+	self assert: tree child child isMarkedForInline.
 !
 
 testTrimmingToken3
@@ -310,7 +342,8 @@
 	
 	self assert: tree type: PPCTrimmingTokenNode.
 	self assert: tree children second type: PPCTokenSequenceNode.
-	self assert: tree children second children first type: PPCInlineNotLiteralNode.
+	self assert: tree children second children first type: PPCNotLiteralNode.
+	self assert: tree children second children first isMarkedForInline.
 ! !
 
 !PPCOptimizingTest class methodsFor:'documentation'!