packages feed

language-oberon 0.3.3.2 → 0.3.4

raw patch · 5 files changed

+221/−211 lines, 5 filesdep ~deep-transformationsPVP: major bump suggested

API removals or changes: PVP suggests a major version bump

Dependency ranges changed: deep-transformations

API changes (from Hackage documentation)

- Language.Oberon.ConstantFolder: [$sel:currentModule:InhCF] :: InhCF l -> Ident
- Language.Oberon.ConstantFolder: [$sel:designatorValue:SynCFDesignator] :: SynCFDesignator l -> Maybe (Placed (Value l l Placed Placed))
- Language.Oberon.ConstantFolder: [$sel:env:InhCF] :: InhCF l -> Environment l
- Language.Oberon.ConstantFolder: [$sel:folded:SynCFDesignator] :: SynCFDesignator l -> Mapped Placed (Designator l l Placed Placed)
- Language.Oberon.ConstantFolder: [$sel:folded:SynCFExp] :: SynCFExp λ l -> Mapped Placed (Expression λ l Placed Placed)
- Language.Oberon.ConstantFolder: [$sel:folded:SynCFMod] :: SynCFMod l a -> Mapped Placed a
- Language.Oberon.ConstantFolder: [$sel:folded:SynCF] :: SynCF a -> Mapped Placed a
- Language.Oberon.ConstantFolder: [$sel:foldedValue:SynCFExp] :: SynCFExp λ l -> Maybe (Placed (Value l l Placed Placed))
- Language.Oberon.ConstantFolder: [$sel:getModules:Modules] :: Modules l f' f -> Map Ident (f (Module l l f' f'))
- Language.Oberon.ConstantFolder: [$sel:moduleEnv:SynCFMod] :: SynCFMod l a -> Environment l
- Language.Oberon.ConstantFolder: [$sel:modulesFolded:SynCFRoot] :: SynCFRoot a -> a
- Language.Oberon.ConstantFolder: [$sel:rootEnv:InhCFRoot] :: InhCFRoot l -> Environment l
- Language.Oberon.ConstantFolder: instance (GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed) => Transformation.AG.Generics.SynthesizedField "designatorValue" (GHC.Maybe.Maybe (Language.Oberon.ConstantFolder.Placed v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Designator l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Block l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Declaration l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l)) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Block l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Oberon l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l)) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Module l l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Oberon λ, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Sem) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Expression λ l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.ConstantFolder.Modules l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.ConstantFolder.Modules l) Language.Oberon.ConstantFolder.Sem Language.Oberon.ConstantFolder.Placed
- Language.Oberon.ConstantFolder: instance Transformation.AG.Generics.Revelation (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)
- Language.Oberon.ConstantFolder: instance Transformation.Transformation (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)
- Language.Oberon.ConstantFolder: type Sem = Semantics (Auto ConstantFold)
- Language.Oberon.TypeChecker: [$sel:errorModule:Error] :: Error m l -> m
- Language.Oberon.TypeChecker: [$sel:errorPosition:Error] :: Error m l -> LexicalPosition
- Language.Oberon.TypeChecker: [$sel:errorType:Error] :: Error m l -> ErrorType l
- Language.Oberon.TypeChecker: instance (GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FPSection l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSec l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FormalParameters l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Eq (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.CaseLabels l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTCDecl l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Block l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Element l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Value l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Expression l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.Attribution (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.WithAlternative l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTCDecl l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Block l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCHead l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.ProcedureHeading l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FieldList l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCFields l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Type l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Language.Oberon.Abstract.Oberon l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Designator l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.ConditionalBranch l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.SynthesizedField "fieldEnv" (Data.Map.Internal.Map Language.Oberon.AST.Ident (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FieldList l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, GHC.Show.Show k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Block l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCHead l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.SynthesizedField "pointerTargets" (Transformation.AG.Generics.Folded (Data.Map.Internal.Map Language.Oberon.AST.Ident Language.Oberon.AST.Ident)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Oberon l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Block l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Module l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FPSection l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConditionalBranch l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Case l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTCExp l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.WithAlternative l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Statement l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Case l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConditionalBranch l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.WithAlternative l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Statement l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance (Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.SynthesizedField "errors" (Transformation.AG.Generics.Folded [Language.Oberon.TypeChecker.Error () l]) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Element l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.TypeChecker.Modules l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.TypeChecker.Modules l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.At (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.TypeChecker.Modules l Language.Oberon.TypeChecker.Sem Language.Oberon.TypeChecker.Sem)
- Language.Oberon.TypeChecker: instance Language.Oberon.Abstract.Wirthy l => Transformation.AG.Generics.SynthesizedField "inferredType" (Language.Oberon.TypeChecker.Type l) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Value l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance Transformation.AG.Generics.Revelation (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)
- Language.Oberon.TypeChecker: instance Transformation.AG.Generics.SynthesizedField "inferredType" (Language.Oberon.TypeChecker.Type l) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Element l l) Language.Oberon.TypeChecker.Sem Language.Oberon.Resolver.Placed
- Language.Oberon.TypeChecker: instance Transformation.Transformation (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)
+ Language.Oberon.ConstantFolder: [currentModule] :: InhCF l -> Ident
+ Language.Oberon.ConstantFolder: [designatorValue] :: SynCFDesignator l -> Maybe (Placed (Value l l Placed Placed))
+ Language.Oberon.ConstantFolder: [env] :: InhCF l -> Environment l
+ Language.Oberon.ConstantFolder: [foldedValue] :: SynCFExp λ l -> Maybe (Placed (Value l l Placed Placed))
+ Language.Oberon.ConstantFolder: [folded] :: SynCFDesignator l -> Mapped Placed (Designator l l Placed Placed)
+ Language.Oberon.ConstantFolder: [getModules] :: Modules l (f' :: Type -> Type) (f :: Type -> Type) -> Map Ident (f (Module l l f' f'))
+ Language.Oberon.ConstantFolder: [moduleEnv] :: SynCFMod l a -> Environment l
+ Language.Oberon.ConstantFolder: [modulesFolded] :: SynCFRoot a -> a
+ Language.Oberon.ConstantFolder: [rootEnv] :: InhCFRoot l -> Environment l
+ Language.Oberon.ConstantFolder: instance (GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed) => Transformation.AG.Generics.SynthesizedField "designatorValue" (GHC.Maybe.Maybe (Language.Oberon.ConstantFolder.Placed v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Designator l l)
+ Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.InhCF l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Block l l)
+ Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Declaration l l)
+ Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, v GHC.Types.~ Language.Oberon.Abstract.Value l l Language.Oberon.ConstantFolder.Placed Language.Oberon.ConstantFolder.Placed, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Declaration l l)) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (GHC.Maybe.Maybe v)) (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Block l l)
+ Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Oberon l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFMod' l (Language.Oberon.Abstract.Block l l)) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Module l l)
+ Language.Oberon.ConstantFolder: instance (Language.Oberon.Abstract.Oberon λ, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Language.Oberon.Abstract.Value l GHC.Types.~ Language.Oberon.AST.Value l, Prettyprinter.Internal.Pretty (Language.Oberon.AST.Value l l Data.Functor.Identity.Identity Data.Functor.Identity.Identity), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFExp l l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Element l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCF' (Language.Oberon.Abstract.Element l l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.ConstantFolder.SynCFDesignator l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.AST.Expression λ l)
+ Language.Oberon.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.ConstantFolder.Modules l)
+ Language.Oberon.ConstantFolder: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.ConstantFolder.ConstantFold) (Language.Oberon.ConstantFolder.Modules l)
+ Language.Oberon.ConstantFolder: instance Rank2.Foldable (Language.Oberon.ConstantFolder.Modules l f')
+ Language.Oberon.ConstantFolder: instance Rank2.Traversable (Language.Oberon.ConstantFolder.Modules l f')
+ Language.Oberon.ConstantFolder: instance Transformation.AG.Attribution Language.Oberon.ConstantFolder.ConstantFold
+ Language.Oberon.Resolver: instance (Rank2.Functor (g Language.Oberon.Grammar.NodeWrap), Transformation.Deep.Functor (Transformation.Rank2.Map Language.Oberon.Grammar.NodeWrap Language.Oberon.Resolver.NodeWrap) g) => Transformation.Full.Functor (Transformation.Rank2.Map Language.Oberon.Grammar.NodeWrap Language.Oberon.Resolver.NodeWrap) g
+ Language.Oberon.Resolver: instance (Rank2.Functor (g Language.Oberon.Resolver.Placed), Transformation.Deep.Functor (Transformation.Rank2.Map Language.Oberon.Resolver.Placed Data.Functor.Identity.Identity) g) => Transformation.Full.Functor (Transformation.Rank2.Map Language.Oberon.Resolver.Placed Data.Functor.Identity.Identity) g
+ Language.Oberon.TypeChecker: [errorModule] :: Error m l -> m
+ Language.Oberon.TypeChecker: [errorPosition] :: Error m l -> LexicalPosition
+ Language.Oberon.TypeChecker: [errorType] :: Error m l -> ErrorType l
+ Language.Oberon.TypeChecker: instance (GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FPSection l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSec l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FormalParameters l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Eq (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.CaseLabels l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTCDecl l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Block l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Element l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Value l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Expression l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.At (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.WithAlternative l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTCDecl l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCHead l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.ProcedureHeading l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FieldList l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCFields l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Type l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Language.Oberon.Abstract.Oberon l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), GHC.Show.Show (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Designator l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.ConditionalBranch l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.SynthesizedField "fieldEnv" (Data.Map.Internal.Map Language.Oberon.AST.Ident (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FieldList l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, GHC.Show.Show k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Block l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Declaration l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.FormalParameters l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCSig l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ProcedureHeading l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCHead l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConstExpression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.SynthesizedField "pointerTargets" (Transformation.AG.Generics.Folded (Data.Map.Internal.Map Language.Oberon.AST.Ident Language.Oberon.AST.Ident)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Declaration l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Oberon l, Language.Oberon.Abstract.Nameable l, k GHC.Types.~ Language.Oberon.Abstract.QualIdent l, GHC.Classes.Ord k, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Block l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCMod l) => Transformation.AG.Generics.SynthesizedField "moduleEnv" (Data.Map.Internal.Map k (Language.Oberon.TypeChecker.Type l)) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Module l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Type l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCType l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.FPSection l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConditionalBranch l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Case l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTCExp l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.WithAlternative l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Inherited (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.TypeChecker.InhTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Statement l l)
+ Language.Oberon.TypeChecker: instance (Language.Oberon.Abstract.Wirthy l, Language.Oberon.Abstract.Nameable l, GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l), Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.StatementSequence l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Designator l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCDes l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Case l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.ConditionalBranch l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l, Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.WithAlternative l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTC l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Statement l l)
+ Language.Oberon.TypeChecker: instance (Transformation.AG.Atts (Transformation.AG.Synthesized (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck)) (Language.Oberon.Abstract.Expression l l) GHC.Types.~ Language.Oberon.TypeChecker.SynTCExp l) => Transformation.AG.Generics.SynthesizedField "errors" (Transformation.AG.Generics.Folded [Language.Oberon.TypeChecker.Error () l]) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Element l l)
+ Language.Oberon.TypeChecker: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Bequether (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.TypeChecker.Modules l)
+ Language.Oberon.TypeChecker: instance GHC.Classes.Ord (Language.Oberon.Abstract.QualIdent l) => Transformation.AG.Generics.Synthesizer (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.TypeChecker.Modules l)
+ Language.Oberon.TypeChecker: instance Language.Oberon.Abstract.Wirthy l => Transformation.AG.Generics.SynthesizedField "inferredType" (Language.Oberon.TypeChecker.Type l) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Value l l)
+ Language.Oberon.TypeChecker: instance Rank2.Traversable (Language.Oberon.TypeChecker.Modules l f)
+ Language.Oberon.TypeChecker: instance Transformation.AG.Attribution Language.Oberon.TypeChecker.TypeCheck
+ Language.Oberon.TypeChecker: instance Transformation.AG.Generics.SynthesizedField "inferredType" (Language.Oberon.TypeChecker.Type l) (Transformation.AG.Generics.Auto Language.Oberon.TypeChecker.TypeCheck) (Language.Oberon.AST.Element l l)
- Language.Oberon: type NodeWrap = Compose ((,) (Int, Int)) (Compose Ambiguous ((,) ParsedLexemes))
+ Language.Oberon: type NodeWrap = Compose (,) (Int, Int) Compose Ambiguous (,) ParsedLexemes
- Language.Oberon.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Add :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: And :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ArrayType :: ZipList (f (ConstExpression l l f' f')) -> f (Type l l f' f') -> Type λ l f' f
+ Language.Oberon.AST: ArrayType :: ZipList (f (ConstExpression l l f' f')) -> f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Oberon.AST: Assignment :: f (Designator l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Block :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l f' f
+ Language.Oberon.AST: Block :: ZipList (f (Declaration l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Case :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> f (StatementSequence l l f' f') -> Case λ l f' f
+ Language.Oberon.AST: Case :: f (CaseLabels l l f' f') -> ZipList (f (CaseLabels l l f' f')) -> f (StatementSequence l l f' f') -> Case λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Oberon.AST: CaseStatement :: f (Expression l l f' f') -> ZipList (f (Case l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ConditionalBranch :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> ConditionalBranch λ l f' f
+ Language.Oberon.AST: ConditionalBranch :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ConstantDeclaration :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration λ l f' f
+ Language.Oberon.AST: ConstantDeclaration :: IdentDef l -> f (ConstExpression l l f' f') -> Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Dereference :: f (Designator l l f' f') -> Designator λ l f' f
+ Language.Oberon.AST: Dereference :: f (Designator l l f' f') -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Divide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Element :: f (Expression l l f' f') -> Element λ l f' f
+ Language.Oberon.AST: Element :: f (Expression l l f' f') -> Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: EmptyStatement :: Statement λ l f' f
+ Language.Oberon.AST: EmptyStatement :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Exit :: Statement λ l f' f
+ Language.Oberon.AST: Exit :: Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: FPSection :: Bool -> [Ident] -> f (Type l l f' f') -> FPSection λ l f' f
+ Language.Oberon.AST: FPSection :: Bool -> [Ident] -> f (Type l l f' f') -> FPSection λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Field :: f (Designator l l f' f') -> Ident -> Designator λ l f' f
+ Language.Oberon.AST: Field :: f (Designator l l f' f') -> Ident -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: FieldList :: IdentList l -> f (Type l l f' f') -> FieldList λ l f' f
+ Language.Oberon.AST: FieldList :: IdentList l -> f (Type l l f' f') -> FieldList λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Oberon.AST: For :: Ident -> f (Expression l l f' f') -> f (Expression l l f' f') -> Maybe (f (Expression l l f' f')) -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: FormalParameters :: ZipList (f (FPSection l l f' f')) -> Maybe (ReturnType l) -> FormalParameters λ l f' f
+ Language.Oberon.AST: FormalParameters :: ZipList (f (FPSection l l f' f')) -> Maybe (ReturnType l) -> FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ForwardDeclaration :: IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> Declaration λ l f' f
+ Language.Oberon.AST: ForwardDeclaration :: IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l f' f
+ Language.Oberon.AST: FunctionCall :: f (Designator l l f' f') -> ZipList (f (Expression l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Oberon.AST: If :: f (ConditionalBranch l l f' f') -> ZipList (f (ConditionalBranch l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Index :: f (Designator l l f' f') -> f (Expression l l f' f') -> ZipList (f (Expression l l f' f')) -> Designator λ l f' f
+ Language.Oberon.AST: Index :: f (Designator l l f' f') -> f (Expression l l f' f') -> ZipList (f (Expression l l f' f')) -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: IntegerDivide :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: IsA :: f (Expression l l f' f') -> QualIdent l -> Expression λ l f' f
+ Language.Oberon.AST: IsA :: f (Expression l l f' f') -> QualIdent l -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: LabelRange :: f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> CaseLabels λ l f' f
+ Language.Oberon.AST: LabelRange :: f (ConstExpression l l f' f') -> f (ConstExpression l l f' f') -> CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Literal :: f (Value l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Literal :: f (Value l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Oberon.AST: Loop :: f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Module :: Ident -> [Import l] -> f (Block l l f' f') -> Module λ l f' f
+ Language.Oberon.AST: Module :: Ident -> [Import l] -> f (Block l l f' f') -> Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Modulo :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Multiply :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Negative :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Negative :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Not :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Not :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Or :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: PointerType :: f (Type l l f' f') -> Type λ l f' f
+ Language.Oberon.AST: PointerType :: f (Type l l f' f') -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Positive :: f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Positive :: f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l f' f
+ Language.Oberon.AST: ProcedureCall :: f (Designator l l f' f') -> Maybe (ZipList (f (Expression l l f' f'))) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ProcedureDeclaration :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration λ l f' f
+ Language.Oberon.AST: ProcedureDeclaration :: f (ProcedureHeading l l f' f') -> f (Block l l f' f') -> Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ProcedureHeading :: Bool -> IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l f' f
+ Language.Oberon.AST: ProcedureHeading :: Bool -> IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l f' f
+ Language.Oberon.AST: ProcedureType :: Maybe (f (FormalParameters l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Range :: f (Expression l l f' f') -> f (Expression l l f' f') -> Element λ l f' f
+ Language.Oberon.AST: Range :: f (Expression l l f' f') -> f (Expression l l f' f') -> Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Read :: f (Designator l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Read :: f (Designator l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: RecordType :: Maybe (BaseType l) -> ZipList (f (FieldList l l f' f')) -> Type λ l f' f
+ Language.Oberon.AST: RecordType :: Maybe (BaseType l) -> ZipList (f (FieldList l l f' f')) -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Relation :: RelOp -> f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l f' f
+ Language.Oberon.AST: Repeat :: f (StatementSequence l l f' f') -> f (Expression l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l f' f
+ Language.Oberon.AST: Return :: Maybe (f (Expression l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Set :: ZipList (f (Element l l f' f')) -> Expression λ l f' f
+ Language.Oberon.AST: Set :: ZipList (f (Element l l f' f')) -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: SingleLabel :: f (ConstExpression l l f' f') -> CaseLabels λ l f' f
+ Language.Oberon.AST: SingleLabel :: f (ConstExpression l l f' f') -> CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: StatementSequence :: ZipList (f (Statement l l f' f')) -> StatementSequence λ l f' f
+ Language.Oberon.AST: StatementSequence :: ZipList (f (Statement l l f' f')) -> StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l f' f
+ Language.Oberon.AST: Subtract :: f (Expression l l f' f') -> f (Expression l l f' f') -> Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: TypeBoundHeading :: Bool -> Ident -> Ident -> Bool -> IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l f' f
+ Language.Oberon.AST: TypeBoundHeading :: Bool -> Ident -> Ident -> Bool -> IdentDef l -> Maybe (f (FormalParameters l l f' f')) -> ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: TypeDeclaration :: IdentDef l -> f (Type l l f' f') -> Declaration λ l f' f
+ Language.Oberon.AST: TypeDeclaration :: IdentDef l -> f (Type l l f' f') -> Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: TypeGuard :: f (Designator l l f' f') -> QualIdent l -> Designator λ l f' f
+ Language.Oberon.AST: TypeGuard :: f (Designator l l f' f') -> QualIdent l -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: TypeReference :: QualIdent l -> Type λ l f' f
+ Language.Oberon.AST: TypeReference :: QualIdent l -> Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: Variable :: QualIdent l -> Designator λ l f' f
+ Language.Oberon.AST: Variable :: QualIdent l -> Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: VariableDeclaration :: IdentList l -> f (Type l l f' f') -> Declaration λ l f' f
+ Language.Oberon.AST: VariableDeclaration :: IdentList l -> f (Type l l f' f') -> Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l f' f
+ Language.Oberon.AST: While :: f (Expression l l f' f') -> f (StatementSequence l l f' f') -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: With :: f (WithAlternative l l f' f') -> ZipList (f (WithAlternative l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l f' f
+ Language.Oberon.AST: With :: f (WithAlternative l l f' f') -> ZipList (f (WithAlternative l l f' f')) -> Maybe (f (StatementSequence l l f' f')) -> Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: WithAlternative :: QualIdent l -> QualIdent l -> f (StatementSequence l l f' f') -> WithAlternative λ l f' f
+ Language.Oberon.AST: WithAlternative :: QualIdent l -> QualIdent l -> f (StatementSequence l l f' f') -> WithAlternative λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Block λ l f' f
+ Language.Oberon.AST: data Block λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Case λ l f' f
+ Language.Oberon.AST: data Case λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data CaseLabels λ l f' f
+ Language.Oberon.AST: data CaseLabels λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data ConditionalBranch λ l f' f
+ Language.Oberon.AST: data ConditionalBranch λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Declaration λ l f' f
+ Language.Oberon.AST: data Declaration λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Designator λ l f' f
+ Language.Oberon.AST: data Designator λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Element λ l f' f
+ Language.Oberon.AST: data Element λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Expression λ l f' f
+ Language.Oberon.AST: data Expression λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data FPSection λ l f' f
+ Language.Oberon.AST: data FPSection λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data FieldList λ l f' f
+ Language.Oberon.AST: data FieldList λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data FormalParameters λ l f' f
+ Language.Oberon.AST: data FormalParameters λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Module λ l f' f
+ Language.Oberon.AST: data Module λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data ProcedureHeading λ l f' f
+ Language.Oberon.AST: data ProcedureHeading λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Statement λ l f' f
+ Language.Oberon.AST: data Statement λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data Type λ l f' f
+ Language.Oberon.AST: data Type λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: data WithAlternative λ l f' f
+ Language.Oberon.AST: data WithAlternative λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.AST: isNamedVar :: Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
+ Language.Oberon.AST: isNamedVar :: forall l (f :: Type -> Type). Nameable l => Ident -> Maybe (Designator Language l f f) -> Bool
- Language.Oberon.AST: newtype StatementSequence λ l f' f
+ Language.Oberon.AST: newtype StatementSequence λ l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.Abstract: Maybe3 :: Maybe (f a b c) -> Maybe3 f a b c
+ Language.Oberon.Abstract: Maybe3 :: Maybe (f a b c) -> Maybe3 (f :: k -> k1 -> k2 -> Type) (a :: k) (b :: k1) (c :: k2)
- Language.Oberon.Abstract: add :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: add :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: and :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: and :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: arrayType :: Oberon l => [f (ConstExpression l' l' f' f')] -> f (Type l' l' f' f') -> Type l l' f' f
+ Language.Oberon.Abstract: arrayType :: forall f l' (f' :: Type -> Type). Oberon l => [f (ConstExpression l' l' f' f')] -> f (Type l' l' f' f') -> Type l l' f' f
- Language.Oberon.Abstract: assignment :: Wirthy l => f (Designator l' l' f' f') -> f (Expression l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: assignment :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> f (Expression l' l' f' f') -> Statement l l' f' f
- Language.Oberon.Abstract: block :: Wirthy l => [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Block l l' f' f
+ Language.Oberon.Abstract: block :: forall f l' (f' :: Type -> Type). Wirthy l => [f (Declaration l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Block l l' f' f
- Language.Oberon.Abstract: builtin :: Wirthy l => Text -> Value l l' f' f
+ Language.Oberon.Abstract: builtin :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Text -> Value l l' f' f
- Language.Oberon.Abstract: caseAlternative :: Wirthy l => NonEmpty (f (CaseLabels l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Case l l' f' f
+ Language.Oberon.Abstract: caseAlternative :: forall f l' (f' :: Type -> Type). Wirthy l => NonEmpty (f (CaseLabels l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Case l l' f' f
- Language.Oberon.Abstract: caseStatement :: Wirthy l => f (Expression l' l' f' f') -> [f (Case l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
+ Language.Oberon.Abstract: caseStatement :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> [f (Case l' l' f' f')] -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
- Language.Oberon.Abstract: charCode :: Wirthy l => Int -> Value l l' f' f
+ Language.Oberon.Abstract: charCode :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Int -> Value l l' f' f
- Language.Oberon.Abstract: coDeclaration :: (CoWirthy l, TargetClass l l') => Declaration l l'' f' f -> Declaration l' l'' f' f
+ Language.Oberon.Abstract: coDeclaration :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Declaration l l'' f' f -> Declaration l' l'' f' f
- Language.Oberon.Abstract: coDesignator :: (CoWirthy l, TargetClass l l') => Designator l l'' f' f -> Designator l' l'' f' f
+ Language.Oberon.Abstract: coDesignator :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Designator l l'' f' f -> Designator l' l'' f' f
- Language.Oberon.Abstract: coExpression :: (CoWirthy l, TargetClass l l') => Expression l l'' f' f -> Expression l' l'' f' f
+ Language.Oberon.Abstract: coExpression :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Expression l l'' f' f -> Expression l' l'' f' f
- Language.Oberon.Abstract: coStatement :: (CoWirthy l, TargetClass l l') => Statement l l'' f' f -> Statement l' l'' f' f
+ Language.Oberon.Abstract: coStatement :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Statement l l'' f' f -> Statement l' l'' f' f
- Language.Oberon.Abstract: coType :: (CoWirthy l, TargetClass l l') => Type l l'' f' f -> Type l' l'' f' f
+ Language.Oberon.Abstract: coType :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Type l l'' f' f -> Type l' l'' f' f
- Language.Oberon.Abstract: coValue :: (CoWirthy l, TargetClass l l') => Value l l'' f' f -> Value l' l'' f' f
+ Language.Oberon.Abstract: coValue :: forall l' l'' (f' :: Type -> Type) (f :: Type -> Type). (CoWirthy l, TargetClass l l') => Value l l'' f' f -> Value l' l'' f' f
- Language.Oberon.Abstract: conditionalBranch :: Wirthy l => f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> ConditionalBranch l l' f' f
+ Language.Oberon.Abstract: conditionalBranch :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> ConditionalBranch l l' f' f
- Language.Oberon.Abstract: constantDeclaration :: Wirthy l => IdentDef l' -> f (ConstExpression l' l' f' f') -> Declaration l l' f' f
+ Language.Oberon.Abstract: constantDeclaration :: forall l' f (f' :: Type -> Type). Wirthy l => IdentDef l' -> f (ConstExpression l' l' f' f') -> Declaration l l' f' f
- Language.Oberon.Abstract: dereference :: Wirthy l => f (Designator l' l' f' f') -> Designator l l' f' f
+ Language.Oberon.Abstract: dereference :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> Designator l l' f' f
- Language.Oberon.Abstract: divide :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: divide :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: element :: Wirthy l => f (Expression l' l' f' f') -> Element l l' f' f
+ Language.Oberon.Abstract: element :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> Element l l' f' f
- Language.Oberon.Abstract: emptyStatement :: Wirthy l => Statement l l' f' f
+ Language.Oberon.Abstract: emptyStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Statement l l' f' f
- Language.Oberon.Abstract: exitStatement :: Wirthy l => Statement l l' f' f
+ Language.Oberon.Abstract: exitStatement :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Statement l l' f' f
- Language.Oberon.Abstract: false :: Wirthy l => Value l l' f' f
+ Language.Oberon.Abstract: false :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Value l l' f' f
- Language.Oberon.Abstract: field :: Wirthy l => f (Designator l' l' f' f') -> Ident -> Designator l l' f' f
+ Language.Oberon.Abstract: field :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> Ident -> Designator l l' f' f
- Language.Oberon.Abstract: fieldList :: Wirthy l => NonEmpty (IdentDef l') -> f (Type l' l' f' f') -> FieldList l l' f' f
+ Language.Oberon.Abstract: fieldList :: forall l' f (f' :: Type -> Type). Wirthy l => NonEmpty (IdentDef l') -> f (Type l' l' f' f') -> FieldList l l' f' f
- Language.Oberon.Abstract: forStatement :: Oberon2 l => Ident -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Maybe (f (Expression l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: forStatement :: forall f l' (f' :: Type -> Type). Oberon2 l => Ident -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Maybe (f (Expression l' l' f' f')) -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
- Language.Oberon.Abstract: formalParameters :: Wirthy l => [f (FPSection l' l' f' f')] -> Maybe (ReturnType l') -> FormalParameters l l' f' f
+ Language.Oberon.Abstract: formalParameters :: forall f l' (f' :: Type -> Type). Wirthy l => [f (FPSection l' l' f' f')] -> Maybe (ReturnType l') -> FormalParameters l l' f' f
- Language.Oberon.Abstract: forwardDeclaration :: Oberon l => IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> Declaration l l' f' f
+ Language.Oberon.Abstract: forwardDeclaration :: forall l' f (f' :: Type -> Type). Oberon l => IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> Declaration l l' f' f
- Language.Oberon.Abstract: fpSection :: Wirthy l => Bool -> [Ident] -> f (Type l' l' f' f') -> FPSection l l' f' f
+ Language.Oberon.Abstract: fpSection :: forall f l' (f' :: Type -> Type). Wirthy l => Bool -> [Ident] -> f (Type l' l' f' f') -> FPSection l l' f' f
- Language.Oberon.Abstract: functionCall :: Wirthy l => f (Designator l' l' f' f') -> [f (Expression l' l' f' f')] -> Expression l l' f' f
+ Language.Oberon.Abstract: functionCall :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> [f (Expression l' l' f' f')] -> Expression l l' f' f
- Language.Oberon.Abstract: getProcedureName :: (Nameable l, Nameable l') => ProcedureHeading l l' f' f -> Ident
+ Language.Oberon.Abstract: getProcedureName :: forall l' (f' :: Type -> Type) (f :: Type -> Type). (Nameable l, Nameable l') => ProcedureHeading l l' f' f -> Ident
- Language.Oberon.Abstract: ifStatement :: Wirthy l => NonEmpty (f (ConditionalBranch l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
+ Language.Oberon.Abstract: ifStatement :: forall f l' (f' :: Type -> Type). Wirthy l => NonEmpty (f (ConditionalBranch l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
- Language.Oberon.Abstract: index :: Wirthy l => f (Designator l' l' f' f') -> NonEmpty (f (Expression l' l' f' f')) -> Designator l l' f' f
+ Language.Oberon.Abstract: index :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> NonEmpty (f (Expression l' l' f' f')) -> Designator l l' f' f
- Language.Oberon.Abstract: integer :: Wirthy l => Integer -> Value l l' f' f
+ Language.Oberon.Abstract: integer :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Integer -> Value l l' f' f
- Language.Oberon.Abstract: integerDivide :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: integerDivide :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: is :: Oberon l => f (Expression l' l' f' f') -> QualIdent l' -> Expression l l' f' f
+ Language.Oberon.Abstract: is :: forall f l' (f' :: Type -> Type). Oberon l => f (Expression l' l' f' f') -> QualIdent l' -> Expression l l' f' f
- Language.Oberon.Abstract: just3 :: forall {k} {k} {k} {f} {a :: k} {b :: k} {c :: k}. f a b c -> Maybe3 f a b c
+ Language.Oberon.Abstract: just3 :: forall {k1} {k2} {k3} {f} {a :: k1} {b :: k2} {c :: k3}. f a b c -> Maybe3 f a b c
- Language.Oberon.Abstract: labelRange :: Wirthy l => f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> CaseLabels l l' f' f
+ Language.Oberon.Abstract: labelRange :: forall f l' (f' :: Type -> Type). Wirthy l => f (ConstExpression l' l' f' f') -> f (ConstExpression l' l' f' f') -> CaseLabels l l' f' f
- Language.Oberon.Abstract: literal :: Wirthy l => f (Value l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: literal :: forall f l' (f' :: Type -> Type). Wirthy l => f (Value l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: loopStatement :: Wirthy l => f (StatementSequence l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: loopStatement :: forall f l' (f' :: Type -> Type). Wirthy l => f (StatementSequence l' l' f' f') -> Statement l l' f' f
- Language.Oberon.Abstract: maybe3 :: forall {k} {k} {k} {b} {f} {a :: k} {b :: k} {c :: k}. b -> (f a b c -> b) -> Maybe3 f a b c -> b
+ Language.Oberon.Abstract: maybe3 :: forall {k1} {k2} {k3} {b1} {f} {a :: k1} {b2 :: k2} {c :: k3}. b1 -> (f a b2 c -> b1) -> Maybe3 f a b2 c -> b1
- Language.Oberon.Abstract: moduleUnit :: Oberon l => Ident -> [Import l] -> f (Block l' l' f' f') -> Module l l' f' f
+ Language.Oberon.Abstract: moduleUnit :: forall f l' (f' :: Type -> Type). Oberon l => Ident -> [Import l] -> f (Block l' l' f' f') -> Module l l' f' f
- Language.Oberon.Abstract: modulo :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: modulo :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: multiply :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: multiply :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: negative :: Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: negative :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: newtype Maybe3 f a b c
+ Language.Oberon.Abstract: newtype Maybe3 (f :: k -> k1 -> k2 -> Type) (a :: k) (b :: k1) (c :: k2)
- Language.Oberon.Abstract: nil :: Wirthy l => Value l l' f' f
+ Language.Oberon.Abstract: nil :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Value l l' f' f
- Language.Oberon.Abstract: not :: Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: not :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: nothing3 :: forall {k} {k} {k} {f :: k -> k -> k -> Type} {a :: k} {b :: k} {c :: k}. Maybe3 f a b c
+ Language.Oberon.Abstract: nothing3 :: forall {k1} {k2} {k3} {f :: k1 -> k2 -> k3 -> Type} {a :: k1} {b :: k2} {c :: k3}. Maybe3 f a b c
- Language.Oberon.Abstract: or :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: or :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: pointerType :: Wirthy l => f (Type l' l' f' f') -> Type l l' f' f
+ Language.Oberon.Abstract: pointerType :: forall f l' (f' :: Type -> Type). Wirthy l => f (Type l' l' f' f') -> Type l l' f' f
- Language.Oberon.Abstract: positive :: Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: positive :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: procedureCall :: Wirthy l => f (Designator l' l' f' f') -> Maybe [f (Expression l' l' f' f')] -> Statement l l' f' f
+ Language.Oberon.Abstract: procedureCall :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> Maybe [f (Expression l' l' f' f')] -> Statement l l' f' f
- Language.Oberon.Abstract: procedureDeclaration :: Wirthy l => f (ProcedureHeading l' l' f' f') -> f (Block l' l' f' f') -> Declaration l l' f' f
+ Language.Oberon.Abstract: procedureDeclaration :: forall f l' (f' :: Type -> Type). Wirthy l => f (ProcedureHeading l' l' f' f') -> f (Block l' l' f' f') -> Declaration l l' f' f
- Language.Oberon.Abstract: procedureHeading :: Oberon l => Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
+ Language.Oberon.Abstract: procedureHeading :: forall l' f (f' :: Type -> Type). Oberon l => Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
- Language.Oberon.Abstract: procedureType :: Wirthy l => Maybe (f (FormalParameters l' l' f' f')) -> Type l l' f' f
+ Language.Oberon.Abstract: procedureType :: forall f l' (f' :: Type -> Type). Wirthy l => Maybe (f (FormalParameters l' l' f' f')) -> Type l l' f' f
- Language.Oberon.Abstract: range :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Element l l' f' f
+ Language.Oberon.Abstract: range :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Element l l' f' f
- Language.Oberon.Abstract: read :: Wirthy l => f (Designator l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: read :: forall f l' (f' :: Type -> Type). Wirthy l => f (Designator l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: real :: Wirthy l => Double -> Value l l' f' f
+ Language.Oberon.Abstract: real :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Double -> Value l l' f' f
- Language.Oberon.Abstract: recordType :: Oberon l => Maybe (BaseType l') -> [f (FieldList l' l' f' f')] -> Type l l' f' f
+ Language.Oberon.Abstract: recordType :: forall l' f (f' :: Type -> Type). Oberon l => Maybe (BaseType l') -> [f (FieldList l' l' f' f')] -> Type l l' f' f
- Language.Oberon.Abstract: relation :: Wirthy l => RelOp -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: relation :: forall f l' (f' :: Type -> Type). Wirthy l => RelOp -> f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: repeatStatement :: Wirthy l => f (StatementSequence l' l' f' f') -> f (Expression l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: repeatStatement :: forall f l' (f' :: Type -> Type). Wirthy l => f (StatementSequence l' l' f' f') -> f (Expression l' l' f' f') -> Statement l l' f' f
- Language.Oberon.Abstract: returnStatement :: Wirthy l => Maybe (f (Expression l' l' f' f')) -> Statement l l' f' f
+ Language.Oberon.Abstract: returnStatement :: forall f l' (f' :: Type -> Type). Wirthy l => Maybe (f (Expression l' l' f' f')) -> Statement l l' f' f
- Language.Oberon.Abstract: set :: Oberon l => [f (Element l' l' f' f')] -> Expression l l' f' f
+ Language.Oberon.Abstract: set :: forall f l' (f' :: Type -> Type). Oberon l => [f (Element l' l' f' f')] -> Expression l l' f' f
- Language.Oberon.Abstract: singleLabel :: Wirthy l => f (ConstExpression l' l' f' f') -> CaseLabels l l' f' f
+ Language.Oberon.Abstract: singleLabel :: forall f l' (f' :: Type -> Type). Wirthy l => f (ConstExpression l' l' f' f') -> CaseLabels l l' f' f
- Language.Oberon.Abstract: statementSequence :: Wirthy l => [f (Statement l' l' f' f')] -> StatementSequence l l' f' f
+ Language.Oberon.Abstract: statementSequence :: forall f l' (f' :: Type -> Type). Wirthy l => [f (Statement l' l' f' f')] -> StatementSequence l l' f' f
- Language.Oberon.Abstract: string :: Wirthy l => Text -> Value l l' f' f
+ Language.Oberon.Abstract: string :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Text -> Value l l' f' f
- Language.Oberon.Abstract: subtract :: Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
+ Language.Oberon.Abstract: subtract :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (Expression l' l' f' f') -> Expression l l' f' f
- Language.Oberon.Abstract: true :: Wirthy l => Value l l' f' f
+ Language.Oberon.Abstract: true :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => Value l l' f' f
- Language.Oberon.Abstract: type Block l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type Block l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type Case l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type Case l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type CaseLabels l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type CaseLabels l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type ConditionalBranch l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type ConditionalBranch l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type Declaration l = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | d -> l;
+ Language.Oberon.Abstract: type Declaration l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
- Language.Oberon.Abstract: type Designator l = (d :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | d -> l;
+ Language.Oberon.Abstract: type Designator l = (d :: Type -> Type -> Type -> Type -> Type -> Type) | d -> l;
- Language.Oberon.Abstract: type Element l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type Element l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type Expression l = (e :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | e -> l;
+ Language.Oberon.Abstract: type Expression l = (e :: Type -> Type -> Type -> Type -> Type -> Type) | e -> l;
- Language.Oberon.Abstract: type FPSection l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type FPSection l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type FieldList l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type FieldList l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type FormalParameters l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type FormalParameters l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type IdentDef l = x | x -> l;
+ Language.Oberon.Abstract: type IdentDef l = (x :: Type) | x -> l;
- Language.Oberon.Abstract: type IdentList l = NonEmpty (IdentDef l)
+ Language.Oberon.Abstract: type IdentList l = NonEmpty IdentDef l
- Language.Oberon.Abstract: type Import l = x | x -> l;
+ Language.Oberon.Abstract: type Import l = (x :: Type) | x -> l;
- Language.Oberon.Abstract: type Module l = (m :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | m -> l;
+ Language.Oberon.Abstract: type Module l = (m :: Type -> Type -> Type -> Type -> Type -> Type) | m -> l;
- Language.Oberon.Abstract: type ProcedureHeading l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type ProcedureHeading l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type QualIdent l = x | x -> l;
+ Language.Oberon.Abstract: type QualIdent l = (x :: Type) | x -> l;
- Language.Oberon.Abstract: type Statement l = (s :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | s -> l;
+ Language.Oberon.Abstract: type Statement l = (s :: Type -> Type -> Type -> Type -> Type -> Type) | s -> l;
- Language.Oberon.Abstract: type StatementSequence l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type StatementSequence l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: type Type l = (t :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | t -> l;
+ Language.Oberon.Abstract: type Type l = (t :: Type -> Type -> Type -> Type -> Type -> Type) | t -> l;
- Language.Oberon.Abstract: type Value l = (v :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | v -> l;
+ Language.Oberon.Abstract: type Value l = (v :: Type -> Type -> Type -> Type -> Type -> Type) | v -> l;
- Language.Oberon.Abstract: type WithAlternative l = (x :: Type -> (Type -> Type) -> (Type -> Type) -> Type) | x -> l;
+ Language.Oberon.Abstract: type WithAlternative l = (x :: Type -> Type -> Type -> Type -> Type -> Type) | x -> l;
- Language.Oberon.Abstract: typeBoundHeading :: Oberon2 l => Bool -> Ident -> Ident -> Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
+ Language.Oberon.Abstract: typeBoundHeading :: forall l' f (f' :: Type -> Type). Oberon2 l => Bool -> Ident -> Ident -> Bool -> IdentDef l' -> Maybe (f (FormalParameters l' l' f' f')) -> ProcedureHeading l l' f' f
- Language.Oberon.Abstract: typeDeclaration :: Wirthy l => IdentDef l' -> f (Type l' l' f' f') -> Declaration l l' f' f
+ Language.Oberon.Abstract: typeDeclaration :: forall l' f (f' :: Type -> Type). Wirthy l => IdentDef l' -> f (Type l' l' f' f') -> Declaration l l' f' f
- Language.Oberon.Abstract: typeGuard :: Oberon l => f (Designator l' l' f' f') -> QualIdent l' -> Designator l l' f' f
+ Language.Oberon.Abstract: typeGuard :: forall f l' (f' :: Type -> Type). Oberon l => f (Designator l' l' f' f') -> QualIdent l' -> Designator l l' f' f
- Language.Oberon.Abstract: typeReference :: Wirthy l => QualIdent l' -> Type l l' f' f
+ Language.Oberon.Abstract: typeReference :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => QualIdent l' -> Type l l' f' f
- Language.Oberon.Abstract: variable :: Wirthy l => QualIdent l' -> Designator l l' f' f
+ Language.Oberon.Abstract: variable :: forall l' (f' :: Type -> Type) (f :: Type -> Type). Wirthy l => QualIdent l' -> Designator l l' f' f
- Language.Oberon.Abstract: variableDeclaration :: Wirthy l => IdentList l' -> f (Type l' l' f' f') -> Declaration l l' f' f
+ Language.Oberon.Abstract: variableDeclaration :: forall l' f (f' :: Type -> Type). Wirthy l => IdentList l' -> f (Type l' l' f' f') -> Declaration l l' f' f
- Language.Oberon.Abstract: variantWithStatement :: Oberon2 l => NonEmpty (f (WithAlternative l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
+ Language.Oberon.Abstract: variantWithStatement :: forall f l' (f' :: Type -> Type). Oberon2 l => NonEmpty (f (WithAlternative l' l' f' f')) -> Maybe (f (StatementSequence l' l' f' f')) -> Statement l l' f' f
- Language.Oberon.Abstract: whileStatement :: Wirthy l => f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: whileStatement :: forall f l' (f' :: Type -> Type). Wirthy l => f (Expression l' l' f' f') -> f (StatementSequence l' l' f' f') -> Statement l l' f' f
- Language.Oberon.Abstract: withAlternative :: Oberon l => QualIdent l' -> QualIdent l' -> f (StatementSequence l' l' f' f') -> WithAlternative l l' f' f
+ Language.Oberon.Abstract: withAlternative :: forall l' f (f' :: Type -> Type). Oberon l => QualIdent l' -> QualIdent l' -> f (StatementSequence l' l' f' f') -> WithAlternative l l' f' f
- Language.Oberon.Abstract: withStatement :: Oberon l => f (WithAlternative l' l' f' f') -> Statement l l' f' f
+ Language.Oberon.Abstract: withStatement :: forall f l' (f' :: Type -> Type). Oberon l => f (WithAlternative l' l' f' f') -> Statement l l' f' f
- Language.Oberon.ConstantFolder: Modules :: Map Ident (f (Module l l f' f')) -> Modules l f' f
+ Language.Oberon.ConstantFolder: Modules :: Map Ident (f (Module l l f' f')) -> Modules l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.ConstantFolder: foldConstants :: (Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l Sem Sem) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l Sem Sem) ~ SynCFMod' l (Block l l), Functor (Auto ConstantFold) (Block l l), Functor (Auto ConstantFold) (Block l l)) => Environment l -> Map Ident (Placed (Module l l Placed Placed)) -> Map Ident (Placed (Module l l Placed Placed))
+ Language.Oberon.ConstantFolder: foldConstants :: (Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto ConstantFold)) (Block l l) ~ InhCF l, Atts (Synthesized (Auto ConstantFold)) (Block l l) ~ SynCFMod' l (Block l l), Functor (Knit (Auto ConstantFold)) (Block l l)) => Environment l -> Map Ident (Placed (Module l l Placed Placed)) -> Map Ident (Placed (Module l l Placed Placed))
- Language.Oberon.ConstantFolder: newtype Modules l f' f
+ Language.Oberon.ConstantFolder: newtype Modules l (f' :: Type -> Type) (f :: Type -> Type)
- Language.Oberon.ConstantFolder: type Environment l = Map (QualIdent l) (Maybe (Value l l Placed Placed))
+ Language.Oberon.ConstantFolder: type Environment l = Map QualIdent l Maybe Value l l Placed Placed
- Language.Oberon.ConstantFolder: type SynCF' node = SynCF (node Placed Placed)
+ Language.Oberon.ConstantFolder: type SynCF' (node :: Type -> Type -> Type -> Type -> Type) = SynCF node Placed Placed
- Language.Oberon.ConstantFolder: type SynCFMod' l node = SynCFMod l (node Placed Placed)
+ Language.Oberon.ConstantFolder: type SynCFMod' l (node :: Type -> Type -> Type -> Type -> Type) = SynCFMod l node Placed Placed
- Language.Oberon.Grammar: OberonGrammar :: p (f (Module l l f f)) -> p Ident -> p Text -> p Text -> p [Import l] -> p (Import l) -> p [f (Declaration l l f f)] -> p (Declaration l l f f) -> p (IdentDef l) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (Value l l f f) -> p (Value l l f f) -> p Text -> p (Value l l f f) -> p Text -> p (Value l l f f) -> p Text -> p (Expression l l f f) -> p (Element l l f f) -> p (f (Designator l l f f)) -> p (Designator l l f f) -> p (NonEmpty (f (Expression l l f f))) -> p [f (Expression l l f f)] -> p (BinOp l f) -> p (BinOp l f) -> p RelOp -> p (Declaration l l f f) -> p (Type l l f f) -> p (QualIdent l) -> p (Type l l f f) -> p (f (Expression l l f f)) -> p (Type l l f f) -> p (BaseType l) -> p [f (FieldList l l f f)] -> p (FieldList l l f f) -> p (IdentList l) -> p (Type l l f f) -> p (Type l l f f) -> p (Declaration l l f f) -> p (Declaration l l f f) -> p (Ident, ProcedureHeading l l f f) -> p (FormalParameters l l f f) -> p (FPSection l l f f) -> p (Type l l f f) -> p (Block l l f f) -> p (Declaration l l f f) -> p (StatementSequence l l f f) -> p (f (Statement l l f f)) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Case l l f f) -> p (NonEmpty (f (CaseLabels l l f f))) -> p (CaseLabels l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> OberonGrammar l f p
+ Language.Oberon.Grammar: OberonGrammar :: p (f (Module l l f f)) -> p Ident -> p Text -> p Text -> p [Import l] -> p (Import l) -> p [f (Declaration l l f f)] -> p (Declaration l l f f) -> p (IdentDef l) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (f (Expression l l f f)) -> p (Value l l f f) -> p (Value l l f f) -> p Text -> p (Value l l f f) -> p Text -> p (Value l l f f) -> p Text -> p (Expression l l f f) -> p (Element l l f f) -> p (f (Designator l l f f)) -> p (Designator l l f f) -> p (NonEmpty (f (Expression l l f f))) -> p [f (Expression l l f f)] -> p (BinOp l f) -> p (BinOp l f) -> p RelOp -> p (Declaration l l f f) -> p (Type l l f f) -> p (QualIdent l) -> p (Type l l f f) -> p (f (Expression l l f f)) -> p (Type l l f f) -> p (BaseType l) -> p [f (FieldList l l f f)] -> p (FieldList l l f f) -> p (IdentList l) -> p (Type l l f f) -> p (Type l l f f) -> p (Declaration l l f f) -> p (Declaration l l f f) -> p (Ident, ProcedureHeading l l f f) -> p (FormalParameters l l f f) -> p (FPSection l l f f) -> p (Type l l f f) -> p (Block l l f f) -> p (Declaration l l f f) -> p (StatementSequence l l f f) -> p (f (Statement l l f f)) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Case l l f f) -> p (NonEmpty (f (CaseLabels l l f f))) -> p (CaseLabels l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> p (Statement l l f f) -> OberonGrammar l (f :: Type -> Type) (p :: Type -> Type)
- Language.Oberon.Grammar: [actualParameters] :: OberonGrammar l f p -> p [f (Expression l l f f)]
+ Language.Oberon.Grammar: [actualParameters] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Expression l l f f)]
- Language.Oberon.Grammar: [addOperator] :: OberonGrammar l f p -> p (BinOp l f)
+ Language.Oberon.Grammar: [addOperator] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (BinOp l f)
- Language.Oberon.Grammar: [arrayType] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [arrayType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [assignment] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [assignment] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [baseType] :: OberonGrammar l f p -> p (BaseType l)
+ Language.Oberon.Grammar: [baseType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (BaseType l)
- Language.Oberon.Grammar: [caseLabelList] :: OberonGrammar l f p -> p (NonEmpty (f (CaseLabels l l f f)))
+ Language.Oberon.Grammar: [caseLabelList] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NonEmpty (f (CaseLabels l l f f)))
- Language.Oberon.Grammar: [caseLabels] :: OberonGrammar l f p -> p (CaseLabels l l f f)
+ Language.Oberon.Grammar: [caseLabels] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (CaseLabels l l f f)
- Language.Oberon.Grammar: [caseStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [caseStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [case_prod] :: OberonGrammar l f p -> p (Case l l f f)
+ Language.Oberon.Grammar: [case_prod] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Case l l f f)
- Language.Oberon.Grammar: [charConstant] :: OberonGrammar l f p -> p (Value l l f f)
+ Language.Oberon.Grammar: [charConstant] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Oberon.Grammar: [constExpression] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [constExpression] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [constantDeclaration] :: OberonGrammar l f p -> p (Declaration l l f f)
+ Language.Oberon.Grammar: [constantDeclaration] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Oberon.Grammar: [declarationSequence] :: OberonGrammar l f p -> p [f (Declaration l l f f)]
+ Language.Oberon.Grammar: [declarationSequence] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (Declaration l l f f)]
- Language.Oberon.Grammar: [designator] :: OberonGrammar l f p -> p (f (Designator l l f f))
+ Language.Oberon.Grammar: [designator] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Designator l l f f))
- Language.Oberon.Grammar: [digit] :: OberonGrammar l f p -> p Text
+ Language.Oberon.Grammar: [digit] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Oberon.Grammar: [element] :: OberonGrammar l f p -> p (Element l l f f)
+ Language.Oberon.Grammar: [element] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Element l l f f)
- Language.Oberon.Grammar: [expList] :: OberonGrammar l f p -> p (NonEmpty (f (Expression l l f f)))
+ Language.Oberon.Grammar: [expList] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (NonEmpty (f (Expression l l f f)))
- Language.Oberon.Grammar: [expression] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [expression] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [fPSection] :: OberonGrammar l f p -> p (FPSection l l f f)
+ Language.Oberon.Grammar: [fPSection] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FPSection l l f f)
- Language.Oberon.Grammar: [factor] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [factor] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [fieldListSequence] :: OberonGrammar l f p -> p [f (FieldList l l f f)]
+ Language.Oberon.Grammar: [fieldListSequence] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p [f (FieldList l l f f)]
- Language.Oberon.Grammar: [fieldList] :: OberonGrammar l f p -> p (FieldList l l f f)
+ Language.Oberon.Grammar: [fieldList] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FieldList l l f f)
- Language.Oberon.Grammar: [forStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [forStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [formalParameters] :: OberonGrammar l f p -> p (FormalParameters l l f f)
+ Language.Oberon.Grammar: [formalParameters] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (FormalParameters l l f f)
- Language.Oberon.Grammar: [formalType] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [formalType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [forwardDeclaration] :: OberonGrammar l f p -> p (Declaration l l f f)
+ Language.Oberon.Grammar: [forwardDeclaration] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Oberon.Grammar: [hexDigit] :: OberonGrammar l f p -> p Text
+ Language.Oberon.Grammar: [hexDigit] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Oberon.Grammar: [identList] :: OberonGrammar l f p -> p (IdentList l)
+ Language.Oberon.Grammar: [identList] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (IdentList l)
- Language.Oberon.Grammar: [ident] :: OberonGrammar l f p -> p Ident
+ Language.Oberon.Grammar: [ident] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Ident
- Language.Oberon.Grammar: [identdef] :: OberonGrammar l f p -> p (IdentDef l)
+ Language.Oberon.Grammar: [identdef] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (IdentDef l)
- Language.Oberon.Grammar: [ifStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [ifStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [importList] :: OberonGrammar l f p -> p [Import l]
+ Language.Oberon.Grammar: [importList] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p [Import l]
- Language.Oberon.Grammar: [import_prod] :: OberonGrammar l f p -> p (Import l)
+ Language.Oberon.Grammar: [import_prod] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Import l)
- Language.Oberon.Grammar: [integer] :: OberonGrammar l f p -> p (Value l l f f)
+ Language.Oberon.Grammar: [integer] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Oberon.Grammar: [length] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [length] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [letter] :: OberonGrammar l f p -> p Text
+ Language.Oberon.Grammar: [letter] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Oberon.Grammar: [loopStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [loopStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [module_prod] :: OberonGrammar l f p -> p (f (Module l l f f))
+ Language.Oberon.Grammar: [module_prod] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Module l l f f))
- Language.Oberon.Grammar: [mulOperator] :: OberonGrammar l f p -> p (BinOp l f)
+ Language.Oberon.Grammar: [mulOperator] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (BinOp l f)
- Language.Oberon.Grammar: [number] :: OberonGrammar l f p -> p (Value l l f f)
+ Language.Oberon.Grammar: [number] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Oberon.Grammar: [pointerType] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [pointerType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [procedureBody] :: OberonGrammar l f p -> p (Block l l f f)
+ Language.Oberon.Grammar: [procedureBody] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Block l l f f)
- Language.Oberon.Grammar: [procedureCall] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [procedureCall] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [procedureDeclaration] :: OberonGrammar l f p -> p (Declaration l l f f)
+ Language.Oberon.Grammar: [procedureDeclaration] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Oberon.Grammar: [procedureHeading] :: OberonGrammar l f p -> p (Ident, ProcedureHeading l l f f)
+ Language.Oberon.Grammar: [procedureHeading] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Ident, ProcedureHeading l l f f)
- Language.Oberon.Grammar: [procedureType] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [procedureType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [qualident] :: OberonGrammar l f p -> p (QualIdent l)
+ Language.Oberon.Grammar: [qualident] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (QualIdent l)
- Language.Oberon.Grammar: [real] :: OberonGrammar l f p -> p (Value l l f f)
+ Language.Oberon.Grammar: [real] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Value l l f f)
- Language.Oberon.Grammar: [recordType] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [recordType] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [relation] :: OberonGrammar l f p -> p RelOp
+ Language.Oberon.Grammar: [relation] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p RelOp
- Language.Oberon.Grammar: [repeatStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [repeatStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [scaleFactor] :: OberonGrammar l f p -> p Text
+ Language.Oberon.Grammar: [scaleFactor] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Oberon.Grammar: [set] :: OberonGrammar l f p -> p (Expression l l f f)
+ Language.Oberon.Grammar: [set] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Expression l l f f)
- Language.Oberon.Grammar: [simpleExpression] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [simpleExpression] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [statementSequence] :: OberonGrammar l f p -> p (StatementSequence l l f f)
+ Language.Oberon.Grammar: [statementSequence] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (StatementSequence l l f f)
- Language.Oberon.Grammar: [statement] :: OberonGrammar l f p -> p (f (Statement l l f f))
+ Language.Oberon.Grammar: [statement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Statement l l f f))
- Language.Oberon.Grammar: [string_prod] :: OberonGrammar l f p -> p Text
+ Language.Oberon.Grammar: [string_prod] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p Text
- Language.Oberon.Grammar: [term] :: OberonGrammar l f p -> p (f (Expression l l f f))
+ Language.Oberon.Grammar: [term] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (f (Expression l l f f))
- Language.Oberon.Grammar: [typeDeclaration] :: OberonGrammar l f p -> p (Declaration l l f f)
+ Language.Oberon.Grammar: [typeDeclaration] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Oberon.Grammar: [type_prod] :: OberonGrammar l f p -> p (Type l l f f)
+ Language.Oberon.Grammar: [type_prod] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Type l l f f)
- Language.Oberon.Grammar: [unguardedDesignator] :: OberonGrammar l f p -> p (Designator l l f f)
+ Language.Oberon.Grammar: [unguardedDesignator] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Designator l l f f)
- Language.Oberon.Grammar: [variableDeclaration] :: OberonGrammar l f p -> p (Declaration l l f f)
+ Language.Oberon.Grammar: [variableDeclaration] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Declaration l l f f)
- Language.Oberon.Grammar: [whileStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [whileStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: [withStatement] :: OberonGrammar l f p -> p (Statement l l f f)
+ Language.Oberon.Grammar: [withStatement] :: OberonGrammar l (f :: Type -> Type) (p :: Type -> Type) -> p (Statement l l f f)
- Language.Oberon.Grammar: data OberonGrammar l f p
+ Language.Oberon.Grammar: data OberonGrammar l (f :: Type -> Type) (p :: Type -> Type)
- Language.Oberon.Grammar: type NodeWrap = Compose ((,) (Down Int, Down Int)) (Compose Ambiguous ((,) ParsedLexemes))
+ Language.Oberon.Grammar: type NodeWrap = Compose (,) (Down Int, Down Int) Compose Ambiguous (,) ParsedLexemes
- Language.Oberon.Grammar: type Parser = ParserT ((,) [[Lexeme]])
+ Language.Oberon.Grammar: type Parser = ParserT (,) [[Lexeme]]
- Language.Oberon.Reserializer: adjustPositions :: (Foldable (g (Const (Sum Int))), Foldable (Fold Parsed (Sum Int)) g, Traversable PositionAdjustment g) => Parsed (g Parsed Parsed) -> Parsed (g Parsed Parsed)
+ Language.Oberon.Reserializer: adjustPositions :: (Foldable (g (Const (Sum Int) :: Type -> Type)), Foldable (Fold Parsed (Sum Int)) g, Traversable PositionAdjustment g) => Parsed (g Parsed Parsed) -> Parsed (g Parsed Parsed)
- Language.Oberon.Reserializer: sourceLength :: (Foldable (g (Const (Sum Int))), Foldable (Fold Parsed (Sum Int)) g) => Parsed (g Parsed Parsed) -> Int
+ Language.Oberon.Reserializer: sourceLength :: (Foldable (g (Const (Sum Int) :: Type -> Type)), Foldable (Fold Parsed (Sum Int)) g) => Parsed (g Parsed Parsed) -> Int
- Language.Oberon.Resolver: resolveModule :: forall l. (BindableDeclaration l, CoFormalParameters l, Traversable (Resolution l) (Module l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (ConstExpression l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (DeclarationRHS l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (ConstExpression l l), Resolution l `At` Block l l NodeWrap NodeWrap) => Scope l -> Map Ident (Validation (NonEmpty (Error l)) (Placed (Module l l Placed Placed))) -> NodeWrap (Module l l NodeWrap NodeWrap) -> Validation (NonEmpty (Error l)) (Placed (Module l l Placed Placed))
+ Language.Oberon.Resolver: resolveModule :: (BindableDeclaration l, CoFormalParameters l, Traversable (Resolution l) (Module l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (ConstExpression l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (DeclarationRHS l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (ConstExpression l l), At (Resolution l) (Block l l NodeWrap NodeWrap)) => Scope l -> Map Ident (Validation (NonEmpty (Error l)) (Placed (Module l l Placed Placed))) -> NodeWrap (Module l l NodeWrap NodeWrap) -> Validation (NonEmpty (Error l)) (Placed (Module l l Placed Placed))
- Language.Oberon.Resolver: resolveModules :: forall l. (BindableDeclaration l, CoFormalParameters l, Wirthy l, Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (DeclarationRHS l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (ProcedureHeading l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (Expression l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Module l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (ProcedureHeading l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (Expression l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (StatementSequence l l), Resolution l `At` Block l l NodeWrap NodeWrap) => Predefined l -> Map Ident (NodeWrap (Module l l NodeWrap NodeWrap)) -> Validation (NonEmpty (Ident, NonEmpty (Error l))) (Map Ident (Placed (Module l l Placed Placed)))
+ Language.Oberon.Resolver: resolveModules :: (BindableDeclaration l, CoFormalParameters l, Wirthy l, Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (DeclarationRHS l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (ProcedureHeading l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (Expression l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (StatementSequence l l), Traversable (Resolution l) (Module l l), Traversable (Resolution l) (Declaration l l), Traversable (Resolution l) (Type l l), Traversable (Resolution l) (ProcedureHeading l l), Traversable (Resolution l) (FormalParameters l l), Traversable (Resolution l) (Expression l l), Traversable (Resolution l) (Block l l), Traversable (Resolution l) (StatementSequence l l), At (Resolution l) (Block l l NodeWrap NodeWrap)) => Predefined l -> Map Ident (NodeWrap (Module l l NodeWrap NodeWrap)) -> Validation (NonEmpty (Ident, NonEmpty (Error l))) (Map Ident (Placed (Module l l Placed Placed)))
- Language.Oberon.Resolver: type NodeWrap = Compose ((,) (Int, Int)) (Compose Ambiguous ((,) ParsedLexemes))
+ Language.Oberon.Resolver: type NodeWrap = Compose (,) (Int, Int) Compose Ambiguous (,) ParsedLexemes
- Language.Oberon.TypeChecker: checkModules :: forall l. (Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto TypeCheck)) (Block l l Sem Sem) ~ InhTC l, Atts (Synthesized (Auto TypeCheck)) (Block l l Sem Sem) ~ SynTCMod l, Functor (Auto TypeCheck) (Block l l)) => Environment l -> Map Ident (Placed (Module l l Placed Placed)) -> [Error Ident l]
+ Language.Oberon.TypeChecker: checkModules :: (Oberon l, Nameable l, Ord (QualIdent l), Show (QualIdent l), Atts (Inherited (Auto TypeCheck)) (Block l l) ~ InhTC l, Atts (Synthesized (Auto TypeCheck)) (Block l l) ~ SynTCMod l, Functor (Knit (Auto TypeCheck)) (Block l l)) => Environment l -> Map Ident (Placed (Module l l Placed Placed)) -> [Error Ident l]

Files

ChangeLog.md view
@@ -1,5 +1,14 @@ # Revision history for language-oberon +## 0.3.4 -- 2025-01-01++* Adjusted for major changes in `deep-transformations` version 0.4++## 0.3.3.2 -- 2025-01-01++* Fixed a few compiler warnings+* Bumped the upper bound of `deep-transformations` and `template-haskell`+ ## 0.3.3.1 -- 2024-04-27  * Fixed deprecation warnings
language-oberon.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/  name:                language-oberon-version:             0.3.3.2+version:             0.3.4 synopsis:            Parser, pretty-printer, and more for the Oberon programming language description:    The library and the executable support both the original Oberon and the Oberon-2 programming language, as described@@ -35,7 +35,7 @@                         parsers >= 0.12.7 && < 0.13, input-parsers >= 0.2.2 && < 0.4,                         prettyprinter >= 1.2.1 && < 1.8, either == 5.*,                         rank2classes >= 1.3 && < 1.6, grammatical-parsers >= 0.7 && < 0.8,-                        deep-transformations >= 0.2 && < 0.4,+                        deep-transformations >= 0.4 && < 0.5,                         transformers >= 0.5 && < 0.7,                         template-haskell >= 2.11 && < 2.24   default-language:     Haskell2010
src/Language/Oberon/ConstantFolder.hs view
@@ -49,17 +49,15 @@ -- functions. The value of the latter argument is typically 'predefined' or 'predefined2'. foldConstants :: (Abstract.Oberon l, Abstract.Nameable l,                   Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-                  Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ InhCF l,-                  Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem)+                  Atts (Inherited (Auto ConstantFold)) (Abstract.Block l l) ~ InhCF l,+                  Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l)                   ~ SynCFMod' l (Abstract.Block l l),-                  Full.Functor (Auto ConstantFold) (Abstract.Block l l),-                  Deep.Functor (Auto ConstantFold) (Abstract.Block l l))+                  Full.Functor (AG.Knit (Auto ConstantFold)) (Abstract.Block l l))               => Environment l -> Map AST.Ident (Placed (AST.Module l l Placed Placed))               -> Map AST.Ident (Placed (AST.Module l l Placed Placed)) foldConstants predef modules =    getModules (modulesFolded $-               syn (Transformation.apply (Auto ConstantFold)-                                         (wrap (Auto ConstantFold Deep.<$> Modules modules))+               syn ((AG.Knit (Auto ConstantFold) Full.<$> wrap (Modules modules))                     `Rank2.apply`                     Inherited (InhCFRoot predef)))    where wrap = (,) (0, Trailing [], 0)@@ -72,14 +70,9 @@  data ConstantFold = ConstantFold -type Sem = Semantics (Auto ConstantFold)--instance Transformation.Transformation (Auto ConstantFold) where-   type Domain (Auto ConstantFold) = Placed-   type Codomain (Auto ConstantFold) = Semantics (Auto ConstantFold)--instance AG.Revelation (Auto ConstantFold) where-   reveal (Auto ConstantFold) = snd+instance Attribution ConstantFold where+   type Origin ConstantFold = Placed+   unwrap ConstantFold = snd  data InhCFRoot l = InhCFRoot{rootEnv :: Environment l} deriving Generic @@ -106,61 +99,65 @@ instance (Transformation.Transformation t, Functor (Transformation.Domain t), Deep.Functor t (AST.Module l l),           Transformation.At t (AST.Module l l (Transformation.Codomain t) (Transformation.Codomain t))) =>          Deep.Functor t (Modules l) where-   t <$> ~(Modules ms) = Modules (mapModule <$> ms)+   t <$> Modules ms = Modules (mapModule <$> ms)       where mapModule m = t Transformation.$ ((t Deep.<$>) <$> m)  instance Rank2.Functor (Modules l f') where-   f <$> ~(Modules ms) = Modules (f <$> ms)+   f <$> Modules ms = Modules (f <$> ms) +instance Rank2.Foldable (Modules l f') where+   foldMap f (Modules ms) = foldMap f ms++instance Rank2.Traversable (Modules l f') where+   traverse f (Modules ms) = Modules <$> traverse f ms+ instance Rank2.Apply (Modules l f') where-   ~(Modules fs) <*> ~(Modules ms) = Modules (Map.intersectionWith Rank2.apply fs ms)+   Modules fs <*> Modules ms = Modules (Map.intersectionWith Rank2.apply fs ms)  instance (Transformation.Transformation t, Transformation.At t (AST.Module l l f f)) =>          Shallow.Functor t (Modules l f) where-   t <$> ~(Modules ms) = Modules ((t Transformation.$) <$> ms)+   t <$> Modules ms = Modules ((t Transformation.$) <$> ms)  -- * Boring attribute types-type instance Atts (Synthesized ConstantFold) (Modules l _ _) = SynCFRoot (Modules l Placed Placed)-type instance Atts (Synthesized ConstantFold) (AST.Module l l _ _) = SynCFMod' l (AST.Module l l)-type instance Atts (Synthesized ConstantFold) (AST.Declaration l l _ _) = SynCFMod' l (AST.Declaration l l)-type instance Atts (Synthesized ConstantFold) (AST.ProcedureHeading l l _ _) = SynCF' (AST.ProcedureHeading l l)-type instance Atts (Synthesized ConstantFold) (AST.Block l l _ _) = SynCFMod' l (AST.Block l l)-type instance Atts (Synthesized ConstantFold) (AST.FormalParameters l l _ _) = SynCF' (AST.FormalParameters l l)-type instance Atts (Synthesized ConstantFold) (AST.FPSection l l _ _) = SynCF' (AST.FPSection l l)-type instance Atts (Synthesized ConstantFold) (AST.Type l l _ _) = SynCF' (AST.Type l l)-type instance Atts (Synthesized ConstantFold) (AST.FieldList l l _ _) = SynCF' (AST.FieldList l l)-type instance Atts (Synthesized ConstantFold) (AST.StatementSequence l l _ _) =-   SynCF' (AST.StatementSequence l l)-type instance Atts (Synthesized ConstantFold) (AST.Expression λ l _ _) = SynCFExp λ l-type instance Atts (Synthesized ConstantFold) (AST.Element l l _ _) = SynCF' (AST.Element l l)-type instance Atts (Synthesized ConstantFold) (AST.Value l l _ _) = SynCF' (AST.Value l l)-type instance Atts (Synthesized ConstantFold) (AST.Designator l l _ _) = SynCFDesignator l-type instance Atts (Synthesized ConstantFold) (AST.Statement l l _ _) = SynCF' (AST.Statement l l)-type instance Atts (Synthesized ConstantFold) (AST.Case l l _ _) = SynCF' (AST.Case l l)-type instance Atts (Synthesized ConstantFold) (AST.CaseLabels l l _ _) = SynCF' (AST.CaseLabels l l)-type instance Atts (Synthesized ConstantFold) (AST.ConditionalBranch l l _ _) =-   SynCF' (AST.ConditionalBranch l l)-type instance Atts (Synthesized ConstantFold) (AST.WithAlternative l l _ _) = SynCF' (AST.WithAlternative l l)+type instance Atts (Synthesized ConstantFold) (Modules l) = SynCFRoot (Modules l Placed Placed)+type instance Atts (Synthesized ConstantFold) (AST.Module l l) = SynCFMod' l (AST.Module l l)+type instance Atts (Synthesized ConstantFold) (AST.Declaration l l) = SynCFMod' l (AST.Declaration l l)+type instance Atts (Synthesized ConstantFold) (AST.ProcedureHeading l l) = SynCF' (AST.ProcedureHeading l l)+type instance Atts (Synthesized ConstantFold) (AST.Block l l) = SynCFMod' l (AST.Block l l)+type instance Atts (Synthesized ConstantFold) (AST.FormalParameters l l) = SynCF' (AST.FormalParameters l l)+type instance Atts (Synthesized ConstantFold) (AST.FPSection l l) = SynCF' (AST.FPSection l l)+type instance Atts (Synthesized ConstantFold) (AST.Type l l) = SynCF' (AST.Type l l)+type instance Atts (Synthesized ConstantFold) (AST.FieldList l l) = SynCF' (AST.FieldList l l)+type instance Atts (Synthesized ConstantFold) (AST.StatementSequence l l) = SynCF' (AST.StatementSequence l l)+type instance Atts (Synthesized ConstantFold) (AST.Expression λ l) = SynCFExp λ l+type instance Atts (Synthesized ConstantFold) (AST.Element l l) = SynCF' (AST.Element l l)+type instance Atts (Synthesized ConstantFold) (AST.Value l l) = SynCF' (AST.Value l l)+type instance Atts (Synthesized ConstantFold) (AST.Designator l l) = SynCFDesignator l+type instance Atts (Synthesized ConstantFold) (AST.Statement l l) = SynCF' (AST.Statement l l)+type instance Atts (Synthesized ConstantFold) (AST.Case l l) = SynCF' (AST.Case l l)+type instance Atts (Synthesized ConstantFold) (AST.CaseLabels l l) = SynCF' (AST.CaseLabels l l)+type instance Atts (Synthesized ConstantFold) (AST.ConditionalBranch l l) = SynCF' (AST.ConditionalBranch l l)+type instance Atts (Synthesized ConstantFold) (AST.WithAlternative l l) = SynCF' (AST.WithAlternative l l) -type instance Atts (Inherited ConstantFold) (Modules l _ _) = InhCFRoot l-type instance Atts (Inherited ConstantFold) (AST.Module λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Declaration λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.ProcedureHeading λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Block λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.FormalParameters λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.FPSection λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Type λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.FieldList λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.StatementSequence λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Expression λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Element λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Value l l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Designator λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Statement λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.Case λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.CaseLabels λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.ConditionalBranch λ l _ _) = InhCF l-type instance Atts (Inherited ConstantFold) (AST.WithAlternative λ l _ _) = InhCF l+type instance Atts (Inherited ConstantFold) (Modules l) = InhCFRoot l+type instance Atts (Inherited ConstantFold) (AST.Module λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Declaration λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.ProcedureHeading λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Block λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.FormalParameters λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.FPSection λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Type λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.FieldList λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.StatementSequence λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Expression λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Element λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Value l l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Designator λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Statement λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.Case λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.CaseLabels λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.ConditionalBranch λ l) = InhCF l+type instance Atts (Inherited ConstantFold) (AST.WithAlternative λ l) = InhCF l  type SynCF' node = SynCF (node Placed Placed) type SynCFMod' l node = SynCFMod l (node Placed Placed)@@ -180,19 +177,19 @@ -- * Rules  instance {-# overlaps #-} Ord (Abstract.QualIdent l) =>-                          Synthesizer (Auto ConstantFold) (Modules l) Sem Placed where+                          Synthesizer (Auto ConstantFold) (Modules l) where    synthesis _ (_, Modules self) inheritance (Modules ms) =       SynCFRoot{modulesFolded= (Modules (getMapped . foldedMod . syn <$> ms))}  instance {-# overlaps #-} Ord (Abstract.QualIdent l) =>-                          Bequether (Auto ConstantFold) (Modules l) Sem Placed where+                          Bequether (Auto ConstantFold) (Modules l) where    bequest _ (_, Modules self) inheritance (Modules ms) = Modules (Map.mapWithKey moduleInheritance self)       where moduleInheritance name mod = Inherited InhCF{env= rootEnv inheritance <> foldMap (moduleEnv . syn) ms,                                                          currentModule= name}  instance {-# overlaps #-} (Abstract.Oberon l, Abstract.Nameable l, Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-                           Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l Sem Sem) ~ SynCFMod' l (Abstract.Block l l)) =>-                          Synthesizer (Auto ConstantFold) (AST.Module l l) Sem Placed where+                           Atts (Synthesized (Auto ConstantFold)) (Abstract.Block l l) ~ SynCFMod' l (Abstract.Block l l)) =>+                          Synthesizer (Auto ConstantFold) (AST.Module l l) where    synthesis _ (pos, AST.Module moduleName imports _body) inheritance (AST.Module _ _ body) =       SynCFMod{moduleEnv= exportedEnv,                folded= Mapped (pos, AST.Module moduleName imports $ getMapped $ foldedMod (syn body))}@@ -203,24 +200,24 @@                | otherwise = q  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem) ~ SynCFMod' l (Abstract.Declaration l l),-          Atts (Inherited (Auto ConstantFold)) (Abstract.StatementSequence l l Sem Sem) ~ InhCF l,-          Atts (Inherited (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem) ~ InhCF l) =>-         Bequether (Auto ConstantFold) (AST.Block l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l) ~ SynCFMod' l (Abstract.Declaration l l),+          Atts (Inherited (Auto ConstantFold)) (Abstract.StatementSequence l l) ~ InhCF l,+          Atts (Inherited (Auto ConstantFold)) (Abstract.Declaration l l) ~ InhCF l) =>+         Bequether (Auto ConstantFold) (AST.Block l l) where    bequest _ (pos, AST.Block _decls _stats) inheritance (AST.Block decls stats) =       AST.Block (pure $ Inherited localEnv) (pure $ Inherited localEnv)       where newEnv = Map.unions (moduleEnv . syn <$> decls)             localEnv = InhCF (newEnv `Map.union` env inheritance) (currentModule inheritance)  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, v ~ Abstract.Value l l Placed Placed, Ord k,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l Sem Sem)+          Atts (Synthesized (Auto ConstantFold)) (Abstract.Declaration l l)           ~ SynCFMod' l (Abstract.Declaration l l)) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Block l l) Sem Placed where+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Block l l) where    synthesizedField _ _ (_, AST.Block{}) _ (AST.Block decls _stats) = Map.unions (moduleEnv . syn <$> decls)  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, v ~ Abstract.Value l l Placed Placed, Ord k,-          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l Sem Sem) ~ SynCFExp l l) =>-         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration l l) Sem Placed where+          Atts (Synthesized (Auto ConstantFold)) (Abstract.ConstExpression l l) ~ SynCFExp l l) =>+         SynthesizedField "moduleEnv" (Map k (Maybe v)) (Auto ConstantFold) (AST.Declaration l l) where    synthesizedField _ _ (_, AST.ConstantDeclaration namedef _) _ (AST.ConstantDeclaration _ expression) =       Map.singleton (Abstract.nonQualIdent $ Abstract.getIdentDefName namedef)                     ((snd <$>) . foldedValue $ syn expression)@@ -230,10 +227,10 @@    (Abstract.Oberon λ, Abstract.Nameable l, Ord (Abstract.QualIdent l),     Abstract.Value l ~ AST.Value l,     Pretty (AST.Value l l Identity Identity),-    Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l Sem Sem) ~ SynCFExp l l,-    Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l Sem Sem) ~ SynCF' (Abstract.Element l l),-    Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l Sem Sem) ~ SynCFDesignator l) =>-   Synthesizer (Auto ConstantFold) (AST.Expression λ l) Sem Placed where+    Atts (Synthesized (Auto ConstantFold)) (Abstract.Expression l l) ~ SynCFExp l l,+    Atts (Synthesized (Auto ConstantFold)) (Abstract.Element l l) ~ SynCF' (Abstract.Element l l),+    Atts (Synthesized (Auto ConstantFold)) (Abstract.Designator l l) ~ SynCFDesignator l) =>+   Synthesizer (Auto ConstantFold) (AST.Expression λ l) where    synthesis _ (pos@(start, ls, end), AST.Relation op _ _) _ (AST.Relation _op left right) =       case join (compareValues <$> foldedValue (syn left) <*> foldedValue (syn right))       of Just value -> literalSynthesis value@@ -469,7 +466,7 @@          foldValues _ _ = Nothing  instance (Ord (Abstract.QualIdent l), v ~ Abstract.Value l l Placed Placed) =>-         SynthesizedField "designatorValue" (Maybe (Placed v)) (Auto ConstantFold) (AST.Designator l l) Sem Placed where+         SynthesizedField "designatorValue" (Maybe (Placed v)) (Auto ConstantFold) (AST.Designator l l) where    synthesizedField _ _ (pos, AST.Variable q) inheritance _ = (,) pos <$> join (Map.lookup q $ env inheritance)    synthesizedField _ _ _ _ _ = Nothing 
src/Language/Oberon/Resolver.hs view
@@ -17,6 +17,7 @@ import Data.Either.Validation (Validation(..), validationToEither) import Data.Foldable (toList) import Data.Functor.Compose (Compose(..))+import Data.Functor.Identity (Identity) import qualified Data.Kind as K (Type) import Data.List.NonEmpty (NonEmpty(..)) import qualified Data.List.NonEmpty as NonEmpty@@ -28,6 +29,7 @@ import Language.Haskell.TH (appT, conT, varT, newName)  import qualified Text.Parser.Input.Position as Position+import qualified Rank2 import qualified Rank2.TH import qualified Transformation import qualified Transformation.Deep as Deep@@ -554,6 +556,14 @@    of (_, [(ws, x)]) -> Success ((start, ws, end), x)       (errors, []) -> Failure (inv (sconcat $ NonEmpty.fromList errors) :| [])       (_, multi) -> Failure (amb (snd <$> multi) :| [])++instance (Rank2.Functor (g Grammar.NodeWrap), Deep.Functor (Rank2.Map Grammar.NodeWrap NodeWrap) g) =>+         Full.Functor (Rank2.Map Grammar.NodeWrap NodeWrap) g where+  (<$>) = Full.mapUpDefault++instance (Rank2.Functor (g Placed), Deep.Functor (Rank2.Map Placed Identity) g) =>+         Full.Functor (Rank2.Map Placed Identity) g where+  (<$>) = Full.mapUpDefault  $(Rank2.TH.deriveFunctor ''DeclarationRHS) $(Rank2.TH.deriveFoldable ''DeclarationRHS)
src/Language/Oberon/TypeChecker.hs view
@@ -152,8 +152,6 @@  data TypeCheck = TypeCheck -type Sem = Semantics (Auto TypeCheck)- data InhTCRoot l = InhTCRoot{rootEnv :: Environment l}  data InhTC l = InhTC{env :: Environment l}@@ -228,66 +226,68 @@    foldMap t ~(Modules ms) = getConst (foldMap (t Transformation.$) ms)  instance Rank2.Functor (Modules l f') where-   f <$> ~(Modules ms) = Modules (f <$> ms)+   f <$> Modules ms = Modules (f <$> ms) instance Rank2.Foldable (Modules l f) where-   foldMap f ~(Modules ms) = foldMap f ms+   foldMap f (Modules ms) = foldMap f ms+instance Rank2.Traversable (Modules l f) where+   traverse f (Modules ms) = Modules <$> traverse f ms instance Rank2.Apply (Modules l f') where    ~(Modules fs) <*> ~(Modules ms) = Modules (Map.intersectionWith Rank2.apply fs ms)  -- * Boring attribute types-type instance Atts (Inherited TypeCheck) (Modules l _ _) = InhTCRoot l-type instance Atts (Synthesized TypeCheck) (Modules l _ _) = SynTCMods l-type instance Atts (Inherited TypeCheck) (AST.Module l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Module l l _ _) = SynTCMod l-type instance Atts (Inherited TypeCheck) (AST.Declaration l l _ _) = InhTCDecl l-type instance Atts (Synthesized TypeCheck) (AST.Declaration l l _ _) = SynTCMod l-type instance Atts (Inherited TypeCheck) (AST.ProcedureHeading l l _ _) = InhTCDecl l-type instance Atts (Synthesized TypeCheck) (AST.ProcedureHeading l l _ _) = SynTCHead l-type instance Atts (Inherited TypeCheck) (AST.Block l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Block l l _ _) = SynTCMod l-type instance Atts (Inherited TypeCheck) (AST.FormalParameters l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.FormalParameters l l _ _) = SynTCSig l-type instance Atts (Inherited TypeCheck) (AST.FPSection l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.FPSection l l _ _) = SynTCSec l-type instance Atts (Inherited TypeCheck) (AST.Type l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Type l l _ _) = SynTCType l-type instance Atts (Inherited TypeCheck) (AST.FieldList l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.FieldList l l _ _) = SynTCFields l-type instance Atts (Inherited TypeCheck) (AST.StatementSequence l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.StatementSequence l l _ _) = SynTC l-type instance Atts (Inherited TypeCheck) (AST.Expression l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Expression l l _ _) = SynTCExp l-type instance Atts (Inherited TypeCheck) (AST.Element l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Element l l _ _) = SynTCExp l-type instance Atts (Inherited TypeCheck) (AST.Value l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Value l l _ _) = SynTCExp l-type instance Atts (Inherited TypeCheck) (AST.Designator l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Designator l l _ _) = SynTCDes l-type instance Atts (Inherited TypeCheck) (AST.Statement l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.Statement l l _ _) = SynTC l-type instance Atts (Inherited TypeCheck) (AST.ConditionalBranch l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.ConditionalBranch l l _ _) = SynTC l-type instance Atts (Inherited TypeCheck) (AST.Case l l _ _) = InhTCExp l-type instance Atts (Synthesized TypeCheck) (AST.Case l l _ _) = SynTC l-type instance Atts (Inherited TypeCheck) (AST.CaseLabels l l _ _) = InhTCExp l-type instance Atts (Synthesized TypeCheck) (AST.CaseLabels l l _ _) = SynTC l-type instance Atts (Inherited TypeCheck) (AST.WithAlternative l l _ _) = InhTC l-type instance Atts (Synthesized TypeCheck) (AST.WithAlternative l l _ _) = SynTC l+type instance Atts (Inherited TypeCheck) (Modules l) = InhTCRoot l+type instance Atts (Synthesized TypeCheck) (Modules l) = SynTCMods l+type instance Atts (Inherited TypeCheck) (AST.Module l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Module l l) = SynTCMod l+type instance Atts (Inherited TypeCheck) (AST.Declaration l l) = InhTCDecl l+type instance Atts (Synthesized TypeCheck) (AST.Declaration l l) = SynTCMod l+type instance Atts (Inherited TypeCheck) (AST.ProcedureHeading l l) = InhTCDecl l+type instance Atts (Synthesized TypeCheck) (AST.ProcedureHeading l l) = SynTCHead l+type instance Atts (Inherited TypeCheck) (AST.Block l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Block l l) = SynTCMod l+type instance Atts (Inherited TypeCheck) (AST.FormalParameters l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.FormalParameters l l) = SynTCSig l+type instance Atts (Inherited TypeCheck) (AST.FPSection l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.FPSection l l) = SynTCSec l+type instance Atts (Inherited TypeCheck) (AST.Type l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Type l l) = SynTCType l+type instance Atts (Inherited TypeCheck) (AST.FieldList l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.FieldList l l) = SynTCFields l+type instance Atts (Inherited TypeCheck) (AST.StatementSequence l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.StatementSequence l l) = SynTC l+type instance Atts (Inherited TypeCheck) (AST.Expression l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Expression l l) = SynTCExp l+type instance Atts (Inherited TypeCheck) (AST.Element l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Element l l) = SynTCExp l+type instance Atts (Inherited TypeCheck) (AST.Value l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Value l l) = SynTCExp l+type instance Atts (Inherited TypeCheck) (AST.Designator l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Designator l l) = SynTCDes l+type instance Atts (Inherited TypeCheck) (AST.Statement l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.Statement l l) = SynTC l+type instance Atts (Inherited TypeCheck) (AST.ConditionalBranch l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.ConditionalBranch l l) = SynTC l+type instance Atts (Inherited TypeCheck) (AST.Case l l) = InhTCExp l+type instance Atts (Synthesized TypeCheck) (AST.Case l l) = SynTC l+type instance Atts (Inherited TypeCheck) (AST.CaseLabels l l) = InhTCExp l+type instance Atts (Synthesized TypeCheck) (AST.CaseLabels l l) = SynTC l+type instance Atts (Inherited TypeCheck) (AST.WithAlternative l l) = InhTC l+type instance Atts (Synthesized TypeCheck) (AST.WithAlternative l l) = SynTC l  -- * Rules -instance Ord (Abstract.QualIdent l) => Bequether (Auto TypeCheck) (Modules l) Sem Placed where+instance Ord (Abstract.QualIdent l) => Bequether (Auto TypeCheck) (Modules l) where    bequest _ (_, Modules self) inheritance (Modules ms) =      Modules (Map.mapWithKey moduleInheritance self)      where moduleInheritance name mod = Inherited InhTC{env= rootEnv inheritance <> foldMap (moduleEnv . syn) ms}-instance Ord (Abstract.QualIdent l) => Synthesizer (Auto TypeCheck) (Modules l) Sem Placed where+instance Ord (Abstract.QualIdent l) => Synthesizer (Auto TypeCheck) (Modules l) where   synthesis _ _ _ (Modules ms) = SynTCMods{errors= Map.foldMapWithKey moduleErrors ms}      where moduleErrors name (Synthesized SynTCMod{errors= Folded errs}) =               Folded [Error name pos t | Error () pos t <- errs]  instance (Abstract.Oberon l, Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Block l l Sem Sem) ~ SynTCMod l) =>-         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Module l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Block l l) ~ SynTCMod l) =>+         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Module l l) where    synthesizedField _ _ (pos, AST.Module moduleName imports body) _inheritance (AST.Module _ _ body') = exportedEnv       where exportedEnv = exportNominal <$> Map.mapKeysMonotonic export (moduleEnv $ syn body')             export q@@ -309,13 +309,13 @@             exportNominal' t = t  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Inherited (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.ProcedureHeading l l Sem Sem) ~ InhTCDecl l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.Block l l Sem Sem) ~ InhTC l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.ProcedureHeading l l Sem Sem) ~ SynTCHead l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.FormalParameters l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.ConstExpression l l Sem Sem) ~ InhTC l) =>-         Bequether (Auto TypeCheck) (AST.Declaration l l) Sem Placed where+          Atts (Inherited (Auto TypeCheck)) (Abstract.Type l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.ProcedureHeading l l) ~ InhTCDecl l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.Block l l) ~ InhTC l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.ProcedureHeading l l) ~ SynTCHead l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.FormalParameters l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.ConstExpression l l) ~ InhTC l) =>+         Bequether (Auto TypeCheck) (AST.Declaration l l) where    bequest _ (pos, AST.ProcedureDeclaration{})            inheritance@InhTCDecl{env= declEnv} (AST.ProcedureDeclaration heading _body) =       AST.ProcedureDeclaration (Inherited inheritance) (Inherited bodyInherited)@@ -323,12 +323,12 @@    bequest t local inheritance synthesized = AG.bequestDefault t local inheritance synthesized  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l Sem Sem) ~ SynTCMod l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ SynTCType l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l Sem Sem) ~ SynTCSig l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.ProcedureHeading l l Sem Sem) ~ SynTCHead l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l Sem Sem) ~ SynTCExp l) =>-         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Declaration l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l) ~ SynTCMod l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l) ~ SynTCType l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l) ~ SynTCSig l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.ProcedureHeading l l) ~ SynTCHead l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l) ~ SynTCExp l) =>+         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Declaration l l) where    synthesizedField _ _ (pos, AST.ConstantDeclaration namedef _) _ (AST.ConstantDeclaration _ expression) =       Map.singleton (Abstract.nonQualIdent $ Abstract.getIdentDefName namedef) (inferredType $ syn expression)    synthesizedField _ _ (pos, AST.TypeDeclaration namedef _) _ (AST.TypeDeclaration _ definition) =@@ -350,17 +350,17 @@       foldMap (Map.singleton (Abstract.nonQualIdent $ Abstract.getIdentDefName namedef) . signatureType . syn) sig  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ SynTCType l) =>+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l) ~ SynTCType l) =>          SynthesizedField "pointerTargets" (Folded (Map AST.Ident AST.Ident)) (Auto TypeCheck)-                                           (AST.Declaration l l) Sem Placed where+                                           (AST.Declaration l l) where    synthesizedField _ _ (pos, AST.TypeDeclaration namedef _) _ (AST.TypeDeclaration _ definition) =       foldMap (Folded . Map.singleton name) (pointerTarget $ syn definition)       where name = Abstract.getIdentDefName namedef    synthesizedField _ _ _ _ _ = mempty  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l Sem Sem) ~ SynTCSig l) =>-         Synthesizer (Auto TypeCheck) (AST.ProcedureHeading l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l) ~ SynTCSig l) =>+         Synthesizer (Auto TypeCheck) (AST.ProcedureHeading l l) where    synthesis _ (pos, AST.ProcedureHeading indirect namedef _sig) _inheritance (AST.ProcedureHeading _indirect _ sig) =       SynTCHead{errors= foldMap ((.errors) . syn) sig,                 outsideEnv= Map.singleton (Abstract.nonQualIdent name) $@@ -390,10 +390,10 @@                      | otherwise -> Folded [Error () pos (NonRecordType t)]  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l Sem Sem) ~ SynTCMod l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.Declaration l l Sem Sem) ~ InhTCDecl l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ InhTC l) =>-         Bequether (Auto TypeCheck) (AST.Block l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l) ~ SynTCMod l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.Declaration l l) ~ InhTCDecl l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ InhTC l) =>+         Bequether (Auto TypeCheck) (AST.Block l l) where    bequest _ (pos, AST.Block{}) inheritance@InhTC{env} (AST.Block declarations _statements) =       AST.Block (pure $ Inherited InhTCDecl{env= localEnv,                                             pointerTargets= getFolded pointers})@@ -404,13 +404,13 @@             pointers= foldMap (\Synthesized{syn= SynTCMod{pointerTargets= ptrs}}-> ptrs) declarations  instance (Abstract.Nameable l, k ~ Abstract.QualIdent l, Ord k, Show k,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l Sem Sem) ~ SynTCMod l) =>-         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Block l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l) ~ SynTCMod l) =>+         SynthesizedField "moduleEnv" (Map k (Type l)) (Auto TypeCheck) (AST.Block l l) where    synthesizedField _ _ (pos, AST.Block{}) _inheritance (AST.Block declarations _statements) = newEnv declarations  newEnv :: (Abstract.Nameable l, Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-           Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l Sem Sem) ~ SynTCMod l) =>-          ZipList (Synthesized (Auto TypeCheck) (Abstract.Declaration l l Sem Sem)) -> Environment l+           Atts (Synthesized (Auto TypeCheck)) (Abstract.Declaration l l) ~ SynTCMod l) =>+          ZipList (Synthesized (Auto TypeCheck) (Abstract.Declaration l l sem sem)) -> Environment l newEnv declarations = Map.unionsWith mergeTypeBoundProcedures (moduleEnv . syn <$> declarations)    where mergeTypeBoundProcedures (NominalType q (Just t1)) t2             | Abstract.getNonQualIdentName q == Just "" = mergeTypeBoundProcedures t1 t2@@ -433,8 +433,8 @@          mergeTypeBoundProcedures t1 t2 = error (take 90 $ show t1)              instance (Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto TypeCheck)) (Abstract.FPSection l l Sem Sem) ~ SynTCSec l) =>-         Synthesizer (Auto TypeCheck) (AST.FormalParameters l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.FPSection l l) ~ SynTCSec l) =>+         Synthesizer (Auto TypeCheck) (AST.FormalParameters l l) where    synthesis _ (pos, AST.FormalParameters sections returnType) InhTC{env}              (AST.FormalParameters sections' _) =       SynTCSig{errors= foldMap ((.errors) . syn) sections' <> foldMap typeRefErrors returnType,@@ -446,19 +446,19 @@                | otherwise = Folded [Error () pos (UnknownName q)]  instance (Abstract.Wirthy l, Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ SynTCType l) =>-         Synthesizer (Auto TypeCheck) (AST.FPSection l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l) ~ SynTCType l) =>+         Synthesizer (Auto TypeCheck) (AST.FPSection l l) where    synthesis _ (pos, AST.FPSection var names _typeDef) _inheritance (AST.FPSection _var _names typeDef) =       SynTCSec{errors= (syn typeDef).errors,                sectionParameters= (var, definedType (syn typeDef)) <$ names,                sectionEnv= Map.fromList (flip (,) (definedType $ syn typeDef) . Abstract.nonQualIdent <$> names)}  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l Sem Sem) ~ SynTCSig l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.FieldList l l Sem Sem) ~ SynTCFields l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ SynTCType l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l Sem Sem) ~ SynTCExp l) =>-         Synthesizer (Auto TypeCheck) (AST.Type l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.FormalParameters l l) ~ SynTCSig l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.FieldList l l) ~ SynTCFields l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l) ~ SynTCType l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l) ~ SynTCExp l) =>+         Synthesizer (Auto TypeCheck) (AST.Type l l) where    synthesis _ (pos, AST.TypeReference q) InhTC{env} _ =        SynTCType{errors= if Map.member q env then mempty else Folded [Error () pos (UnknownName q)],                 typeName= Abstract.getNonQualIdentName q,@@ -500,20 +500,20 @@                 pointerTarget= Nothing,                 definedType= maybe (ProcedureType False [] Nothing) (signatureType . syn) signature'} -instance (Abstract.Nameable l, Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l Sem Sem) ~ SynTCType l) =>-         SynthesizedField "fieldEnv" (Map AST.Ident (Type l)) (Auto TypeCheck) (AST.FieldList l l) Sem Placed where+instance (Abstract.Nameable l, Atts (Synthesized (Auto TypeCheck)) (Abstract.Type l l) ~ SynTCType l) =>+         SynthesizedField "fieldEnv" (Map AST.Ident (Type l)) (Auto TypeCheck) (AST.FieldList l l) where    synthesizedField _ _ (_, AST.FieldList names _declaredType) _inheritance (AST.FieldList _names declaredType) =       foldMap (\name-> Map.singleton (Abstract.getIdentDefName name) (definedType $ syn declaredType)) names  instance (Abstract.Wirthy l, Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.ConditionalBranch l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.Case l l Sem Sem) ~ InhTCExp l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.WithAlternative l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ InhTC l,-          Atts (Inherited (Auto TypeCheck)) (Abstract.Designator l l Sem Sem) ~ InhTC l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l) =>-         Bequether (Auto TypeCheck) (AST.Statement l l) Sem Placed where+          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.ConditionalBranch l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.Case l l) ~ InhTCExp l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.WithAlternative l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.Expression l l) ~ InhTC l,+          Atts (Inherited (Auto TypeCheck)) (Abstract.Designator l l) ~ InhTC l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l) =>+         Bequether (Auto TypeCheck) (AST.Statement l l) where    bequest _ (_pos, AST.CaseStatement{}) i@InhTC{env} (AST.CaseStatement value _branches _fallback) =       AST.CaseStatement (Inherited i) (pure $ Inherited InhTCExp{env= env,                                                                  expectedType= inferredType $ syn value})@@ -523,13 +523,13 @@                            expectedType= error "No statement except CASE needs expectedType"} statement  instance {-# overlaps #-} (Abstract.Wirthy l, Abstract.Nameable l, Ord (Abstract.QualIdent l),-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ SynTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l Sem Sem) ~ SynTCDes l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Case l l Sem Sem) ~ SynTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.ConditionalBranch l l Sem Sem) ~ SynTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.WithAlternative l l Sem Sem) ~ SynTC l) =>-                          Synthesizer (Auto TypeCheck) (AST.Statement l l) Sem Placed where+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ SynTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l) ~ SynTCDes l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Case l l) ~ SynTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.ConditionalBranch l l) ~ SynTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.WithAlternative l l) ~ SynTC l) =>+                          Synthesizer (Auto TypeCheck) (AST.Statement l l) where    synthesis t (pos, _) InhTC{} statement@(AST.Assignment var value) =       {-# SCC "Assignment" #-}       SynTC{errors= assignmentCompatible pos (designatorType $ syn var) (inferredType $ syn value)@@ -564,9 +564,9 @@    synthesis t self _ statement = SynTC{errors= AG.foldedField (Proxy :: Proxy "errors") t statement}  instance (Abstract.Nameable l, Ord (Abstract.QualIdent l),-          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ InhTC l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ SynTC l) =>-         Attribution (Auto TypeCheck) (AST.WithAlternative l l) Sem Placed where+          Atts (Inherited (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ InhTC l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ SynTC l) =>+         AG.At (Auto TypeCheck) (AST.WithAlternative l l) where    attribution _ (pos, AST.WithAlternative var subtype _body)                (Inherited InhTC{env},                 AST.WithAlternative _var _subtype body) =@@ -579,15 +579,15 @@        AST.WithAlternative var subtype (Inherited $ InhTC $ maybe id (Map.insert var) (Map.lookup subtype env) env))  instance (Abstract.Nameable l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l,-          Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l Sem Sem) ~ SynTC l) =>-         Synthesizer (Auto TypeCheck) (AST.ConditionalBranch l l) Sem Placed where+          Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l,+          Atts (Synthesized (Auto TypeCheck)) (Abstract.StatementSequence l l) ~ SynTC l) =>+         Synthesizer (Auto TypeCheck) (AST.ConditionalBranch l l) where    synthesis _ (pos, _) _inheritance (AST.ConditionalBranch condition body) =       SynTC{errors= booleanExpressionErrors pos (syn condition) <> (syn body).errors}  instance {-# overlaps #-} (Abstract.Nameable l, Eq (Abstract.QualIdent l),-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l Sem Sem) ~ SynTCExp l) =>-                          Synthesizer (Auto TypeCheck) (AST.CaseLabels l l) Sem Placed where+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.ConstExpression l l) ~ SynTCExp l) =>+                          Synthesizer (Auto TypeCheck) (AST.CaseLabels l l) where    synthesis _ (pos, _) inheritance (AST.SingleLabel value) =       SynTC{errors= assignmentCompatibleIn inheritance pos (inferredType $ syn value)}    synthesis _ (pos, _) inheritance (AST.LabelRange start end) =@@ -595,12 +595,12 @@                     <> assignmentCompatibleIn inheritance pos (inferredType $ syn end)}  instance {-# overlaps #-} (Abstract.Nameable l, Ord (Abstract.QualIdent l),-                           Atts (Inherited (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ InhTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Element l l Sem Sem) ~ SynTCExp l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Value l l Sem Sem) ~ SynTCExp l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l Sem Sem) ~ SynTCDes l) =>-                          Synthesizer (Auto TypeCheck) (AST.Expression l l) Sem Placed where+                           Atts (Inherited (Auto TypeCheck)) (Abstract.Expression l l) ~ InhTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Element l l) ~ SynTCExp l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Value l l) ~ SynTCExp l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l) ~ SynTCDes l) =>+                          Synthesizer (Auto TypeCheck) (AST.Expression l l) where    synthesis _ (pos, AST.Relation op _ _) InhTC{} (AST.Relation _op left right) =       SynTCExp{errors= case (syn left).errors <> (syn right).errors                        of Folded []@@ -707,7 +707,7 @@       SynTCExp{errors= booleanExpressionErrors pos (syn expr),                inferredType= BuiltinType "BOOLEAN"}   -instance Abstract.Wirthy l => SynthesizedField "inferredType" (Type l) (Auto TypeCheck) (AST.Value l l) Sem Placed where+instance Abstract.Wirthy l => SynthesizedField "inferredType" (Type l) (Auto TypeCheck) (AST.Value l l) where    synthesizedField _ _ (_, AST.Integer x) _ _  = IntegerType (fromIntegral x)    synthesizedField _ _ (_, AST.Real x) _ _     = BuiltinType "REAL"    synthesizedField _ _ (_, AST.Boolean x) _ _  = BuiltinType "BOOLEAN"@@ -716,21 +716,21 @@    synthesizedField _ _ (_, AST.Nil) _ _        = NilType    synthesizedField _ _ (_, AST.Builtin x) _ _  = BuiltinType x -instance (Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l) =>-         SynthesizedField "errors" (Folded [Error () l]) (Auto TypeCheck) (AST.Element l l) Sem Placed where+instance (Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l) =>+         SynthesizedField "errors" (Folded [Error () l]) (Auto TypeCheck) (AST.Element l l) where    synthesizedField _ _ (pos, _) _inheritance (AST.Element expr) = integerExpressionErrors pos (syn expr)    synthesizedField _ _ (pos, _) _inheritance (AST.Range low high) = integerExpressionErrors pos (syn high)                                                                      <> integerExpressionErrors pos (syn low) -instance SynthesizedField "inferredType" (Type l) (Auto TypeCheck) (AST.Element l l) Sem Placed where+instance SynthesizedField "inferredType" (Type l) (Auto TypeCheck) (AST.Element l l) where    synthesizedField _ _ _ _ _ = BuiltinType "SET"  instance {-# overlaps #-} (Abstract.Nameable l, Abstract.Oberon l, Ord (Abstract.QualIdent l),                            Show (Abstract.QualIdent l),-                           Atts (Inherited (Auto TypeCheck)) (Abstract.Designator l l Sem Sem) ~ InhTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l Sem Sem) ~ SynTCExp l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l Sem Sem) ~ SynTCDes l) =>-                          Synthesizer (Auto TypeCheck) (AST.Designator l l) Sem Placed where+                           Atts (Inherited (Auto TypeCheck)) (Abstract.Designator l l) ~ InhTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Expression l l) ~ SynTCExp l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Designator l l) ~ SynTCDes l) =>+                          Synthesizer (Auto TypeCheck) (AST.Designator l l) where    synthesis _ (pos, AST.Variable q) InhTC{env} _ =       SynTCDes{errors= case designatorType                        of Nothing -> Folded [Error () pos (UnknownName q)]@@ -958,15 +958,9 @@ t1 `targetExtends` t2 | t1 == t2 = True t1 `targetExtends` t2 = False -instance Transformation.Transformation (Auto TypeCheck) where-   type Domain (Auto TypeCheck) = Placed-   type Codomain (Auto TypeCheck) = Semantics (Auto TypeCheck)--instance AG.Revelation (Auto TypeCheck) where-   reveal (Auto TypeCheck) = snd--instance Ord (Abstract.QualIdent l) => Transformation.At (Auto TypeCheck) (Modules l Sem Sem) where-   ($) = AG.applyDefault snd+instance Attribution TypeCheck where+   type Origin TypeCheck = Placed+   unwrap TypeCheck = snd  -- * Unsafe Rank2 AST instances @@ -978,14 +972,14 @@ -- 'Map' keyed by module name. The first argument's value is typically 'predefined' or 'predefined2'. checkModules :: forall l. (Abstract.Oberon l, Abstract.Nameable l,                            Ord (Abstract.QualIdent l), Show (Abstract.QualIdent l),-                           Atts (Inherited (Auto TypeCheck)) (Abstract.Block l l Sem Sem) ~ InhTC l,-                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Block l l Sem Sem) ~ SynTCMod l,-                           Full.Functor (Auto TypeCheck) (Abstract.Block l l))+                           Atts (Inherited (Auto TypeCheck)) (Abstract.Block l l) ~ InhTC l,+                           Atts (Synthesized (Auto TypeCheck)) (Abstract.Block l l) ~ SynTCMod l,+                           Full.Functor (AG.Knit (Auto TypeCheck)) (Abstract.Block l l))              => Environment l -> Map AST.Ident (Placed (AST.Module l l Placed Placed)) -> [Error AST.Ident l] checkModules predef modules =-   getFolded ((syn (Transformation.apply (Auto TypeCheck) (wrap $ Auto TypeCheck Deep.<$> Modules modules)-                           `Rank2.apply`-                           Inherited (InhTCRoot predef))).errors)+   getFolded ((syn ((AG.Knit (Auto TypeCheck) Full.<$> wrap (Modules modules))+                    `Rank2.apply`+                    Inherited (InhTCRoot predef))).errors)    where wrap = (,) (0, Trailing [], 0)  predefined, predefined2 :: (Abstract.Wirthy l, Ord (Abstract.QualIdent l)) => Environment l