hssqlppp-0.0.6: Database/HsSqlPpp/TypeChecking/TypeChecker.lhs
Copyright 2009 Jake Wheat
This is the public module for the type checking functionality.
> {- | Contains the data types and functions for annotating
> an ast and working with annotated trees, including the
> representations of SQL data types.
>
> Annotations:
>
> * are attached to some of the ast node data types, but not all of them (yet?);
>
> * types annotations are attached to most nodes;
>
> * type errors are attached to the lowest down node that the type error is detected at;
>
> * nodes who fail the type check or whose type depends on a node with a type error are
> given the type 'TypeCheckFailed';
>
> * each statement has an additional 'StatementInfo' annotation attached to it;
>
> * the parser fills in the source position nodes, but doesn't do a great job yet.
>
> -}
> module Database.HsSqlPpp.TypeChecking.TypeChecker
> (
> -- * Annotation type
> Annotation
> ,AnnotationElement(..)
> -- * SQL types
> ,Type (..)
> ,PseudoType (..)
> -- * Type errors
> ,TypeError (..)
> -- * Statement info
> -- | This is the main annotation attached to each statement. Early days at the moment
> -- but will be expanded to provide any type errors lurking inside a statement, any useful
> -- types, e.g. the types of each select and subselect/sub query in a statement,
> -- any changes to the catalog the statement makes, and possibly much more information.
> ,StatementInfo(..)
> -- * Additional types
> -- | Used in Scope and type checking.
> ,DomainDefinition
> ,FunctionPrototype
> ,CastContext
> ,CompositeDef
> ,CompositeFlavour
> -- * Annotation functions
> ,annotateAst
> ,annotateAstScope
> ,annotateExpression
> -- * Annotated tree utils
> ,getTopLevelTypes
> ,getTopLevelInfos
> ,getTypeErrors
> ,stripAnnotations
> ) where
> import Database.HsSqlPpp.TypeChecking.AstInternal
> import Database.HsSqlPpp.TypeChecking.TypeType
> import Database.HsSqlPpp.TypeChecking.AstAnnotation