-
_j<c       s     d  Z  7 9 t o d p t  ; d k l Z l Z < d k l Z l Z > d k	 Z	 @ e
 e	 _ C d   Z L d e i f d     YZ d S(   s   Prebuilds naming environments for each AST node by walking the tree
   and caching them. Subsequent passes over the tree can then lookup the
   cache rather than redo the calculationi    (   s   idlasts
   idlvisitor(   s   tyutils   nameNc    sk   C D y E t  i |  SWnL F t j
 o= G t d t |   d d t t  i  d d   n Xd  S(   Ns   Attempt to lookup node "s   "s   in environment (s   )s   failed(   s   envs   _environmentss   nodes   KeyErrors   RuntimeErrors   reprs   str(   s   node(    (    s   ./cxx/env.pys   lookupC s   s   WalkTreec      s   L N d   Z  Q d   Z T d d  Z _ d   Z e d   Z n d   Z t d   Z  d	   Z  d
   Z  d   Z	  d   Z
  d   Z  d   Z  d   Z  d   Z  d   Z  d   Z  d   Z  d   Z  d   Z RS(   Nc    s   N O |  i i |  |  _ d  S(   N(   s   selfs   _envs
   enterScopes   name(   s   selfs   name(    (    s   ./cxx/env.pys   _enterScopeN s   c    s   Q R |  i i   |  _ d  S(   N(   s   selfs   _envs
   leaveScope(   s   self(    (    s   ./cxx/env.pys   _leaveScopeQ s   i    c    s   T U y& V |  i i   } W | i |  WnI X t j
 o: Y | o( Z t d | d t	 |  i    n n X\ | |  _ ] d  Sd  S(   Ns!   Not permitted to redefine name ("s   ") in environment (
   s   selfs   _envs   copys   news   adds   names   KeyErrors   allow_already_existss   RuntimeErrors   str(   s   selfs   names   allow_already_existss   new(    (    s   ./cxx/env.pys   _addT s   -c    sC   _ ` t  i i |  o a t d   n b |  i t  i | <d  S(   Ns1   Unexpected inconsistency: Duplicate key in cache.(   s   envs   _environmentss   has_keys   nodes   RuntimeErrors   selfs   _env(   s   selfs   node(    (    s   ./cxx/env.pys   _cache_ s   c    s?   e f t  i t j o g n i h  t  _ k t i   |  _ d  S(   N(   s   envs   _environmentss   Nones   names   Environments   selfs   _env(   s   self(    (    s   ./cxx/env.pys   __init__e s   c    sD   n o |  i |  q x' | i   Dq ] } r | i |   q# Wd  S(   N(   s   selfs   _caches   nodes   declarationss   ns   accept(   s   selfs   nodes   n(    (    s   ./cxx/env.pys   visitASTn s    	c    s   t u |  i |  w | i   } y |  i | d d { |  i |  | x' | i   D| ] } } | i	 |   qX W~ |  i
   d  S(   Ns   allow_already_existsi   (   s   selfs   _caches   nodes
   identifiers   names   _adds   _enterScopes   definitionss   ns   accepts   _leaveScope(   s   selfs   nodes   names   n(    (    s   ./cxx/env.pys   visitModulet s    	c    s     |  i |   | i   }  |  i | d d  |  i |   x' | i   D ] }  | i	 |   qX W |  i
   d  S(   Ns   allow_already_existsi   (   s   selfs   _caches   nodes
   identifiers   names   _adds   _enterScopes   declarationss   ns   accepts   _leaveScope(   s   selfs   nodes   names   n(    (    s   ./cxx/env.pys   visitInterface s    	c    s<     |  i |   | i   }  |  i | d d d  S(   Ns   allow_already_existsi   (   s   selfs   _caches   nodes
   identifiers   names   _add(   s   selfs   nodes   name(    (    s   ./cxx/env.pys   visitForward s   c    s?     |  i |   t i | i    }  |  i |  d  S(   N(   s   selfs   _caches   nodes   tyutils   names
   scopedNames   _add(   s   selfs   nodes   name(    (    s   ./cxx/env.pys
   visitConst s   c    s?     |  i |   t i | i    }  |  i |  d  S(   N(   s   selfs   _caches   nodes   tyutils   names
   scopedNames   _add(   s   selfs   nodes   name(    (    s   ./cxx/env.pys   visitDeclarator s   c    st     |  i |   | i   o   | i   i   i |   n  x' | i   D ] }  | i |   qS Wd  S(   N(	   s   selfs   _caches   nodes
   constrTypes	   aliasTypes   decls   accepts   declaratorss   d(   s   selfs   nodes   d(    (    s   ./cxx/env.pys   visitTypedef s     	c    st     |  i |   | i   o   | i   i   i |   n  x' | i   D ] }  | i |   qS Wd  S(   N(	   s   selfs   _caches   nodes
   constrTypes
   memberTypes   decls   accepts   declaratorss   d(   s   selfs   nodes   d(    (    s   ./cxx/env.pys   visitMember s     	c    s     |  i |   | i   }  |  i |   |  i |   x' | i   D ] }  | i	 |   qR W |  i
   d  S(   N(   s   selfs   _caches   nodes
   identifiers   names   _adds   _enterScopes   memberss   ns   accepts   _leaveScope(   s   selfs   nodes   names   n(    (    s   ./cxx/env.pys   visitStruct s    	c    s     |  i |   | i   }  |  i |   |  i |   x' | i   D ] }  | i	 |   qR W |  i
   d  S(   N(   s   selfs   _caches   nodes
   identifiers   names   _adds   _enterScopes   memberss   ns   accepts   _leaveScope(   s   selfs   nodes   names   n(    (    s   ./cxx/env.pys   visitException s    	c    s     |  i |   | i   }  |  i |   |  i |   | i   o   | i   i	   i
 |   n  xG | i   D ]6 }  | i   o   | i   i	   i
 |   n q W |  i   d  S(   N(   s   selfs   _caches   nodes
   identifiers   names   _adds   _enterScopes
   constrTypes
   switchTypes   decls   accepts   casess   ns   caseTypes   _leaveScope(   s   selfs   nodes   names   n(    (    s   ./cxx/env.pys
   visitUnion s     	$c    s
     d  S(   N(    (   s   selfs   node(    (    s   ./cxx/env.pys   visitCaseLabel s   c    s
     d  S(   N(    (   s   selfs   node(    (    s   ./cxx/env.pys   visitUnionCase s   c    s
     d  S(   N(    (   s   selfs   node(    (    s   ./cxx/env.pys   visitEnumerator s   c    s6     |  i |   | i   }  |  i |  d  S(   N(   s   selfs   _caches   nodes
   identifiers   names   _add(   s   selfs   nodes   name(    (    s   ./cxx/env.pys	   visitEnum s   (   s   _enterScopes   _leaveScopes   _adds   _caches   __init__s   visitASTs   visitModules   visitInterfaces   visitForwards
   visitConsts   visitDeclarators   visitTypedefs   visitMembers   visitStructs   visitExceptions
   visitUnions   visitCaseLabels   visitUnionCases   visitEnumerators	   visitEnum(    (    (    s   ./cxx/env.pys   WalkTreeL s(   			(   s   __doc__s	   __debug__s   AssertionErrors   omniidls   idlasts
   idlvisitors   omniidl_be.cxxs   tyutils   names   envs   Nones   _environmentss   lookups
   AstVisitors   WalkTree(   s   WalkTrees   lookups   names   envs
   idlvisitors   idlasts   tyutil(    (    s   ./cxx/env.pys   ?7 s   	