hydra-java-0.18.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.Graph as Graph
import qualified Hydra.Core.Model as Model
import qualified Hydra.Core.Packaging as Packaging
import qualified Hydra.Core.Typing as Typing
import qualified Hydra.Java.Syntax as Syntax
import Prelude hiding (Enum, Ordering, decodeFloat, encodeFloat, fail, lines, map, pure, sum, unlines)
import qualified Data.Scientific as Sci
import Data.Void
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 = Model.Name "hydra.java.environment.JavaSymbolClass"
_JavaSymbolClass_constant = Model.Name "constant"
_JavaSymbolClass_nullaryFunction = Model.Name "nullaryFunction"
_JavaSymbolClass_hoistedLambda = Model.Name "hoistedLambda"
_JavaSymbolClass_unaryFunction = Model.Name "unaryFunction"
_JavaSymbolClass_localVariable = Model.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 = Model.Name "hydra.java.environment.JavaFeatures"
_JavaFeatures_supportsDiamondOperator = Model.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 Model.Name),
-- | Variables that are self-recursive
aliasesRecursiveVars :: (S.Set Model.Name),
-- | Type parameters that are in scope (from method-level type parameters)
aliasesInScopeTypeParams :: (S.Set Model.Name),
-- | Local variables that have polymorphic types (declared with raw types)
aliasesPolymorphicLocals :: (S.Set Model.Name),
-- | All in-scope Java variable names (for avoiding lambda parameter shadowing)
aliasesInScopeJavaVars :: (S.Set Model.Name),
-- | Variable renames for avoiding shadowing (maps Hydra name to Java name)
aliasesVarRenames :: (M.Map Model.Name Model.Name),
-- | Lambda-bound variables (including hoisted captures with qualified names)
aliasesLambdaVars :: (S.Set Model.Name),
-- | Type variable substitution: maps fresh inference variable names to canonical scheme variable names
aliasesTypeVarSubst :: (M.Map Model.Name Model.Name),
-- | Type variables that actually appear in the method's formal parameter types
aliasesTrustedTypeVars :: (S.Set Model.Name),
-- | The enclosing method's codomain (return type), used for casting pair expressions
aliasesMethodCodomain :: (Maybe Model.Type),
-- | Variables that have been thunked (wrapped in Supplier) for lazy evaluation
aliasesThunkedVars :: (S.Set Model.Name)}
deriving (Eq, Ord, Read, Show)
_Aliases = Model.Name "hydra.java.environment.Aliases"
_Aliases_currentNamespace = Model.Name "currentNamespace"
_Aliases_packages = Model.Name "packages"
_Aliases_branchVars = Model.Name "branchVars"
_Aliases_recursiveVars = Model.Name "recursiveVars"
_Aliases_inScopeTypeParams = Model.Name "inScopeTypeParams"
_Aliases_polymorphicLocals = Model.Name "polymorphicLocals"
_Aliases_inScopeJavaVars = Model.Name "inScopeJavaVars"
_Aliases_varRenames = Model.Name "varRenames"
_Aliases_lambdaVars = Model.Name "lambdaVars"
_Aliases_typeVarSubst = Model.Name "typeVarSubst"
_Aliases_trustedTypeVars = Model.Name "trustedTypeVars"
_Aliases_methodCodomain = Model.Name "methodCodomain"
_Aliases_thunkedVars = Model.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 = Model.Name "hydra.java.environment.JavaEnvironment"
_JavaEnvironment_aliases = Model.Name "aliases"
_JavaEnvironment_graph = Model.Name "graph"