core/RGMethod.st
author Jan Vrany <jan.vrany@labware.com>
Wed, 23 Dec 2020 14:26:52 +0000
changeset 21 3945989c6e00
parent 12 ae376bb422f5
permissions -rw-r--r--
core: fix (port) AST access in `RGMethod`
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     1
"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     2
COPYRIGHT (c) 2020 LabWare
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     3
"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     4
"{ Package: 'stx:goodies/ring/core' }"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     5
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     6
"{ NameSpace: Smalltalk }"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     7
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     8
RGElement subclass:#RGMethod
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
     9
	instanceVariableNames:'sourceCode package author time tags'
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    10
	classVariableNames:''
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    11
	poolDictionaries:''
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    12
	category:'Ring-Core-Kernel'
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    13
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    14
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    15
RGMethod comment:'RG2Method is a concrete representation of methods. It can be used to build browser for methods that are not in the image. It is polymorphic with CompiledMethod. 

* We can ask a RG2Method for its selector using the selector message.
Example:
	(Point>>#dist:) asRing2Definition selector
		-> #dist

We can also ask the ring object representation of its class or the Smalltalk class actually implementing the corresponding compiledMethod. 

* To access the ring class definition name, use parentName
	aRG2MethodDefinition parentName
	
Example:
	(Point>>#dist:) asRing2Definition parentName
		->  #Point
		
* If you have a complete model where classes and methods are ring definition, to access the ring class definition , use parent
	aRG2MethodDefinition parent
	
Example:
	aRG2MethodDefinition(Point>>#dist:) parent
		->  aRG2ClassDefinition(Point)
		
* If you want to access the smalltalk class that contains the compiledMethod that is represented by a ringMethodDefinition, use realParent
	aRG2MethodDefinition realParent
	
Example:
	(Point>>#dist:) asRing2Definition realParent
		->  Point
		

Now a RingEntityDefinition offers two APIs: one that is generic and works for all the source code entities and this is the one we just 
presented: parent, parentName and realParent. Having such interface is important to build generic tools that could manipulate 
any entities in a polymorphic way (yes no isKindOf: everywhere).

In addition, a ring method definition offers a specific interface that should only be used when you know that you are solely manipulate
specific entity such as class element: method definition, class comment, and variables. 

Here is the equivalence table

	realParent 				realClass
	parent					ringClass
	parentName			className


* The message class returns the class of the object :).

Example:
	(Point>>#dist:) asRing2Definition class
		->  RingMethodDefinition
		
* The message className returns the name of the ring class defining the reingMethodDefinition.

Example:
	(Point>>#dist:) asRing2Definition className
		->  #Point		
		
* If you have a complete model where classes and methods are ring definition, to access the ring class definition , use parent
	aRG2MethodDefinition ringClass
	
Example:
	aRG2MethodDefinition(Point>>#dist:) ringClass
		->  aRG2ClassDefinition(Point)
		
		
* If you want to access the smalltalk class that contains the compiledMethod that is represented by a ringMethodDefinition, use realClass
	aRG2MethodDefinition realClass
	
Example:
	(Point>>#dist:) asRing2Definition realClass
		->  Point

'
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    16
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    17
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    18
!RGMethod class methodsFor:'documentation'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    19
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    20
copyright
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    21
"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    22
COPYRIGHT (c) 2020 LabWare
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    23
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    24
"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    25
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    26
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    27
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    28
!RGMethod methodsFor:'accessing'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    29
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    30
argumentNames		
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    31
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    32
    ^ self ast argumentNames
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    33
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    34
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    35
ast
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    36
    "Answer my AST with semantic analysis. See #parseTree."
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    37
    
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    38
    ^ self propertyNamed: #ast ifAbsentPut: [ self parseTree ]
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    39
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    40
    "Modified: / 23-12-2020 / 08:30:34 / Jan Vrany <jan.vrany@labware.com>"
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    41
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    42
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    43
compiledMethod
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    44
    ^ self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    45
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    46
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    47
fullName
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    48
    "Keeps a unique description for the receiver. As annotation to avoid converting each time is invoked"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    49
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    50
    ^ (self parent name, '>>#', self selector) asSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    51
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    52
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    53
hasSourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    54
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    55
    ^ self backend forMethod hasSourceCodeFor: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    56
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    57
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    58
isExtension
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    59
    "The receiver is an extension when is defined in a different package to the one of its parent"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    60
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    61
    ^ self parent package ~= self package
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    62
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    63
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    64
numArgs
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    65
    ^ self selector asString numArgs
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    66
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    67
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    68
parseTree
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    69
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    70
    ^(RBParser 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    71
        parseMethod: self sourceCode 
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    72
        onError: [ :msg :pos | ^ nil ])
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    73
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
    74
    "Modified: / 22-12-2020 / 22:34:32 / Jan Vrany <jan.vrany@labware.com>"
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    75
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    76
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    77
selector
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    78
    "Retrieves the name of the method"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    79
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    80
    ^ self name asSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    81
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    82
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    83
sourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    84
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    85
    ^ self backend forMethod sourceCodeFor: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    86
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    87
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    88
sourceCode: anObject
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    89
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    90
    "ATTENTION: There is no check here if the selector is changed!!"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    91
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    92
    self backend forMethod setSourceCodeFor: self to: anObject asString
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    93
    "TODO: announcements"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    94
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    95
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    96
sourceCodeForNoSelector
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    97
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    98
    ^ 'unresolvedMessage', String cr, String tab, '"source code for the method model not set"'
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
    99
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   100
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   101
sourceCodeForNoSource
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   102
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   103
    ^ (Parser methodSpecificationForSelector: self selector), String cr, '    "source code for the method model not set"'
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   104
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   105
    "Modified: / 22-12-2020 / 22:11:23 / Jan Vrany <jan.vrany@labware.com>"
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   106
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   107
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   108
!RGMethod methodsFor:'accessing - backend'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   109
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   110
author
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   111
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   112
    ^ self backend forBehavior authorFor: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   113
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   114
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   115
author: aString
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   116
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   117
    self backend forBehavior setAuthorFor: self to: aString
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   118
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   119
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   120
cleanTags
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   121
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   122
    self changeProtocolDuring: [ 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   123
        self cleanTagsWithoutAnnouncemnt ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   124
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   125
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   126
cleanTagsWithoutAnnouncemnt 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   127
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   128
    self backend forMethod cleanMethodTagsFor: self.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   129
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   130
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   131
package
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   132
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   133
    ^ self backend forMethod methodPackageFor: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   134
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   135
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   136
package: anRGPackage
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   137
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   138
    self backend forMethod setMethodPackageFor: self to: anRGPackage.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   139
    self environment addPackage: anRGPackage.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   140
    (self parent package = anRGPackage)
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   141
        ifFalse: [ self package addExtensionMethod: self ].
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   142
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   143
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   144
protocol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   145
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   146
    | methodTags |
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   147
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   148
    methodTags := self tags.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   149
    ^	methodTags
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   150
        ifEmpty: [  self class asYetUnclassifiedProtocolName]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   151
        ifNotEmpty: [ methodTags sorted first ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   152
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   153
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   154
protocol: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   155
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   156
    self cleanTagsWithoutAnnouncemnt.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   157
    self tagWith: aSymbol.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   158
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   159
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   160
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   161
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   162
tagWith: aSymbol 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   163
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   164
    self changeProtocolDuring: [ 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   165
        self backend forMethod tagMethod: self with: aSymbol.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   166
        self parent addMethodTag: aSymbol.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   167
    ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   168
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   169
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   170
tagsDo: aBlock
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   171
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   172
    self backend forMethod tagsForMethod: self do: aBlock
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   173
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   174
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   175
time
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   176
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   177
    ^ self backend forBehavior timeFor: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   178
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   179
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   180
time: aDateAndTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   181
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   182
    self backend forBehavior setTimeFor: self to: aDateAndTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   183
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   184
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   185
untagFrom: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   186
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   187
    self backend forMethod untagMethod: self from: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   188
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   189
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   190
!RGMethod methodsFor:'accessing - model'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   191
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   192
tags
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   193
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   194
    | allTags |
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   195
    allTags := IdentitySet new.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   196
    self tagsDo: [ :each | allTags add: each].
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   197
    ^ allTags asArray
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   198
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   199
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   200
!RGMethod methodsFor:'backward compatibility'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   201
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   202
category
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   203
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   204
    ^ self protocol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   205
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   206
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   207
!RGMethod methodsFor:'default model values'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   208
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   209
defaultAuthor
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   210
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   211
    ^ ''
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   212
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   213
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   214
defaultSourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   215
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   216
    ^ self sourceCodeForNoSelector
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   217
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   218
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   219
defaultTags
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   220
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   221
    ^ Set new
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   222
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   223
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   224
defaultTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   225
10
1fa4cd506c87 core: use `Timestamp` instead of (Pharo) `DateAndTime`
Jan Vrany <jan.vrany@labware.com>
parents: 9
diff changeset
   226
    ^ Timestamp epoch
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   227
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   228
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   229
!RGMethod methodsFor:'error handling'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   230
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   231
changeProtocolDuring: aBlock
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   232
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   233
    | oldProtocol |
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   234
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   235
    oldProtocol := self protocol.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   236
    aBlock value.
12
ae376bb422f5 core: consolidated environment announcements
Jan Vrany <jan.vrany@labware.com>
parents: 10
diff changeset
   237
    self announcer methodRecategorized: self from: oldProtocol
ae376bb422f5 core: consolidated environment announcements
Jan Vrany <jan.vrany@labware.com>
parents: 10
diff changeset
   238
ae376bb422f5 core: consolidated environment announcements
Jan Vrany <jan.vrany@labware.com>
parents: 10
diff changeset
   239
    "Modified: / 22-12-2020 / 10:57:48 / Jan Vrany <jan.vrany@labware.com>"
9
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   240
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   241
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   242
!RGMethod methodsFor:'initialization'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   243
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   244
initialize
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   245
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   246
    super initialize.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   247
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   248
    sourceCode := self unresolvedValue: self defaultSourceCode.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   249
    tags := self unresolvedValue: self defaultTags.	"tags must be set before package"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   250
    package := self unresolvedValue: self parent package.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   251
    author := self unresolvedValue: self defaultAuthor.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   252
    time := self unresolvedValue: self defaultTime.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   253
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   254
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   255
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   256
initializeUnresolved
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   257
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   258
    super initializeUnresolved.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   259
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   260
    sourceCode := self unresolvedValue: self defaultSourceCode.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   261
    tags := self unresolvedValue: self defaultTags.	
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   262
    package := self unresolvedValue: self parent package.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   263
    author := self unresolvedValue: self defaultAuthor.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   264
    time := self unresolvedValue: self defaultTime.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   265
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   266
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   267
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   268
!RGMethod methodsFor:'managing container'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   269
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   270
addoptToParentStub
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   271
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   272
    super addoptToParentStub.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   273
    self environment backend createUnresolvedClassGroupFor: self parent.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   274
    self parent pvtAddLocalMethod: self.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   275
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   276
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   277
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   278
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   279
defaultParentStub
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   280
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   281
    ^ self defaultClassStub
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   282
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   283
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   284
!RGMethod methodsFor:'printing'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   285
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   286
printOn: aStream 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   287
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   288
    self parent name ifNotNil: [
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   289
        aStream nextPutAll: self parent name;
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   290
                  nextPutAll: '>>' ].
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   291
    aStream print: self selector
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   292
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   293
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   294
!RGMethod methodsFor:'private'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   295
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   296
astFromSource
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   297
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   298
    ^ RBParser parseMethod: self sourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   299
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   300
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   301
pvtSafeSourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   302
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   303
    | aStringOrUnresolved |
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   304
    aStringOrUnresolved := self pvtSourceCode. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   305
    ^ aStringOrUnresolved isRingResolved
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   306
        ifFalse: [ 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   307
            self pvtName isRingResolved 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   308
                ifTrue: [ self sourceCodeForNoSource ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   309
                ifFalse: [ self sourceCodeForNoSelector ] ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   310
        ifTrue: [ aStringOrUnresolved value ]
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   311
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   312
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   313
pvtSourceCode
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   314
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   315
    ^ sourceCode 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   316
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   317
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   318
pvtSourceCode: anObject
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   319
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   320
    sourceCode := anObject
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   321
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   322
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   323
pvtTagsDo: aBlock
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   324
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   325
    ^ tags value do: aBlock
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   326
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   327
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   328
!RGMethod methodsFor:'private - backend interface'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   329
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   330
pvtAuthor
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   331
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   332
    ^ author value
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   333
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   334
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   335
pvtAuthor: aString
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   336
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   337
    ^ author := aString
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   338
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   339
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   340
pvtCleanTags
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   341
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   342
    tags := self defaultTags.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   343
        
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   344
    "TODO:Announce if not empty"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   345
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   346
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   347
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   348
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   349
pvtPackage
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   350
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   351
    ^ package value
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   352
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   353
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   354
pvtPackage: anRGPackageDefinition
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   355
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   356
    self environment verifyOwnership: anRGPackageDefinition.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   357
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   358
    ^ package := anRGPackageDefinition
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   359
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   360
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   361
pvtResolvableProperties
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   362
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   363
    ^ super pvtResolvableProperties, { 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   364
        #sourceCode -> sourceCode. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   365
        #package -> package. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   366
        #author -> author. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   367
        #time -> time. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   368
        #tags -> tags. 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   369
    }
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   370
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   371
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   372
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   373
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   374
pvtTagWith: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   375
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   376
    tags isRingResolved ifFalse: [ 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   377
        self pvtCleanTags  ].
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   378
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   379
    tags add: aSymbol.	
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   380
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   381
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   382
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   383
pvtTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   384
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   385
    ^ time value
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   386
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   387
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   388
pvtTime: aDateAndTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   389
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   390
    ^ time := aDateAndTime
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   391
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   392
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   393
pvtUntagFrom: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   394
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   395
    (tags value includes: aSymbol)
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   396
        ifTrue: [ tags remove: aSymbol ].
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   397
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   398
    "TODO:Announce"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   399
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   400
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   401
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   402
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   403
!RGMethod methodsFor:'queries - class'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   404
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   405
methodClass
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   406
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   407
    ^ self parent
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   408
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   409
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   410
!RGMethod methodsFor:'queries - tags'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   411
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   412
isTaggedWith: aSymbol
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   413
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   414
    ^self tags includes: aSymbol 
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   415
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   416
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   417
!RGMethod methodsFor:'removing'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   418
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   419
removeFromSystem
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   420
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   421
    ^ self parent removeLocalMethod: self
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   422
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   423
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   424
!RGMethod methodsFor:'resolving'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   425
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   426
makeResolved
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   427
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   428
    super makeResolved.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   429
    
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   430
    sourceCode := self sourceCode markAsRingResolved.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   431
    package := self package markAsRingResolved.	
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   432
    author := self author markAsRingResolved.	
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   433
    time := self time markAsRingResolved.	
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   434
    tags := self tags markAsRingResolved.
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   435
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   436
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   437
!RGMethod methodsFor:'testing'!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   438
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   439
isFromTrait
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   440
    ^ self parent isTrait
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   441
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   442
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   443
isLiteralMethod
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   444
    "Ring methods does not know how to detect if they are literal"
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   445
    ^ false
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   446
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   447
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   448
isMetaSide
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   449
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   450
    ^ self parent isMeta
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   451
!
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   452
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   453
isMethod
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   454
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   455
    ^true
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   456
! !
d64df1abdf2a Initial commit
Jan Vrany <jan.vrany@labware.com>
parents:
diff changeset
   457
21
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   458
!RGMethod class methodsFor:'documentation'!
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   459
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   460
version_HG
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   461
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   462
    ^ '$Changeset: <not expanded> $'
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   463
! !
3945989c6e00 core: fix (port) AST access in `RGMethod`
Jan Vrany <jan.vrany@labware.com>
parents: 12
diff changeset
   464