class Scope(FooNode): name = Field(type=T.SimpleId) content = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env())
class Def(Stmt): id = Field() body = Field() env_spec = EnvSpec(add_to_env(Self.id.symbol, Self), add_env()) faulty_prop = Property(Self._env_mappings_0)
class Var(FooNode): name = Field() expr = Field() env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.symbol, val=Self)), )
class Block(DefNode): params = Field(type=T.Params) name_field = Field(type=T.Name) vars = Field(type=T.BlockVar.list) name = Property(Self.name_field.symbol) @langkit_property(public=True) def rebind(from_block=T.Block.entity, to_block=T.Block.entity): rbdng = Var(Entity.info.rebindings.append_rebinding( from_block.params.children_env, to_block.children_env )) e_info = Var(New(T.entity_info, md=Entity.info.md, rebindings=rbdng, from_rebound=False)) return New(Block.entity, node=Self, info=e_info) env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name, val=Self)), add_env() )
class Var(DefNode): name = Field() value = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)), )
class Decl(FooNode): name = Field() refs = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env())
class Scope(DefNode): name = Field() defs = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env(), )
class Block(FooNode): name = Field() decls = Field() usings = Field() refs = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.sym, val=Self)), add_env())
class Def(Stmt): id = Field() body = Field() name = Property(Self.id) env_spec = EnvSpec(add_env=True, add_to_env=add_to_env(Self.id.symbol, Self)) faulty_prop = Property(Self._env_value_1)
class Example(FooNode): token_node = True env_spec = EnvSpec( add_env(), add_to_env( new_env_assoc(key="foo", val=Self, dest_env=Self.children_env.env_orphan)))
class Block(FooNode): name = Field(type=Name) content = Field(type=Ref.list) env_spec = EnvSpec( add_env(), add_to_env(T.env_assoc.new(key=Self.name.symbol, val=Self), dest_env=Self.node_env), )
class Scope(Def): error = Field() name = Field() defs = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env(), do(If(Self.error.as_bool, PropertyError(T.FooNode), No(T.FooNode))), )
class ForeignDecl(FooNode): id = Field(type=T.Id) env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.id.simple_name.symbol, val=Self), dest_env=Self.id.match( lambda simple=T.SimpleId: simple.node_env, lambda scoped=T.ScopedId: scoped.resolve(Self.node_env). children_env, )))
class AssignStmt(Stmt): l_value = Field(type=T.Expr.list) r_values = Field(type=T.PythonNode.list) env_spec = EnvSpec( add_to_env(Self.l_value.filtermap( lambda e: new_env_assoc(key=e.cast_or_raise(T.Id).sym, value=Self), lambda e: e.is_a(T.Id), )) )
class Def(FooNode): name = Field(type=T.Name) ref = Field(type=T.Name) env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.sym, val=Self), metadata=New(Metadata, node=Self.ref.then(lambda r: r.resolve.node, default_val=No( T.FooNode)))))
class Ref(FooNode): name = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self), resolver=FooNode.resolve_ref)) @langkit_property(public=True) def resolve(): return Self.node_env.get(Self.name.symbol).at(0)
class VarDecl(FooNode): name = Field() value = Field() env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self))) @langkit_property(public=True) def eval(): return Self.value.eval
class FunDecl(FooNode): name = Field(type=T.Identifier) args = Field(type=T.ArgSpec.list) env_spec = EnvSpec( add_to_env( T.env_assoc.new( key=Self.name.symbol, value=Self, dest_env=current_env(), metadata=No(T.Metadata), )))
class ConsDecl(FooNode): name = Field(type=T.Identifier) cons_expr = Field(type=T.Expr) env_spec = EnvSpec( add_to_env( T.env_assoc.new( key=Self.name.symbol, value=Self, dest_env=current_env(), metadata=No(T.Metadata), )))
class SelfDecl(FooNode): id = Field(type=T.Id) md_node = Field(type=T.Id) env_spec = EnvSpec( add_to_env( New(T.env_assoc, key=Self.id.simple_name.symbol, val=Self.id.resolve(Self.node_env)), metadata=New( T.Metadata, node=Self.md_node.then(lambda n: n.resolve(Self.node_env)))))
class Decl(FooNode): has_plus = Field() name = Field() items = Field() env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.symbol, val=Self), metadata=New(Metadata, b=Self.has_plus.as_bool))) @langkit_property(public=True, return_type=T.Ref.entity.array) def entity_items(): return Self.as_entity.items.map(lambda i: i)
class SingleParam(PythonNode): is_varargs = Field(type=T.VarArgsFlag) is_kwargs = Field(type=T.KwArgsFlag) name = Field(type=T.PythonNode) default_value = Field(type=T.Expr) env_spec = EnvSpec( add_to_env( Self.name.match( lambda i=T.Id: new_env_assoc(key=i.sym, val=Self).singleton, lambda l=T.Id.list: l.map(lambda i: new_env_assoc(key=i.sym, val=Self)), lambda _: No(T.env_assoc.array))))
class Scope(FooNode): name = Field(type=T.Id) content = Field(type=T.FooNode.list) env_spec = EnvSpec( add_env(), handle_children(), add_to_env( Self.content.children.map(lambda r: new_env_assoc( key="Scope", val=Self, dest_env=r.match(lambda s=T.Scope: s.name.children_env, lambda _: r.children_env)))), )
class Def(FooNode): name = Field() imports = Field() vars = Field() expr = Field() env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env(), reference(Self.imports.map(lambda i: i.cast(T.FooNode)), # If PropertyDef rewriting omits the following references, # env lookup will never reach DerivedRef.referenced_env, so # resolution will sometimes fail to reach definition. T.MiddleRef.referenced_env) )
class Scope(FooNode): name = Field() deps = Field() defs = Field() @langkit_property() def initial_env(): return Self.name.match( lambda p=T.Prefix: p.prefix.referenced_unit.root.children_env, lambda _: Self.children_env, ) env_spec = EnvSpec( set_initial_env(Self.initial_env), add_to_env(New(T.env_assoc, key=Self.name.suffix_symbol, val=Self)), add_env(), )
class Decl(FooNode): has_plus = Field() name = Field() items = Field() env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.symbol, val=Self)), add_env(), ) @langkit_property(public=True, return_type=T.BoolType) def test_env(other=T.FooNode.entity): return Self.children_env.env_orphan == other.children_env.env_orphan @langkit_property(public=True, return_type=T.BoolType) def test_struct(other=T.FooNode.entity): return Self.env_struct == other.env_struct @langkit_property(public=True, return_type=T.BoolType) def test_array(other=T.FooNode.entity): return Self.env_array == other.env_array
class Scope(FooNode): name = Field() deps = Field() defs = Field() annotations = Annotations(ple_unit_root=True) @langkit_property() def initial_env(): return Self.name.match( lambda p=T.Prefix: p.prefix.referenced_unit.root.cast_or_raise( T.Scope.list).filter(lambda scope: scope.name.symbols == p. prefix.symbols).at_or_raise(0). children_env, lambda _: Self.children_env, ) env_spec = EnvSpec( set_initial_env(Self.initial_env), add_to_env(New(T.env_assoc, key=Self.name.suffix_symbol, val=Self)), add_env(), )
class Block(Def): params = Field(type=T.Params) tok = Field(type=T.TokenType) vars = Field(type=T.BlockVar.list) name = Property(Self.tok.symbol) @langkit_property(public=True) def rebind(from_block=T.Block.entity, to_block=T.Block.entity): rbdng = Var( Entity.info.rebindings.append_rebinding( from_block.params.children_env, to_block.children_env)) e_info = Var(New(T.entity_info, md=Entity.info.md, rebindings=rbdng)) return New(Block.entity, el=Self, info=e_info) @langkit_property(public=True) def parent_rebindings(): e_info = Var( New(T.entity_info, md=Entity.info.md, rebindings=Entity.info.rebindings.rebindings_parent)) return New(Block.entity, el=Self, info=e_info) @langkit_property(public=True) def new(): return ( Entity.info.rebindings.rebindings_new_env.env_node.as_bare_entity) @langkit_property(public=True) def old(): return ( Entity.info.rebindings.rebindings_new_env.env_node.as_bare_entity) env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name, val=Self)), add_env())
class Decl(FooNode): name = Field() items = Field() env_spec = EnvSpec( add_to_env(mappings=New(T.env_assoc, key=Self.name.symbol, val=Self)))
class Decl(FooNode): name = Field(type=T.Identifier) expr_tree = Field(type=T.Expr) env_spec = EnvSpec( add_to_env(New(T.env_assoc, key=Self.name.symbol, val=Self)))