CodeGenerator.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Wed, 27 Feb 2013 12:34:59 +0000
branchjv
changeset 12431 9f0c59c742d5
parent 12128 a7ff7d66ee85
child 15566 184cea584be5
permissions -rw-r--r--
Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     1
"
10047
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     2
 Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     3
 Copyright (c) 2009-2010 eXept Software AG
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
     4
10047
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     5
 Permission is hereby granted, free of charge, to any person
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     6
 obtaining a copy of this software and associated documentation
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     7
 files (the 'Software'), to deal in the Software without
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     8
 restriction, including without limitation the rights to use,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
     9
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    10
 copies of the Software, and to permit persons to whom the
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    11
 Software is furnished to do so, subject to the following
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    12
 conditions:
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    13
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    14
 The above copyright notice and this permission notice shall be
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    15
 included in all copies or substantial portions of the Software.
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    16
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    17
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    18
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    19
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    20
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    21
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    22
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    23
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    24
 OTHER DEALINGS IN THE SOFTWARE.
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    25
"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    26
"{ Package: 'stx:libtool' }"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    27
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    28
RBProgramNodeVisitor subclass:#CodeGenerator
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    29
	instanceVariableNames:'class protocol source change replacements'
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    30
	classVariableNames:''
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    31
	poolDictionaries:''
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    32
	category:'Interface-Browsers'
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    33
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    34
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    35
!CodeGenerator class methodsFor:'documentation'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    36
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    37
copyright
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    38
"
10047
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    39
 Copyright (c) 2007-2010 Jan Vrany, SWING Research Group, Czech Technical University in Prague
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    40
 Copyright (c) 2009-2010 eXept Software AG
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    41
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    42
 Permission is hereby granted, free of charge, to any person
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    43
 obtaining a copy of this software and associated documentation
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    44
 files (the 'Software'), to deal in the Software without
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    45
 restriction, including without limitation the rights to use,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    46
 copy, modify, merge, publish, distribute, sublicense, and/or sell
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    47
 copies of the Software, and to permit persons to whom the
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    48
 Software is furnished to do so, subject to the following
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    49
 conditions:
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    50
10047
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    51
 The above copyright notice and this permission notice shall be
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    52
 included in all copies or substantial portions of the Software.
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    53
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    54
 THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    55
 EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    56
 OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    57
 NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    58
 HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    59
 WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    60
 FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
