hydra.java.environment module

Environment types for Java code generation.

class hydra.java.environment.Aliases(current_namespace: Annotated[ModuleName, 'Current module name context'], packages: Annotated[Mapping[ModuleName, PackageName], 'Maps module names to Java package names'], branch_vars: Annotated[Set[Name], 'Variables bound in pattern matching branches'], recursive_vars: Annotated[Set[Name], 'Variables that are self-recursive'], in_scope_type_params: Annotated[Set[Name], 'Type parameters that are in scope (from method-level type parameters)'], polymorphic_locals: Annotated[Set[Name], 'Local variables that have polymorphic types (declared with raw types)'], in_scope_java_vars: Annotated[Set[Name], 'All in-scope Java variable names (for avoiding lambda parameter shadowing)'], var_renames: Annotated[Mapping[Name, Name], 'Variable renames for avoiding shadowing (maps Hydra name to Java name)'], lambda_vars: Annotated[Set[Name], 'Lambda-bound variables (including hoisted captures with qualified names)'], type_var_subst: Annotated[Mapping[Name, Name], 'Type variable substitution: maps fresh inference variable names to canonical scheme variable names'], trusted_type_vars: Annotated[Set[Name], "Type variables that actually appear in the method's formal parameter types"], method_codomain: Annotated[object, "The enclosing method's codomain (return type), used for casting pair expressions"], thunked_vars: Annotated[Set[Name], 'Variables that have been thunked (wrapped in Supplier) for lazy evaluation'])

Bases: object

Aliases and context for Java code generation.

BRANCH_VARS = Name(value='branchVars')
class Builder(_current_namespace: 'hydra.packaging.ModuleName' = None, _packages: 'Mapping[hydra.packaging.ModuleName, hydra.java.syntax.PackageName]' = None, _branch_vars: 'Set[hydra.core.Name]' = None, _recursive_vars: 'Set[hydra.core.Name]' = None, _in_scope_type_params: 'Set[hydra.core.Name]' = None, _polymorphic_locals: 'Set[hydra.core.Name]' = None, _in_scope_java_vars: 'Set[hydra.core.Name]' = None, _var_renames: 'Mapping[hydra.core.Name, hydra.core.Name]' = None, _lambda_vars: 'Set[hydra.core.Name]' = None, _type_var_subst: 'Mapping[hydra.core.Name, hydra.core.Name]' = None, _trusted_type_vars: 'Set[hydra.core.Name]' = None, _method_codomain: 'Optional[hydra.core.Type]' = None, _thunked_vars: 'Set[hydra.core.Name]' = None)

Bases: object

