Tools__GenericToolbox.st
author Jan Vrany <jan.vrany@fit.cvut.cz>
Mon, 16 Nov 2015 13:33:19 +0000
branchjv
changeset 15950 23be8cf85415
parent 14025 9214f9d6bf5a
child 17304 3eea1002b141
permissions -rw-r--r--
Bugfix in merge tool. Due to a bug, even an unmerged code has been treated as merged and wrong .st file has been written (with <conflict> lines. This commit should fix this problem.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
15950
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     1
"
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     2
 COPYRIGHT (c) 2006 by eXept Software AG
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     3
              All Rights Reserved
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     4
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     5
 This software is furnished under a license and may be used
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     6
 only in accordance with the terms of that license and with the
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     7
 inclusion of the above copyright notice.   This software may not
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     8
 be provided or otherwise made available to, or used by, any
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
     9
 other person.  No title to or ownership of the software is
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    10
 hereby transferred.
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    11
"
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    12
"{ Package: 'stx:libtool' }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    13
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    14
"{ NameSpace: Tools }"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    15
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    16
Toolbox subclass:#GenericToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    17
	instanceVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    18
	classVariableNames:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    19
	poolDictionaries:''
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    20
	category:'Interface-Tools'
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    21
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    22
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    23
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    24
15950
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    25
copyright
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    26
"
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    27
 COPYRIGHT (c) 2006 by eXept Software AG
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    28
              All Rights Reserved
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    29
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    30
 This software is furnished under a license and may be used
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    31
 only in accordance with the terms of that license and with the
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    32
 inclusion of the above copyright notice.   This software may not
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    33
 be provided or otherwise made available to, or used by, any
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    34
 other person.  No title to or ownership of the software is
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    35
 hereby transferred.
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    36
"
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    37
!
23be8cf85415 Bugfix in merge tool.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 14025
diff changeset
    38
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    39
documentation
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    40
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    41
    A generic toolbox for languages that compiles into Smalltalk/X bytecode.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    42
    Although it's a good idea to provide specialized toolbox each of those
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    43
    languages, GenericToolbox is a good basis.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    44
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    45
    A GenericToolbox is also a default toolbox if ProgrammingLanguage does
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    46
    not specify one.
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    47
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    48
    [author:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    49
        Jan Vrany <jan.vrany@fit.cvut.cz>
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    50
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    51
    [instance variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    52
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    53
    [class variables:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    54
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    55
    [see also:]
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    56
        Tools::Toolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    57
        Tools::SmalltalkToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    58
        Tools::JavaToolbox
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    59
        ProgrammingLanguage
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    60
"
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    61
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
    62
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    63
!GenericToolbox methodsFor:'accessing-methods'!
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    64
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    65
globalsReferencedByMethods: methods
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    66
    "Returns a list of globals (classes) referenced by given methods"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    67
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    68
    | detector globals |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    69
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    70
    detector := [ :literal :method :recurse | 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    71
        literal isSymbol ifTrue:[
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    72
            | cls ns |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    73
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    74
            ns := method mclass nameSpace.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    75
            (ns notNil and:[ (cls := environment at: literal) notNil]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    76
                globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    77
            ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    78
                (cls := environment at: literal) notNil ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    79
                    globals add: cls.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    80
                ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    81
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    82
        ] ifFalse:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    83
            (recurse and:[ literal isArray ]) ifTrue:[ 
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    84
                literal do:[:each | detector value: each value: method value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    85
            ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    86
        ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    87
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    88
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    89
    globals := Set new.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    90
    methods do:[:m |  
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    91
        | recurse |
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    92
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    93
        "/ If the method is method spec, the do recurse into
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    94
        "/ literal array when searching for globals, otherwise
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    95
        "/ do not.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    96
        recurse := m resourceType == #canvas.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    97
        m literalsDo:[:each | detector value: each value: m value: recurse ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    98
    ].
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
    99
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   100
    ^ globals.
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   101
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   102
    "Created: / 24-02-2014 / 16:25:49 / Jan Vrany <jan.vrany@fit.cvut.cz>"
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   103
! !
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   104
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   105
!GenericToolbox class methodsFor:'documentation'!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   106
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   107
version
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   108
    ^ '$Header: /cvs/stx/stx/libtool/Tools__GenericToolbox.st,v 1.2 2014-02-25 10:41:28 vrany Exp $'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   109
!
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   110
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   111
version_CVS
14025
9214f9d6bf5a Refactoring of NavigatorModel's environment.
Jan Vrany <jan.vrany@fit.cvut.cz>
parents: 13996
diff changeset
   112
    ^ '$Header: /cvs/stx/stx/libtool/Tools__GenericToolbox.st,v 1.2 2014-02-25 10:41:28 vrany Exp $'
13996
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   113
! !
cab1240b38b5 initial checkin
Jan Vrany <jan.vrany@fit.cvut.cz>
parents:
diff changeset
   114