[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-smalltalk] undeclared bindings; ArrayConstructorNodes

From: Stephen Compall
Subject: [Help-smalltalk] undeclared bindings; ArrayConstructorNodes
Date: Fri, 29 Dec 2006 23:06:23 -0600

I've been trying to load I18N with Compiler loaded in 2.3.1, using
compiler-cascade.diff from earlier.  (This patch works fine, by the

In STSymbolTable, bindingOf:for: (used for vars with paths) handles
undeclared variables during fileIn as the builtin compiler does, but
lookupPoolsFor: (used for vars without paths) does not.  Attached is
gst-lookupPoolsFor-undeclared.diff on compiler/ to handle

Then, I ran into what seemed to be a premature send of
STSymbolTable>>#finish (as #() cannot grow).  Test:

st> UndefinedObject compile: 'scTest: aV and: bV | what | what := {aV. bV}.
        self strftime: what format: aV readStream on: bV'!
Object: Array new: 0 "<-0x4c5c9288>" error: Invalid index 1: index out of range 
SystemExceptions.IndexOutOfRange class>>#signalOn:withIndex:
[] in STInST.STLiteralsTable>>#addLiteral:

RBArrayConstructorNode>>#acceptVisitor: still sends #acceptArrayNode:,
and RBProgramNodeVisitor's implementation of that descends into the
SequenceNode, presumably invoking the aforementioned #finish.

I don't know which way the renaming is going, so I just added
acceptArrayNode: to STCompiler.  Then I found that
acceptArrayConstructorNode: was storing in 1,2,3 instead of 0,1,2 for
this little test: 'scTest ^{1. 2. 3}', so I shifted that back.  Both are
in gst-arrayCtor.diff on compiler/

Now I can load I18N with Compiler!

Stephen Compall

Attachment: gst-lookupPoolsFor-undeclared.diff
Description: Text Data

Attachment: gst-arrayCtor.diff
Description: Text Data

Attachment: signature.asc
Description: This is a digitally signed message part

reply via email to

[Prev in Thread] Current Thread [Next in Thread]