--- 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'!