SyntaxHighlighter2.st
branchjv
changeset 12123 4bde08cebd48
parent 11152 c9a386e4f1e0
child 12125 0c49a3b13e43
--- a/SyntaxHighlighter2.st	Fri Jan 27 22:18:53 2012 +0100
+++ b/SyntaxHighlighter2.st	Sun Jan 29 12:53:39 2012 +0000
@@ -26,7 +26,7 @@
 "{ Package: 'stx:libtool' }"
 
 SyntaxHighlighter subclass:#SyntaxHighlighter2
-	instanceVariableNames:'elements lastVariableElements lastSelectorElement'
+	instanceVariableNames:'elements lastSelectorElement lastVariableElement'
 	classVariableNames:''
 	poolDictionaries:''
 	category:'Interface-CodeView-Syntax'
@@ -217,11 +217,7 @@
 !
 
 elements:something
-    "the element collection, to collect variables, selectors etc. into"
-
     elements := something.
-
-    "Modified (comment): / 21-08-2011 / 09:13:31 / cg"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'initialization'!
@@ -230,11 +226,10 @@
 
     super initialize.
     elements := SortedCollection new.
-    lastVariableElements := Dictionary new.
+    lastVariableElement := Dictionary new.
 
     "Created: / 14-02-2010 / 13:08:27 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-06-2010 / 13:04:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-08-2011 / 09:37:35 / cg"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'parsing-expressions'!
@@ -242,7 +237,7 @@
 binaryExpressionFor:receiverArg
     "parse a binary-expression; return a node-tree, nil or #Error"
 
-    |receiver expr arg sel pos1 pos2 lno|
+    |receiver expr arg sel pos1 pos2 lno note|
 
     receiver := receiverArg.
     (receiver == #Error) ifTrue:[^ #Error].
@@ -305,7 +300,12 @@
         expr lineNumber:lno.
         expr selectorPosition:pos1.
 
-        self checkPlausibilityOf:expr from:pos1 to:pos2.
+        (ignoreErrors or:[ignoreWarnings]) ifFalse:[
+            note := self plausibilityCheck:expr.
+            note notNil ifTrue:[
+                self warning:note position:pos1 to:pos2
+            ].
+        ].
         parseForCode ifFalse:[
             self rememberSelectorUsed:sel receiver:receiver
         ].
@@ -314,8 +314,8 @@
     ^ receiver
 
     "Modified: / 09-01-1998 / 19:05:18 / stefan"
+    "Modified: / 19-01-2000 / 16:22:04 / cg"
     "Modified: / 14-02-2010 / 17:54:53 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-01-2012 / 10:46:49 / cg"
 !
 
 expression
@@ -463,7 +463,7 @@
                            | { KEYWORD-PART binaryExpression }
     "
 
-    |expr receiver sel arg args posR1 posR2 pos1 pos2 lno positions constVal|
+    |expr receiver sel arg args posR1 posR2 pos1 pos2 lno note positions constVal|
 
     receiver := receiverArg.
     posR1 := tokenPosition.
@@ -510,7 +510,12 @@
         expr := MessageNode receiver:receiver selector:sel args:args fold:nil.
     ].
     expr lineNumber:lno.
-    self checkPlausibilityOf:expr from:pos1 to:pos2.
+    (ignoreErrors or:[ignoreWarnings]) ifFalse:[
+        note := self plausibilityCheck:expr.
+        note notNil ifTrue:[
+            self warning:note position:pos1 to:pos2
+        ].
+    ].
     parseForCode ifFalse:[
         self rememberSelectorUsed:sel receiver:receiver
     ].
@@ -596,14 +601,14 @@
 
     ^ expr.
 
+    "Modified: / 19-01-2000 / 16:22:22 / cg"
     "Modified: / 14-02-2010 / 17:58:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-01-2012 / 10:47:01 / cg"
 !
 
 unaryExpressionFor:receiverArg
     "parse a unary-expression; return a node-tree, nil or #Error"
 
-    |receiver expr sel pos pos2 lNr arguments|
+    |receiver expr sel pos pos2 note lNr arguments|
 
     receiver := receiverArg.
     (receiver == #Error) ifTrue:[^ #Error].
@@ -635,7 +640,12 @@
                     expr := MessageNode receiver:receiver selector:sel args:arguments fold:nil.
                 ].
                 expr lineNumber:lNr.
-                self checkPlausibilityOf:expr from:pos to:pos2.
+                (ignoreErrors or:[ignoreWarnings]) ifFalse:[
+                    note := self plausibilityCheck:receiver.
+                    note notNil ifTrue:[
+                        self warning:note position:pos to:pos2
+                    ].
+                ].
                 parseForCode ifFalse:[
                     self rememberSelectorUsed:sel receiver:receiver
                 ].
@@ -652,7 +662,12 @@
         ].
         expr lineNumber:lNr.
 
-        self checkPlausibilityOf:expr from:pos to:pos2.
+        (ignoreErrors or:[ignoreWarnings]) ifFalse:[
+            note := self plausibilityCheck:expr.
+            note notNil ifTrue:[
+                self warning:note position:pos to:pos2
+            ].
+        ].
         parseForCode ifFalse:[
             self rememberSelectorUsed:sel receiver:receiver
         ].
@@ -661,18 +676,24 @@
     ].
     ^ receiver
 
