/
RGVariable.class.st
114 lines (90 loc) · 2.01 KB
/
RGVariable.class.st
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
"
A variable definition
"
Class {
#name : #RGVariable,
#superclass : #RGElement,
#category : #'Ring-Core-Kernel'
}
{ #category : #visiting }
RGVariable >> acceptVisitor: aProgramNodeVisitor node: aNode [
^ aProgramNodeVisitor visitVariableNode: aNode
]
{ #category : #accessing }
RGVariable >> definitionString [
"non special globals are defined by the symbol"
^self needsFullDefinition
ifTrue: [ String streamContents: [ :aStream |
aStream nextPutAll: '#'; nextPutAll: self name]]
ifFalse: [self name printString]
]
{ #category : #testing }
RGVariable >> isArgumentVariable [
^false
]
{ #category : #testing }
RGVariable >> isClassInstanceVariable [
^false
]
{ #category : #testing }
RGVariable >> isClassVariable [
^false
]
{ #category : #testing }
RGVariable >> isInstanceVariable [
"check if the var is an instance variable (a Slot)"
^false
]
{ #category : #testing }
RGVariable >> isLocalVariable [
^false
]
{ #category : #testing }
RGVariable >> isPoolVariable [
^false
]
{ #category : #testing }
RGVariable >> isReservedVariable [
"Ring2 does not model self, super, thisContext"
^false
]
{ #category : #testing }
RGVariable >> isSpecial [
^ self
deprecated: 'Please use #needsFullDefinition instead '
on: '03/11/2020'
in: #Pharo8
transformWith: '`@receiver isSpecial'
-> '`@receiver needsFullDefinition'.
]
{ #category : #testing }
RGVariable >> isTempVariable [
^false
]
{ #category : #testing }
RGVariable >> isUninitialized [
^false
]
{ #category : #testing }
RGVariable >> isVariable [
^true
]
{ #category : #testing }
RGVariable >> isWorkspaceVariable [
^ false
]
{ #category : #testing }
RGVariable >> isWritable [
"Ring2 variables are all writable, e.g. it does not model Arguments"
^true
]
{ #category : #accessing }
RGVariable >> name: aString [
self parent announceDefinitionChangeDuring: [
super name: aString ].
]
{ #category : #testing }
RGVariable >> needsFullDefinition [
"all but InstanceVariableSlot and ClassVariable need to print the full definition"
^true
]