17 of one of the above copright owners. For exact set of such code, |
17 of one of the above copright owners. For exact set of such code, |
18 see the differences between this version and version stx:libjava |
18 see the differences between this version and version stx:libjava |
19 as of 1.9.2010 |
19 as of 1.9.2010 |
20 " |
20 " |
21 "{ Package: 'stx:libjava' }" |
21 "{ Package: 'stx:libjava' }" |
|
22 |
|
23 "{ NameSpace: Smalltalk }" |
22 |
24 |
23 ProxyMethodJavaFieldAccessor subclass:#ProxyMethodJavaFieldSetter |
25 ProxyMethodJavaFieldAccessor subclass:#ProxyMethodJavaFieldSetter |
24 instanceVariableNames:'' |
26 instanceVariableNames:'' |
25 classVariableNames:'' |
27 classVariableNames:'' |
26 poolDictionaries:'' |
28 poolDictionaries:'' |
54 ! ! |
56 ! ! |
55 |
57 |
56 !ProxyMethodJavaFieldSetter methodsFor:'evaluating'! |
58 !ProxyMethodJavaFieldSetter methodsFor:'evaluating'! |
57 |
59 |
58 evaluateWithReceiver:receiver arguments:arguments |
60 evaluateWithReceiver:receiver arguments:arguments |
59 |
61 field isFinal ifTrue:[ |
|
62 NoModificationError raiseErrorString:'Field ', field name , ' is final'. |
|
63 ]. |
60 self assert: arguments size == 1. |
64 self assert: arguments size == 1. |
61 ^receiver instVarAt: field index put: arguments first. |
65 ^receiver instVarAt: field index put: arguments first. |
62 |
66 |
63 "Modified: / 17-03-2012 / 16:57:06 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
67 "Modified: / 26-07-2016 / 20:50:13 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
64 ! ! |
68 ! ! |
65 |
69 |
66 !ProxyMethodJavaFieldSetter methodsFor:'generating'! |
70 !ProxyMethodJavaFieldSetter methodsFor:'generating'! |
67 |
71 |
68 generate:compiler |
72 generate:compiler |
69 "Generate a ParseNode that evaluate myself. Used for |
73 "Generate a ParseNode that evaluate myself. Used for |
70 byte-compiling the proxies" |
74 byte-compiling the proxies" |
71 |
75 |
72 ^ self shouldImplement |
76 | valueNode | |
|
77 |
|
78 field isFinal ifTrue:[ |
|
79 ^ MessageNode receiver: (VariableNode globalNamed: NoModificationError name) |
|
80 selector: #raiseErrorString: |
|
81 arg: (ConstantNode value: 'Field ', field name , ' is final') |
|
82 ]. |
|
83 valueNode := MessageNode receiver: (VariableNode globalNamed: self fieldType name) |
|
84 selector: #javaWrap: |
|
85 arg: (compiler args at: 1). |
|
86 ^ AssignmentNode |
|
87 variable: ((VariableNode type: #InstanceVariable name: field name) |
|
88 index: field index) |
|
89 expression: valueNode |
|
90 |
|
91 "Modified: / 26-07-2016 / 20:51:55 / Jan Vrany <jan.vrany@fit.cvut.cz>" |
73 ! ! |
92 ! ! |
74 |
93 |
75 !ProxyMethodJavaFieldSetter class methodsFor:'documentation'! |
94 !ProxyMethodJavaFieldSetter class methodsFor:'documentation'! |
76 |
95 |
77 version_CVS |
96 version_CVS |