Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.257.mcz ==================== Summary ==================== Name: Compiler-eem.257 Author: eem Time: 12 March 2013, 1:35:51.456 pm UUID: 02f32284-4e16-4352-a766-7b3dd7a461b1 Ancestors: Compiler-nice.256 Fix Decompiler now that Environments uses Alias. Alias isSpecialReadBinding and isSpecialWriteBinding and so is accessed by sending #value[:] and must be decompiled appropriately. =============== Diff against Compiler-nice.256 =============== Item was changed: ----- Method: DecompilerConstructor>>codeMessage:selector:arguments: (in category 'constructor') ----- codeMessage: receiver selector: selector arguments: arguments + | symbol | - | symbol node | symbol := selector key. + (BraceNode new - (node := BraceNode new matchBraceWithReceiver: receiver selector: symbol + arguments: arguments) ifNotNil: [:node| ^node]. + (self + decodeLiteralVariableValueDereferenceWithReceiver: receiver + selector: symbol + arguments: arguments) ifNotNil: [:node| ^node]. + (self decodeIfNilWithReceiver: receiver - arguments: arguments) ifNotNil: [^ node]. - (node := self decodeIfNilWithReceiver: receiver selector: symbol + arguments: arguments) ifNotNil: [:node| ^node]. + ^MessageNode new - arguments: arguments) ifNotNil: [^ node]. - ^ MessageNode new receiver: receiver selector: selector arguments: arguments precedence: symbol precedence! Item was added: + ----- Method: DecompilerConstructor>>decodeLiteralVariableValueDereferenceWithReceiver:selector:arguments: (in category 'constructor') ----- + decodeLiteralVariableValueDereferenceWithReceiver: receiver selector: selector arguments: arguments + | varNode | + (receiver notNil "cascades" + and: [receiver isLiteralNode + and: [receiver key isVariableBinding]]) ifFalse: + [^nil]. + varNode := self codeAnyLitInd: receiver key. + selector = #value ifTrue: + [^varNode]. + ^selector = #value: ifTrue: + [self codeAssignTo: varNode value: arguments first]! |
On 12 March 2013 20:36, <[hidden email]> wrote:
> Eliot Miranda uploaded a new version of Compiler to project The Trunk: > http://source.squeak.org/trunk/Compiler-eem.257.mcz > > ==================== Summary ==================== > > Name: Compiler-eem.257 > Author: eem > Time: 12 March 2013, 1:35:51.456 pm > UUID: 02f32284-4e16-4352-a766-7b3dd7a461b1 > Ancestors: Compiler-nice.256 > > Fix Decompiler now that Environments uses Alias. > Alias isSpecialReadBinding and isSpecialWriteBinding and so > is accessed by sending #value[:] and must be decompiled > appropriately. > > =============== Diff against Compiler-nice.256 =============== Cool, that just fixed 47 tests! That leaves 67-odd still breaking: http://build.squeak.org/job/SqueakTrunk/223/testReport/ The cluster of PureBehaviorTest failures look to largely be "Cannot store into read-only bindings" failures. A bunch of others too - the trait composition tests, for instance. frank |
On Tue, Mar 12, 2013 at 2:03 PM, Frank Shearar <[hidden email]> wrote:
Huh. It's odd that this wasn't failing before—SystemDictionary doesn't, AFAICT, guard against read-only bindings. Did we have a bunch of bindings that should have been read-only, but weren't?
|
On Tue, 12 Mar 2013, Colin Putney wrote:
> > > > On Tue, Mar 12, 2013 at 2:03 PM, Frank Shearar <[hidden email]> wrote: > > The cluster of PureBehaviorTest failures look to largely be "Cannot > store into read-only bindings" failures. A bunch of others too - the > trait composition tests, for instance. > > > Huh. It's odd that this wasn't failing before—SystemDictionary doesn't, AFAICT, guard against read-only bindings. Did we have a bunch of bindings that should have been read-only, but weren't? is not valid code: Object := 1. But starting with Squeak 3.x there's a bug, which makes new class bindings have Association instead of ReadOnlyVariableBinding as class. We discussed this a few months ago during the first iteration of Environments. Levente > > > > |
Free forum by Nabble | Edit this page |