branch_vars(branch_vars)
build()
current_namespace(current_namespace)
in_scope_java_vars(in_scope_java_vars)
in_scope_type_params(in_scope_type_params)
lambda_vars(lambda_vars)
method_codomain(method_codomain)
packages(packages)
polymorphic_locals(polymorphic_locals)
recursive_vars(recursive_vars)
thunked_vars(thunked_vars)
trusted_type_vars(trusted_type_vars)
type_var_subst(type_var_subst)
var_renames(var_renames)
CURRENT_NAMESPACE = Name(value='currentNamespace')
IN_SCOPE_JAVA_VARS = Name(value='inScopeJavaVars')
IN_SCOPE_TYPE_PARAMS = Name(value='inScopeTypeParams')
LAMBDA_VARS = Name(value='lambdaVars')
METHOD_CODOMAIN = Name(value='methodCodomain')
PACKAGES = Name(value='packages')
POLYMORPHIC_LOCALS = Name(value='polymorphicLocals')
RECURSIVE_VARS = Name(value='recursiveVars')
THUNKED_VARS = Name(value='thunkedVars')
TRUSTED_TYPE_VARS = Name(value='trustedTypeVars')
TYPE_ = Name(value='hydra.java.environment.Aliases')
TYPE_VAR_SUBST = Name(value='typeVarSubst')
VAR_RENAMES = Name(value='varRenames')
branch_vars: Annotated[Set[Name], 'Variables bound in pattern matching branches']
static builder()
current_namespace: Annotated[ModuleName, 'Current module name context']
in_scope_java_vars: Annotated[Set[Name], 'All in-scope Java variable names (for avoiding lambda parameter shadowing)']
in_scope_type_params: Annotated[Set[Name], 'Type parameters that are in scope (from method-level type parameters)']
lambda_vars: Annotated[Set[Name], 'Lambda-bound variables (including hoisted captures with qualified names)']
method_codomain: Annotated[object, "The enclosing method's codomain (return type), used for casting pair expressions"]
packages: Annotated[Mapping[ModuleName, PackageName], 'Maps module names to Java package names']
polymorphic_locals: Annotated[Set[Name], 'Local variables that have polymorphic types (declared with raw types)']
recursive_vars: Annotated[Set[Name], 'Variables that are self-recursive']
thunked_vars: Annotated[Set[Name], 'Variables that have been thunked (wrapped in Supplier) for lazy evaluation']
trusted_type_vars: Annotated[Set[Name], "Type variables that actually appear in the method's formal parameter types"]
type_var_subst: Annotated[Mapping[Name, Name], 'Type variable substitution: maps fresh inference variable names to canonical scheme variable names']
var_renames: Annotated[Mapping[Name, Name], 'Variable renames for avoiding shadowing (maps Hydra name to Java name)']
with_branch_vars(branch_vars)
with_current_namespace(current_namespace)
with_in_scope_java_vars(in_scope_java_vars)
with_in_scope_type_params(in_scope_type_params)
with_lambda_vars(lambda_vars)
with_method_codomain(method_codomain)
with_packages(packages)
with_polymorphic_locals(polymorphic_locals)
with_recursive_vars(recursive_vars)
with_thunked_vars(thunked_vars)
with_trusted_type_vars(trusted_type_vars)
with_type_var_subst(type_var_subst)
with_var_renames(var_renames)
class hydra.java.environment.JavaEnvironment(aliases: Annotated[Aliases, 'Aliases and context state'], graph: Annotated[Graph, 'Graph context for type inference'])

Bases: object

Environment for Java code generation.

ALIASES = Name(value='aliases')
class Builder(_aliases: 'Aliases' = None, _graph: 'hydra.graph.Graph' = None)

Bases: object

aliases(aliases)
build()
graph(graph)
GRAPH = Name(value='graph')
TYPE_ = Name(value='hydra.java.environment.JavaEnvironment')
aliases: Annotated[Aliases, 'Aliases and context state']
static builder()
graph: Annotated[Graph, 'Graph context for type inference']
with_aliases(aliases)
with_graph(graph)
class hydra.java.environment.JavaFeatures(supports_diamond_operator: Annotated[bool, 'Whether the diamond operator (<>) is supported (Java 7+)'])

Bases: object

Feature flags for the target Java version.

class Builder(_supports_diamond_operator: 'bool' = None)

Bases: object

build()
supports_diamond_operator(supports_diamond_operator)
SUPPORTS_DIAMOND_OPERATOR = Name(value='supportsDiamondOperator')
TYPE_ = Name(value='hydra.java.environment.JavaFeatures')
static builder()
supports_diamond_operator: Annotated[bool, 'Whether the diamond operator (<>) is supported (Java 7+)']
with_supports_diamond_operator(supports_diamond_operator)
class hydra.java.environment.JavaSymbolClass

Bases: object

JavaSymbolClassConstant | JavaSymbolClassNullaryFunction | JavaSymbolClassHoistedLambda | JavaSymbolClassUnaryFunction | JavaSymbolClassLocalVariable

CONSTANT = Name(value='constant')
HOISTED_LAMBDA = Name(value='hoistedLambda')
LOCAL_VARIABLE = Name(value='localVariable')
NULLARY_FUNCTION = Name(value='nullaryFunction')
TYPE_ = Name(value='hydra.java.environment.JavaSymbolClass')
UNARY_FUNCTION = Name(value='unaryFunction')
class hydra.java.environment.JavaSymbolClassConstant

Bases: object

A constant value

class hydra.java.environment.JavaSymbolClassHoistedLambda(value: T)

Bases: Node[int]

A hoisted lambda wrapped in type lambdas. The Int is the number of curried lambda parameters.

class hydra.java.environment.JavaSymbolClassLocalVariable

Bases: object

A local variable

class hydra.java.environment.JavaSymbolClassNullaryFunction

Bases: object

A nullary function (no arguments)

class hydra.java.environment.JavaSymbolClassUnaryFunction

Bases: object

A unary function (single argument)