--- a/DoWhatIMeanSupport.st Fri Jul 11 21:40:24 2008 +0200
+++ b/DoWhatIMeanSupport.st Sat Jul 12 17:23:08 2008 +0200
@@ -13,7 +13,7 @@
Object subclass:#DoWhatIMeanSupport
instanceVariableNames:''
- classVariableNames:''
+ classVariableNames:'LastSource LastParseTree'
poolDictionaries:''
category:'System-Support'
!
@@ -667,18 +667,25 @@
interval isEmpty ifTrue: [^ nil].
RBParser isNil ifTrue: [^ nil].
- tree := RBParser
+ source = LastSource ifTrue:[
+ tree := LastParseTree.
+ ] ifFalse:[
+ tree := RBParser
parseMethod:source
onError: [:str :err ":nodesSoFar" | ^ nil].
+
+ tree isNil ifTrue:[^ nil].
- tree isNil ifTrue:[^ nil].
+ LastSource := source.
+ LastParseTree := tree.
+ ].
node := tree whichNodeIsContainedBy:interval.
node isNil ifTrue: [
- node := tree bestNodeFor: interval
- ].
- node isNil ifTrue: [
- node := DoWhatIMeanSupport findNodeIn:tree forInterval:interval
+ node := tree bestNodeFor: interval.
+ node isNil ifTrue: [
+ node := DoWhatIMeanSupport findNodeIn:tree forInterval:interval
+ ].
].
^ node
@@ -691,7 +698,10 @@
interval isEmpty ifTrue: [^ nil].
RBParser isNil ifTrue: [^ nil].
- tree := RBParser
+ source = LastSource ifTrue:[
+ tree := LastParseTree.
+ ] ifFalse:[
+ tree := RBParser
parseMethod:source
onError: [:str :err :nodesSoFar |
|nodes|
@@ -708,6 +718,10 @@
rememberNodes:true.
"/ onError: [:str :err | errCount := (errCount?0) + 1. self halt.]
"/ proceedAfterError:true.
+ tree isNil ifTrue:[^ nil].
+ LastSource := source.
+ LastParseTree := tree.
+ ].
^ self findNodeForInterval:interval inParseTree:tree.
!
@@ -719,6 +733,9 @@
parseTree isNil ifTrue:[^ nil].
node := parseTree whichNodeIsContainedBy:interval.
+ node isNil ifTrue:[
+ node := parseTree whichNodeIntersects:interval.
+ ].
node isNil ifTrue: [
node := self findNodeIn:parseTree forInterval:interval
].
@@ -785,7 +802,10 @@
treeForCode:source allowErrors:allowErrors
|tree|
- tree := RBParser
+ source = LastSource ifTrue:[
+ tree := LastParseTree.
+ ] ifFalse:[
+ tree := RBParser
parseMethod:source
onError: [:str :err :nodesSoFar :parser|
allowErrors ifTrue:[
@@ -795,7 +815,10 @@
]
proceedAfterError:false
rememberNodes:true.
-
+ tree isNil ifTrue:[^ nil].
+ LastSource := source.
+ LastParseTree := tree.
+ ].
^ tree
! !
@@ -1610,5 +1633,5 @@
!DoWhatIMeanSupport class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.34 2008-07-09 19:17:06 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libwidg2/DoWhatIMeanSupport.st,v 1.35 2008-07-12 15:23:08 cg Exp $'
! !