5962c20bb7d8 copyright
Claus Gittinger <cg@exept.de>
parents: 10020
diff changeset
    61
 OTHER DEALINGS IN THE SOFTWARE.
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    62
"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    63
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    64
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    65
!CodeGenerator methodsFor:'accessing'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    66
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    67
category:aString
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    68
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    69
    self protocol: aString
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    70
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    71
    "Created: / 30-12-2008 / 17:41:44 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    72
    "Modified: / 07-07-2009 / 18:46:20 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    73
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    74
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    75
change
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    76
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    77
   change ifNil:[self createChange].
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    78
   ^change
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    79
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    80
    "Created: / 30-12-2008 / 17:14:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    81
    "Modified: / 07-07-2009 / 18:45:07 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    82
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    83
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    84
class:aClass
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    85
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    86
    class := aClass
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    87
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    88
    "Created: / 30-12-2008 / 15:38:00 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    89
    "Modified: / 07-07-2009 / 18:46:34 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    90
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    91
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    92
protocol
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    93
    ^ protocol
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    94
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    95
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    96
protocol:aString
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    97
    protocol := aString.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    98
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
    99
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   100
replace: placeholder with: code
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   101
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   102
    replacements 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   103
        at: placeholder
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   104
        put: (code isSymbol 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   105
                ifTrue:[code]
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   106
                ifFalse:[RBParser parseRewriteExpression: code])
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   107
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   108
    "Created: / 07-07-2009 / 18:48:21 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   109
    "Modified: / 07-07-2009 / 19:58:51 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   110
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   111
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   112
replacementFor: placeholder
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   113
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   114
    ^replacements 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   115
        at: placeholder
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   116
        ifAbsent:[self error:'No replacement for ', placeholder]
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   117
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   118
    "Created: / 07-07-2009 / 19:13:18 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   119
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   120
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   121
source:aString
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   122
    source := aString.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   123
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   124
    "Created: / 30-12-2008 / 17:04:14 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   125
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   126
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   127
!CodeGenerator methodsFor:'compiling'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   128
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   129
compile
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   130
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   131
    ^self change apply
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   132
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   133
    "Created: / 07-07-2009 / 18:47:52 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   134
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   135
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   136
!CodeGenerator methodsFor:'initialization'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   137
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   138
initialize
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   139
    "Invoked when a new instance is created."
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   140
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   141
    super initialize.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   142
    replacements := Dictionary new.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   143
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   144
    "Created: / 30-12-2008 / 15:29:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   145
    "Modified: / 07-07-2009 / 18:45:17 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   146
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   147
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   148
!CodeGenerator methodsFor:'private'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   149
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   150
createChange
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   151
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   152
    | method |
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   153
    method := RBParser parseRewriteMethod: source.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   154
    method source: nil.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   155
    method acceptVisitor: self.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   156
    (change := InteractiveAddMethodChange new)
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   157
        class: class
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   158
        protocol: protocol
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   159
        source: method formattedCode.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   160
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   161
    "Created: / 07-07-2009 / 18:44:42 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   162
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   163
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   164
replacePlaceholdersInSelectorPartsOf:aMessageNode 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   165
    aMessageNode selectorParts do:[:part | 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   166
        part isPatternVariable ifTrue:[
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   167
            |replacement|
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   168
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   169
            replacement := self replacementFor:part value.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   170
            (replacement isSymbol or:[ replacement isVariable ]) ifFalse:[
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   171
                self error:'Replacement for selector parts must be a single selector'
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   172
            ].
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   173
            part value:replacement formattedCode
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   174
        ]
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   175
    ]
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   176
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   177
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   178
!CodeGenerator methodsFor:'visitor-double dispatching'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   179
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   180
acceptMessageNode:aMessageNode 
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   181
    self replacePlaceholdersInSelectorPartsOf:aMessageNode.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   182
    super acceptMessageNode:aMessageNode.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   183
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   184
    "Created: / 07-07-2009 / 19:23:08 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   185
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   186
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   187
acceptMethodNode: aMethodNode
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   188
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   189
    self replacePlaceholdersInSelectorPartsOf: aMethodNode.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   190
    super acceptMethodNode: aMethodNode.
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   191
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   192
    "Created: / 07-07-2009 / 19:09:11 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   193
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   194
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   195
acceptVariableNode: aVariableNode
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   196
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   197
    aVariableNode isPatternNode ifTrue:
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   198
        [aVariableNode replaceWith:
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   199
            (self replacementFor:aVariableNode name)]
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   200
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   201
    "Created: / 30-12-2008 / 17:13:16 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   202
    "Modified: / 07-07-2009 / 19:13:55 / Jan Vrany <vranyj1@fel.cvut.cz>"
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   203
! !
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   204
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   205
!CodeGenerator class methodsFor:'documentation'!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   206
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   207
version_CVS
12123
4bde08cebd48 trunk branched into /branches/jv
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 10047
diff changeset
   208
    ^ '§Header: /cvs/stx/stx/libtool/CodeGenerator.st,v 1.2 2011/07/03 13:41:45 cg Exp §'
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   209
!
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   210
12431
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   211
version_HG
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   212
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   213
    ^ '$Changeset: <not expanded> $'
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   214
!
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   215
10020
8a61b43817e1 initial checkin
Claus Gittinger <cg@exept.de>
parents:
diff changeset
   216
version_SVN
12128
a7ff7d66ee85 Improvements in LintHighlighter, few fixes
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12123
diff changeset
   217
    ^ '$Id: CodeGenerator.st 7854 2012-01-30 17:49:41Z vranyj1 $'
12431
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   218
! !
9f0c59c742d5 Added LintRuleSettingsApplication and LintRuleEditDialog to define user-defined rule sets.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 12128
diff changeset
   219