2009-03-30 06:31:50 -04:00
|
|
|
! Copyright (C) 2009 Slava Pestov.
|
|
|
|
! See http://factorcode.org/license.txt for BSD license.
|
|
|
|
USING: assocs kernel accessors ;
|
|
|
|
IN: smalltalk.compiler.lexenv
|
|
|
|
|
2009-03-30 21:45:01 -04:00
|
|
|
! local-readers: assoc string => word
|
|
|
|
! local-writers: assoc string => word
|
|
|
|
! self: word or f for top-level forms
|
|
|
|
! class: class word or f for top-level forms
|
|
|
|
! method: generic word or f for top-level forms
|
|
|
|
TUPLE: lexenv local-readers local-writers self class method ;
|
2009-03-30 06:31:50 -04:00
|
|
|
|
2009-03-30 21:45:01 -04:00
|
|
|
: <lexenv> ( local-readers local-writers -- lexenv )
|
|
|
|
f f f lexenv boa ; inline
|
2009-03-30 06:31:50 -04:00
|
|
|
|
|
|
|
CONSTANT: empty-lexenv T{ lexenv }
|
|
|
|
|
|
|
|
: lexenv-union ( lexenv1 lexenv2 -- lexenv )
|
|
|
|
[ [ local-readers>> ] bi@ assoc-union ]
|
|
|
|
[ [ local-writers>> ] bi@ assoc-union ] 2bi <lexenv> ;
|