mirror of
https://github.com/AdaCore/langkit.git
synced 2026-02-12 12:28:12 -08:00
RA22-015: First pass of env_specs on lkt syntax
This commit is contained in:
@@ -3,6 +3,8 @@ from __future__ import absolute_import, division, print_function
|
||||
from langkit.dsl import (
|
||||
ASTNode, AbstractField, Field, T, abstract
|
||||
)
|
||||
from langkit.envs import EnvSpec, add_env, add_to_env_kv
|
||||
from langkit.expressions import Entity, Self
|
||||
from langkit.parsers import Grammar, List, NoBacktrack as cut, Opt, Or
|
||||
|
||||
from language.lexer import lkt_lexer as Lex
|
||||
@@ -41,6 +43,10 @@ class Decl(LKNode):
|
||||
"""
|
||||
name = AbstractField(type=T.DefId)
|
||||
|
||||
env_spec = EnvSpec(
|
||||
add_to_env_kv(Entity.name.symbol, Self),
|
||||
)
|
||||
|
||||
|
||||
@abstract
|
||||
class Expr(LKNode):
|
||||
@@ -65,6 +71,11 @@ class GrammarDecl(BaseGrammarDecl):
|
||||
name = Field()
|
||||
rules = Field()
|
||||
|
||||
env_spec = EnvSpec(
|
||||
add_to_env_kv(Entity.name.symbol, Self),
|
||||
add_env()
|
||||
)
|
||||
|
||||
|
||||
class GrammarRuleDecl(Decl):
|
||||
"""
|
||||
@@ -251,6 +262,11 @@ class ClassDecl(Decl):
|
||||
base_class = Field()
|
||||
decls = Field()
|
||||
|
||||
env_spec = EnvSpec(
|
||||
add_to_env_kv(Entity.name.symbol, Self),
|
||||
add_env()
|
||||
)
|
||||
|
||||
|
||||
class DocComment(LKNode):
|
||||
"""
|
||||
@@ -275,6 +291,11 @@ class FunDecl(Decl):
|
||||
return_type = Field()
|
||||
body = Field()
|
||||
|
||||
env_spec = EnvSpec(
|
||||
add_to_env_kv(Entity.name.symbol, Self),
|
||||
add_env()
|
||||
)
|
||||
|
||||
|
||||
@abstract
|
||||
class BaseValDecl(Decl):
|
||||
@@ -462,6 +483,8 @@ class BlockExpr(Expr):
|
||||
val_defs = Field()
|
||||
expr = Field()
|
||||
|
||||
env_spec = EnvSpec(add_env())
|
||||
|
||||
|
||||
class MatchExpr(Expr):
|
||||
"""
|
||||
@@ -478,6 +501,10 @@ class MatchBranch(LKNode):
|
||||
decl = Field()
|
||||
expr = Field()
|
||||
|
||||
env_spec = EnvSpec(
|
||||
add_env()
|
||||
)
|
||||
|
||||
|
||||
class MatchValDecl(BaseValDecl):
|
||||
"""
|
||||
|
||||
Reference in New Issue
Block a user