+    "Modified: / 16-07-2006 / 16:15:22 / cg"
     "Modified: / 14-02-2010 / 17:56:21 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 19-01-2012 / 10:47:37 / cg"
 ! !
 
 !SyntaxHighlighter2 methodsFor:'syntax detection'!
 
 markArgumentIdentifierFrom:pos1 to:pos2
+
+    | element prev |
+
     super markArgumentIdentifierFrom:pos1 to:pos2.
-    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
+    element := SyntaxElement from: pos1 to: pos2 type: #variable value: tokenName.
+    prev := lastVariableElement at: tokenName ifAbsent:[nil].
+    prev ifNotNil:[prev next:element].
+    lastVariableElement at: tokenName put:element.
+    elements add: element.
 
     "Created: / 24-07-2010 / 09:25:12 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-08-2011 / 09:27:26 / cg"
 !
 
 markGlobalClassIdentifierFrom:pos1 to:pos2
@@ -682,31 +703,32 @@
     super markGlobalClassIdentifierFrom:pos1 to:pos2.
 
     name := token isString ifTrue:[token asSymbolIfInterned] ifFalse:[nil].
-    name notNil ifTrue:[
-        env := (classToCompileFor ? UndefinedObject) theNonMetaclass environment.
+    name ifNotNil:
+        [env := (classToCompileFor ? UndefinedObject) theNonMetaclass environment.
         cls := env isNameSpace 
                 ifTrue:[env at: name]
                 ifFalse:[nil].
-        cls isNil ifTrue:[
-            cls := Smalltalk at: name
-        ]
-    ].
+        cls ifNil:[
+        cls := Smalltalk at: name]].
 
     elements add:
         (SyntaxElement from: pos1 to: pos2 type: #class value: cls)
 
     "Created: / 14-02-2010 / 14:08:44 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 15-02-2010 / 10:53:40 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 18-11-2011 / 14:54:53 / cg"
 !
 
 markLocalIdentifierFrom:pos1 to:pos2
-    super markLocalIdentifierFrom:pos1 to:pos2.
+    | element prev |
 
-    self rememberVariableElementFor:tokenName type:#variable from:pos1 to:pos2
+    super markLocalIdentifierFrom:pos1 to:pos2.
+    element := SyntaxElement from: pos1 to: pos2 type: #variable value: tokenName.
+    prev := lastVariableElement at: tokenName ifAbsent:[nil].
+    prev ifNotNil:[prev next:element].
+    lastVariableElement at: tokenName put:element.
+    elements add: element.
 
     "Created: / 24-07-2010 / 09:28:55 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 21-08-2011 / 09:27:12 / cg"
 !
 
 markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode
@@ -716,20 +738,13 @@
     super markSelector:selectorString from:pos1 to:pos2 receiverNode:aReceiverNode.
 
     element := SyntaxElement from: pos1 to: pos2 type: #selector value: selectorString asSymbol.
-    lastSelectorElement ifNotNil:[lastSelectorElement next: element].
+    lastSelectorElement 
+        ifNotNil:[lastSelectorElement next: element].
     elements add: element.
     lastSelectorElement := element.
 
     "Created: / 14-02-2010 / 17:40:09 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 14-02-2010 / 19:24:17 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified (format): / 21-08-2011 / 09:18:21 / cg"
-!
-
-markSelfFrom:pos1 to:pos2
-    super markSelfFrom:pos1 to:pos2.
-    self rememberVariableElementFor:'self' type:#self from:pos1 to:pos2
-
-    "Created: / 21-08-2011 / 09:15:45 / cg"
 !
 
 markUnknownIdentifierFrom:pos1 to:pos2
@@ -743,36 +758,28 @@
 !
 
 markVariable:v from:pos1 to:pos2
+
+    | element prev |
     super markVariable:v from:pos1 to:pos2.
     (v type == #GlobalVariable) ifTrue:[^self].
 
-    self rememberVariableElementFor:v name type:#variable from:pos1 to:pos2
+    element := SyntaxElement from: pos1 to: pos2 type: #variable value: v name.
+
+    prev := lastVariableElement at: v name ifAbsent:[nil].
+    prev ifNotNil:[prev next:element].
+    lastVariableElement at: v name put:element.
+    elements add: element.
 
     "Created: / 25-06-2010 / 13:03:37 / Jan Vrany <jan.vrany@fit.cvut.cz>"
     "Modified: / 25-06-2010 / 14:23:03 / Jan Vrany <jan.vrany@fit.cvut.cz>"
-    "Modified: / 21-08-2011 / 09:26:30 / cg"
-!
-
-rememberVariableElementFor:name type:typeSymbol from:pos1 to:pos2
-    |element prev|
-
-    element := SyntaxElement from: pos1 to: pos2 type:typeSymbol value: name.
-
-    prev := lastVariableElements at:name ifAbsent:[nil].
-    prev notNil ifTrue:[prev next:element].
-    lastVariableElements at:name put:element.
-
-    elements add: element.
-
-    "Created: / 21-08-2011 / 09:26:24 / cg"
 ! !
 
 !SyntaxHighlighter2 class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.8 2012-01-19 09:48:54 cg Exp $'
+    ^ '§Header: /cvs/stx/stx/libtool/SyntaxHighlighter2.st,v 1.5 2011/08/02 07:36:08 cg Exp §'
 !
 
 version_SVN
-    ^ '§Id: SyntaxHighlighter2.st 7715 2011-04-10 16:32:58Z vranyj1 §'
-! !
+    ^ '$Id: SyntaxHighlighter2.st 7715 2011-04-10 16:32:58Z vranyj1 $'
+! !
\ No newline at end of file