hydra-java-0.17.0: src/main/haskell/Hydra/Java/Environment.hs
-- Note: this is an automatically generated file. Do not edit.
-- | Environment types for Java code generation
module Hydra.Java.Environment where
import qualified Hydra.Core as Core
import qualified Hydra.Graph as Graph
import qualified Hydra.Java.Syntax as Syntax
import qualified Hydra.Packaging as Packaging
import qualified Hydra.Typing as Typing
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, map, pure, sum)
import qualified Data.Scientific as Sci
import qualified Data.Map as M
import qualified Data.Set as S
-- | Classification of a Java symbol for code generation
data JavaSymbolClass =
-- | A constant value
JavaSymbolClassConstant |
-- | A nullary function (no arguments)
JavaSymbolClassNullaryFunction |
-- | A hoisted lambda wrapped in type lambdas. The Int is the number of curried lambda parameters.
JavaSymbolClassHoistedLambda Int |
-- | A unary function (single argument)
JavaSymbolClassUnaryFunction |
-- | A local variable
JavaSymbolClassLocalVariable
deriving (Eq, Ord, Read, Show)
_JavaSymbolClass = Core.Name "hydra.java.environment.JavaSymbolClass"
_JavaSymbolClass_constant = Core.Name "constant"
_JavaSymbolClass_nullaryFunction = Core.Name "nullaryFunction"
_JavaSymbolClass_hoistedLambda = Core.Name "hoistedLambda"
_JavaSymbolClass_unaryFunction = Core.Name "unaryFunction"
_JavaSymbolClass_localVariable = Core.Name "localVariable"
-- | Feature flags for the target Java version
data JavaFeatures =
JavaFeatures {
-- | Whether the diamond operator (<>) is supported (Java 7+)
javaFeaturesSupportsDiamondOperator :: Bool}
deriving (Eq, Ord, Read, Show)
_JavaFeatures = Core.Name "hydra.java.environment.JavaFeatures"
_JavaFeatures_supportsDiamondOperator = Core.Name "supportsDiamondOperator"
-- | Aliases and context for Java code generation
data Aliases =
Aliases {
-- | Current module name context
aliasesCurrentNamespace :: Packaging.ModuleName,
-- | Maps module names to Java package names
aliasesPackages :: (M.Map Packaging.ModuleName Syntax.PackageName),
-- | Variables bound in pattern matching branches
aliasesBranchVars :: (S.Set Core.Name),
-- | Variables that are self-recursive
aliasesRecursiveVars :: (S.Set Core.Name),
-- | Type parameters that are in scope (from method-level type parameters)
aliasesInScopeTypeParams :: (S.Set Core.Name),
-- | Local variables that have polymorphic types (declared with raw types)
aliasesPolymorphicLocals :: (S.Set Core.Name),
-- | All in-scope Java variable names (for avoiding lambda parameter shadowing)
aliasesInScopeJavaVars :: (S.Set Core.Name),
-- | Variable renames for avoiding shadowing (maps Hydra name to Java name)
aliasesVarRenames :: (M.Map Core.Name Core.Name),
-- | Lambda-bound variables (including hoisted captures with qualified names)
aliasesLambdaVars :: (S.Set Core.Name),
-- | Type variable substitution: maps fresh inference variable names to canonical scheme variable names
aliasesTypeVarSubst :: (M.Map Core.Name Core.Name),
-- | Type variables that actually appear in the method's formal parameter types
aliasesTrustedTypeVars :: (S.Set Core.Name),
-- | The enclosing method's codomain (return type), used for casting pair expressions
aliasesMethodCodomain :: (Maybe Core.Type),
-- | Variables that have been thunked (wrapped in Supplier) for lazy evaluation
aliasesThunkedVars :: (S.Set Core.Name)}
deriving (Eq, Ord, Read, Show)
_Aliases = Core.Name "hydra.java.environment.Aliases"
_Aliases_currentNamespace = Core.Name "currentNamespace"
_Aliases_packages = Core.Name "packages"
_Aliases_branchVars = Core.Name "branchVars"
_Aliases_recursiveVars = Core.Name "recursiveVars"
_Aliases_inScopeTypeParams = Core.Name "inScopeTypeParams"
_Aliases_polymorphicLocals = Core.Name "polymorphicLocals"
_Aliases_inScopeJavaVars = Core.Name "inScopeJavaVars"
_Aliases_varRenames = Core.Name "varRenames"
_Aliases_lambdaVars = Core.Name "lambdaVars"
_Aliases_typeVarSubst = Core.Name "typeVarSubst"
_Aliases_trustedTypeVars = Core.Name "trustedTypeVars"
_Aliases_methodCodomain = Core.Name "methodCodomain"
_Aliases_thunkedVars = Core.Name "thunkedVars"
-- | Environment for Java code generation
data JavaEnvironment =
JavaEnvironment {
-- | Aliases and context state
javaEnvironmentAliases :: Aliases,
-- | Graph context for type inference
javaEnvironmentGraph :: Graph.Graph}
_JavaEnvironment = Core.Name "hydra.java.environment.JavaEnvironment"
_JavaEnvironment_aliases = Core.Name "aliases"
_JavaEnvironment_graph = Core.Name "graph"