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