hpython 0.1.0.1 → 0.2
raw patch · 45 files changed
+1780/−974 lines, 45 filesdep +generic-lensPVP ok
version bump matches the API change (PVP)
Dependencies added: generic-lens
API changes (from Hackage documentation)
- Language.Python.Internal.Syntax.IR: [_unsafeExprAnn] :: Expr a -> a
- Language.Python.Optics.Newlines: instance Language.Python.Optics.Newlines.HasNewlines (e a) => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Import.ImportAs e v a)
- Language.Python.Syntax.Expr: exprAnn :: Lens' (Expr v a) a
- Language.Python.Syntax.Import: instance (GHC.Classes.Eq a, GHC.Classes.Eq (e a)) => GHC.Classes.Eq (Language.Python.Syntax.Import.ImportAs e v a)
- Language.Python.Syntax.Import: instance (GHC.Show.Show a, GHC.Show.Show (e a)) => GHC.Show.Show (Language.Python.Syntax.Import.ImportAs e v a)
- Language.Python.Syntax.Import: instance Data.Foldable.Foldable e => Data.Foldable.Foldable (Language.Python.Syntax.Import.ImportAs e v)
- Language.Python.Syntax.Import: instance Data.Traversable.Traversable e => Data.Traversable.Traversable (Language.Python.Syntax.Import.ImportAs e v)
- Language.Python.Syntax.Import: instance GHC.Base.Functor e => GHC.Base.Functor (Language.Python.Syntax.Import.ImportAs e v)
- Language.Python.Syntax.Import: instance Language.Python.Optics.Validated.Validated (Language.Python.Syntax.Import.ImportAs e)
- Language.Python.Syntax.Import: instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (e a) => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Import.ImportAs e v a)
- Language.Python.Syntax.ModuleNames: _moduleNameAnn :: ModuleName v a -> a
- Language.Python.Syntax.Punctuation: data Dot
+ Language.Python.Internal.Syntax.IR: [_exprAnn] :: Expr a -> a
+ Language.Python.Optics.Idents: _Idents :: forall v a l m. (HasIdents s, Generic (s v a), Generic (s '[] a), Rep (s v a) ~ l, Rep (s '[] a) ~ m, GHasIdents l m v a) => Traversal (s v a) (s '[] a) (Ident v a) (Ident '[] a)
+ Language.Python.Optics.Idents: class HasIdents s
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.GHasIdents a c v x, Language.Python.Optics.Idents.GHasIdents b d v x) => Language.Python.Optics.Idents.GHasIdents (a GHC.Generics.:*: b) (c GHC.Generics.:*: d) v x
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.GHasIdents a c v x, Language.Python.Optics.Idents.GHasIdents b d v x) => Language.Python.Optics.Idents.GHasIdents (a GHC.Generics.:+: b) (c GHC.Generics.:+: d) v x
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.HasIdents' a b v x, Language.Python.Optics.Idents.HasIdents' c d v x) => Language.Python.Optics.Idents.HasIdents' (Data.Either.Either a c) (Data.Either.Either b d) v x
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.HasIdents' a b v x, Language.Python.Optics.Idents.HasIdents' c d v x) => Language.Python.Optics.Idents.HasIdents' (a, c) (b, d) v x
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.HasIdents' a b v x, Language.Python.Optics.Idents.HasIdents' c d v x, Language.Python.Optics.Idents.HasIdents' e f v x) => Language.Python.Optics.Idents.HasIdents' (a, c, e) (b, d, f) v x
+ Language.Python.Optics.Idents: instance (Language.Python.Optics.Idents.HasIdents' a b v x, Language.Python.Optics.Idents.HasIdents' c d v x, Language.Python.Optics.Idents.HasIdents' e f v x, Language.Python.Optics.Idents.HasIdents' g h v x) => Language.Python.Optics.Idents.HasIdents' (a, c, e, g) (b, d, f, h) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.GHasIdents GHC.Generics.U1 GHC.Generics.U1 v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.GHasIdents GHC.Generics.V1 GHC.Generics.V1 v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.GHasIdents a b v x => Language.Python.Optics.Idents.GHasIdents (GHC.Generics.M1 i t a) (GHC.Generics.M1 i' t' b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.Arg
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.CompFor
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.CompIf
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.DictItem
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.Expr
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.ListItem
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.Param
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.SetItem
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.Subscript
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Expr.TupleItem
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Ident.Ident
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Import.ImportTargets
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Module.Module
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.ModuleNames.ModuleName
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.ModuleNames.RelativeModuleName
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.Block
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.CompoundStatement
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.Decorator
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.ExceptAs
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.SimpleStatement
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.SmallStatement
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.Statement
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.Suite
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents Language.Python.Syntax.Statement.WithItem
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents e => Language.Python.Optics.Idents.HasIdents (Language.Python.Syntax.Expr.Comprehension e)
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents n => Language.Python.Optics.Idents.HasIdents (Language.Python.Syntax.Import.ImportAs n)
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents s => Language.Python.Optics.Idents.GHasIdents (GHC.Generics.K1 i (s v a)) (GHC.Generics.K1 i (s '[] a)) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents s => Language.Python.Optics.Idents.HasIdents' (s v a) (s '[] a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Ann.Ann a) (Language.Python.Syntax.Ann.Ann a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.AugAssign.AugAssign a) (Language.Python.Syntax.AugAssign.AugAssign a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Comment.Comment a) (Language.Python.Syntax.Comment.Comment a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Numbers.FloatLiteral a) (Language.Python.Syntax.Numbers.FloatLiteral a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Numbers.ImagLiteral a) (Language.Python.Syntax.Numbers.ImagLiteral a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Numbers.IntLiteral a) (Language.Python.Syntax.Numbers.IntLiteral a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Operator.Binary.BinOp a) (Language.Python.Syntax.Operator.Binary.BinOp a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Operator.Unary.UnOp a) (Language.Python.Syntax.Operator.Unary.UnOp a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Punctuation.Semicolon a) (Language.Python.Syntax.Punctuation.Semicolon a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Strings.StringLiteral a) (Language.Python.Syntax.Strings.StringLiteral a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Whitespace.Blank a) (Language.Python.Syntax.Whitespace.Blank a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.Whitespace.Indents a) (Language.Python.Syntax.Whitespace.Indents a) v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' GHC.Types.Bool GHC.Types.Bool v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Punctuation.At Language.Python.Syntax.Punctuation.At v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Punctuation.Colon Language.Python.Syntax.Punctuation.Colon v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Punctuation.Comma Language.Python.Syntax.Punctuation.Comma v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Punctuation.Dot Language.Python.Syntax.Punctuation.Dot v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Punctuation.Equals Language.Python.Syntax.Punctuation.Equals v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Whitespace.Newline Language.Python.Syntax.Whitespace.Newline v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' Language.Python.Syntax.Whitespace.Whitespace Language.Python.Syntax.Whitespace.Whitespace v a
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.GHasIdents (GHC.Generics.K1 i a) (GHC.Generics.K1 i b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' (GHC.Base.NonEmpty a) (GHC.Base.NonEmpty b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' (GHC.Maybe.Maybe a) (GHC.Maybe.Maybe b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.CommaSep.CommaSep a) (Language.Python.Syntax.CommaSep.CommaSep b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.CommaSep.CommaSep1 a) (Language.Python.Syntax.CommaSep.CommaSep1 b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' (Language.Python.Syntax.CommaSep.CommaSep1' a) (Language.Python.Syntax.CommaSep.CommaSep1' b) v x
+ Language.Python.Optics.Idents: instance Language.Python.Optics.Idents.HasIdents' a b v x => Language.Python.Optics.Idents.HasIdents' [a] [b] v x
+ Language.Python.Optics.Newlines: instance Language.Python.Optics.Newlines.HasNewlines (e v a) => Language.Python.Optics.Newlines.HasNewlines (Language.Python.Syntax.Import.ImportAs e v a)
+ Language.Python.Parse: readExpr :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> IO (Validation (NonEmpty e) (Expr '[] SrcInfo))
+ Language.Python.Parse: readExprList :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> IO (Validation (NonEmpty e) (Expr '[] SrcInfo))
+ Language.Python.Parse: readModule :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> IO (Validation (NonEmpty e) (Module '[] SrcInfo))
+ Language.Python.Parse: readStatement :: (AsLexicalError e Char, AsTabError e SrcInfo, AsIncorrectDedent e SrcInfo, AsParseError e (PyToken SrcInfo), AsIRError e SrcInfo) => FilePath -> IO (Validation (NonEmpty e) (Statement '[] SrcInfo))
+ Language.Python.Syntax.Ann: Ann :: a -> Ann a
+ Language.Python.Syntax.Ann: [getAnn] :: Ann a -> a
+ Language.Python.Syntax.Ann: annot :: HasAnn s => Lens' (s a) (Ann a)
+ Language.Python.Syntax.Ann: annot_ :: HasAnn s => Lens' (s a) a
+ Language.Python.Syntax.Ann: class HasAnn s
+ Language.Python.Syntax.Ann: instance (Language.Python.Syntax.Ann.Ann a1 Data.Type.Equality.~ t) => Control.Lens.Wrapped.Rewrapped (Language.Python.Syntax.Ann.Ann a2) t
+ Language.Python.Syntax.Ann: instance Control.Lens.Wrapped.Wrapped (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: instance Data.Foldable.Foldable Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance Data.Functor.Classes.Eq1 Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance Data.Functor.Classes.Ord1 Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance Data.Functor.Classes.Show1 Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance Data.Traversable.Traversable Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance GHC.Base.Functor Language.Python.Syntax.Ann.Ann
+ Language.Python.Syntax.Ann: instance GHC.Base.Monoid a => GHC.Base.Monoid (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: instance GHC.Base.Semigroup a => GHC.Base.Semigroup (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: instance GHC.Classes.Eq a => GHC.Classes.Eq (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: instance GHC.Classes.Ord a => GHC.Classes.Ord (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: instance GHC.Show.Show a => GHC.Show.Show (Language.Python.Syntax.Ann.Ann a)
+ Language.Python.Syntax.Ann: newtype Ann a
+ Language.Python.Syntax.AugAssign: instance GHC.Generics.Generic (Language.Python.Syntax.AugAssign.AugAssign a)
+ Language.Python.Syntax.AugAssign: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.AugAssign.AugAssign
+ Language.Python.Syntax.CommaSep: instance GHC.Generics.Generic (Language.Python.Syntax.CommaSep.CommaSep a)
+ Language.Python.Syntax.CommaSep: instance GHC.Generics.Generic (Language.Python.Syntax.CommaSep.CommaSep1 a)
+ Language.Python.Syntax.CommaSep: instance GHC.Generics.Generic (Language.Python.Syntax.CommaSep.CommaSep1' a)
+ Language.Python.Syntax.Comment: instance GHC.Generics.Generic (Language.Python.Syntax.Comment.Comment a)
+ Language.Python.Syntax.Comment: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Comment.Comment
+ Language.Python.Syntax.Expr: [_exprAnn] :: Expr a -> Ann a
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.Arg v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.CompFor v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.CompIf v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.Comprehension e v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.DictItem v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.ListItem v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.Param v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.SetItem v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.Subscript v a)
+ Language.Python.Syntax.Expr: instance GHC.Generics.Generic (Language.Python.Syntax.Expr.TupleItem v a)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.Arg v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.CompFor v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.CompIf v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.Comprehension e v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.DictItem v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.Expr v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.ListItem v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.Param v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.SetItem v)
+ Language.Python.Syntax.Expr: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Expr.TupleItem v)
+ Language.Python.Syntax.Ident: instance GHC.Generics.Generic (Language.Python.Syntax.Ident.Ident v a)
+ Language.Python.Syntax.Ident: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Ident.Ident v)
+ Language.Python.Syntax.Import: instance (GHC.Classes.Eq a, GHC.Classes.Eq (e v a)) => GHC.Classes.Eq (Language.Python.Syntax.Import.ImportAs e v a)
+ Language.Python.Syntax.Import: instance (GHC.Show.Show a, GHC.Show.Show (e v a)) => GHC.Show.Show (Language.Python.Syntax.Import.ImportAs e v a)
+ Language.Python.Syntax.Import: instance Data.Foldable.Foldable (e v) => Data.Foldable.Foldable (Language.Python.Syntax.Import.ImportAs e v)
+ Language.Python.Syntax.Import: instance Data.Traversable.Traversable (e v) => Data.Traversable.Traversable (Language.Python.Syntax.Import.ImportAs e v)
+ Language.Python.Syntax.Import: instance GHC.Base.Functor (e v) => GHC.Base.Functor (Language.Python.Syntax.Import.ImportAs e v)
+ Language.Python.Syntax.Import: instance GHC.Generics.Generic (Language.Python.Syntax.Import.ImportAs e v a)
+ Language.Python.Syntax.Import: instance GHC.Generics.Generic (Language.Python.Syntax.Import.ImportTargets v a)
+ Language.Python.Syntax.Import: instance Language.Python.Optics.Validated.Validated e => Language.Python.Optics.Validated.Validated (Language.Python.Syntax.Import.ImportAs e)
+ Language.Python.Syntax.Import: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Import.ImportAs e v)
+ Language.Python.Syntax.Import: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Import.ImportTargets v)
+ Language.Python.Syntax.Import: instance Language.Python.Syntax.Whitespace.HasTrailingWhitespace (e v a) => Language.Python.Syntax.Whitespace.HasTrailingWhitespace (Language.Python.Syntax.Import.ImportAs e v a)
+ Language.Python.Syntax.Module: instance GHC.Generics.Generic (Language.Python.Syntax.Module.Module v a)
+ Language.Python.Syntax.Module: instance Language.Python.Syntax.Expr.HasExprs Language.Python.Syntax.Module.Module
+ Language.Python.Syntax.ModuleNames: instance GHC.Generics.Generic (Language.Python.Syntax.ModuleNames.ModuleName v a)
+ Language.Python.Syntax.ModuleNames: instance GHC.Generics.Generic (Language.Python.Syntax.ModuleNames.RelativeModuleName v a)
+ Language.Python.Syntax.ModuleNames: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.ModuleNames.ModuleName v)
+ Language.Python.Syntax.ModuleNames: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.ModuleNames.RelativeModuleName v)
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic (Language.Python.Syntax.Numbers.FloatLiteral a)
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic (Language.Python.Syntax.Numbers.ImagLiteral a)
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic (Language.Python.Syntax.Numbers.IntLiteral a)
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic Language.Python.Syntax.Numbers.E
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic Language.Python.Syntax.Numbers.FloatExponent
+ Language.Python.Syntax.Numbers: instance GHC.Generics.Generic Language.Python.Syntax.Numbers.Sign
+ Language.Python.Syntax.Numbers: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Numbers.FloatLiteral
+ Language.Python.Syntax.Numbers: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Numbers.ImagLiteral
+ Language.Python.Syntax.Numbers: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Numbers.IntLiteral
+ Language.Python.Syntax.Operator.Binary: instance GHC.Generics.Generic (Language.Python.Syntax.Operator.Binary.BinOp a)
+ Language.Python.Syntax.Operator.Binary: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Operator.Binary.BinOp
+ Language.Python.Syntax.Operator.Unary: instance GHC.Generics.Generic (Language.Python.Syntax.Operator.Unary.UnOp a)
+ Language.Python.Syntax.Operator.Unary: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Operator.Unary.UnOp
+ Language.Python.Syntax.Punctuation: instance GHC.Generics.Generic (Language.Python.Syntax.Punctuation.Semicolon a)
+ Language.Python.Syntax.Punctuation: instance GHC.Generics.Generic Language.Python.Syntax.Punctuation.Colon
+ Language.Python.Syntax.Punctuation: instance GHC.Generics.Generic Language.Python.Syntax.Punctuation.Comma
+ Language.Python.Syntax.Punctuation: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Punctuation.Semicolon
+ Language.Python.Syntax.Punctuation: newtype Dot
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.Block v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.CompoundStatement v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.Decorator v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.ExceptAs v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.SmallStatement v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.Statement v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.Suite v a)
+ Language.Python.Syntax.Statement: instance GHC.Generics.Generic (Language.Python.Syntax.Statement.WithItem v a)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.CompoundStatement v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.Decorator v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.ExceptAs v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.SimpleStatement v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.Suite v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Statement.WithItem v)
+ Language.Python.Syntax.Statement: instance Language.Python.Syntax.Statement.HasStatements Language.Python.Syntax.Statement.Statement
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic (Language.Python.Syntax.Strings.StringLiteral a)
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.BytesPrefix
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.PyChar
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.QuoteType
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.RawBytesPrefix
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.RawStringPrefix
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.StringPrefix
+ Language.Python.Syntax.Strings: instance GHC.Generics.Generic Language.Python.Syntax.Strings.StringType
+ Language.Python.Syntax.Strings: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Strings.StringLiteral
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Call v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.ClassDef v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Elif v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Else v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Except v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Finally v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.For v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Fundef v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.If v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.KeywordParam v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.List v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.ListUnpack v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.None v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.PositionalParam v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.StarParam v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.TryExcept v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.TryFinally v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.Tuple v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.TupleUnpack v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.UnnamedStarParam v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.While v)
+ Language.Python.Syntax.Types: instance Data.Foldable.Foldable (Language.Python.Syntax.Types.With v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Call v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.ClassDef v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Elif v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Else v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Except v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Finally v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.For v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Fundef v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.If v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.KeywordParam v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.List v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.ListUnpack v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.None v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.PositionalParam v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.StarParam v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.TryExcept v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.TryFinally v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.Tuple v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.TupleUnpack v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.UnnamedStarParam v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.While v)
+ Language.Python.Syntax.Types: instance Data.Traversable.Traversable (Language.Python.Syntax.Types.With v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Call v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.ClassDef v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Elif v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Else v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Except v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Finally v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.For v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Fundef v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.If v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.KeywordParam v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.List v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.ListUnpack v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.None v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.PositionalParam v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.StarParam v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.TryExcept v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.TryFinally v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.Tuple v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.TupleUnpack v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.UnnamedStarParam v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.While v)
+ Language.Python.Syntax.Types: instance GHC.Base.Functor (Language.Python.Syntax.Types.With v)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Call v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.ClassDef v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Elif v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Else v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Except v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Finally v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.For v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Fundef v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.If v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.KeywordParam v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.List v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.ListUnpack v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.None v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.PositionalParam v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.StarParam v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.TryExcept v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.TryFinally v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.Tuple v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.TupleUnpack v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.UnnamedStarParam v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.While v a)
+ Language.Python.Syntax.Types: instance GHC.Generics.Generic (Language.Python.Syntax.Types.With v a)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.Call v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.ClassDef v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.For v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.Fundef v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.If v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.KeywordParam v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.List v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.ListUnpack v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.None v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.PositionalParam v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.StarParam v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.TryExcept v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.TryFinally v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.Tuple v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.TupleUnpack v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.UnnamedStarParam v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.While v)
+ Language.Python.Syntax.Types: instance Language.Python.Syntax.Ann.HasAnn (Language.Python.Syntax.Types.With v)
+ Language.Python.Syntax.Whitespace: instance GHC.Generics.Generic (Language.Python.Syntax.Whitespace.Blank a)
+ Language.Python.Syntax.Whitespace: instance GHC.Generics.Generic (Language.Python.Syntax.Whitespace.Indents a)
+ Language.Python.Syntax.Whitespace: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Whitespace.Blank
+ Language.Python.Syntax.Whitespace: instance Language.Python.Syntax.Ann.HasAnn Language.Python.Syntax.Whitespace.Indents
- Language.Python.DSL: DoubleStarArg :: a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.DSL: DoubleStarArg :: Ann a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.DSL: DoubleStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.DSL: DoubleStarParam :: Ann a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.DSL: ExceptAs :: a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a
+ Language.Python.DSL: ExceptAs :: Ann a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a
- Language.Python.DSL: KeywordArg :: a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.DSL: KeywordArg :: Ann a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.DSL: KeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a
+ Language.Python.DSL: KeywordParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a
- Language.Python.DSL: MkCall :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a
+ Language.Python.DSL: MkCall :: Ann a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a
- Language.Python.DSL: MkClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a
+ Language.Python.DSL: MkClassDef :: Ann a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a
- Language.Python.DSL: MkFor :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a
+ Language.Python.DSL: MkFor :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a
- Language.Python.DSL: MkFundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a
+ Language.Python.DSL: MkFundef :: Ann a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a
- Language.Python.DSL: MkIdent :: a -> String -> [Whitespace] -> Ident a
+ Language.Python.DSL: MkIdent :: Ann a -> String -> [Whitespace] -> Ident a
- Language.Python.DSL: MkIf :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a
+ Language.Python.DSL: MkIf :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a
- Language.Python.DSL: MkKeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a
+ Language.Python.DSL: MkKeywordParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a
- Language.Python.DSL: MkNone :: a -> [Whitespace] -> None a
+ Language.Python.DSL: MkNone :: Ann a -> [Whitespace] -> None a
- Language.Python.DSL: MkPositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a
+ Language.Python.DSL: MkPositionalParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a
- Language.Python.DSL: MkTryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a
+ Language.Python.DSL: MkTryExcept :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a
- Language.Python.DSL: MkTryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a
+ Language.Python.DSL: MkTryFinally :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a
- Language.Python.DSL: MkTuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a
+ Language.Python.DSL: MkTuple :: Ann a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a
- Language.Python.DSL: MkWhile :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a
+ Language.Python.DSL: MkWhile :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a
- Language.Python.DSL: MkWith :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a
+ Language.Python.DSL: MkWith :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a
- Language.Python.DSL: PositionalArg :: a -> Expr v a -> Arg a
+ Language.Python.DSL: PositionalArg :: Ann a -> Expr v a -> Arg a
- Language.Python.DSL: PositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.DSL: PositionalParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.DSL: StarArg :: a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.DSL: StarArg :: Ann a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.DSL: StarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.DSL: StarParam :: Ann a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.DSL: UnnamedStarParam :: a -> [Whitespace] -> Param a
+ Language.Python.DSL: UnnamedStarParam :: Ann a -> [Whitespace] -> Param a
- Language.Python.DSL: WithItem :: a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a
+ Language.Python.DSL: WithItem :: Ann a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a
- Language.Python.DSL: [_argAnn] :: Arg a -> a
+ Language.Python.DSL: [_argAnn] :: Arg a -> Ann a
- Language.Python.DSL: [_callAnn] :: Call v a -> a
+ Language.Python.DSL: [_callAnn] :: Call v a -> Ann a
- Language.Python.DSL: [_cdAnn] :: ClassDef v a -> a
+ Language.Python.DSL: [_cdAnn] :: ClassDef v a -> Ann a
- Language.Python.DSL: [_exceptAsAnn] :: ExceptAs a -> a
+ Language.Python.DSL: [_exceptAsAnn] :: ExceptAs a -> Ann a
- Language.Python.DSL: [_fdAnn] :: Fundef v a -> a
+ Language.Python.DSL: [_fdAnn] :: Fundef v a -> Ann a
- Language.Python.DSL: [_forAnn] :: For v a -> a
+ Language.Python.DSL: [_forAnn] :: For v a -> Ann a
- Language.Python.DSL: [_identAnn] :: Ident a -> a
+ Language.Python.DSL: [_identAnn] :: Ident a -> Ann a
- Language.Python.DSL: [_ifAnn] :: If v a -> a
+ Language.Python.DSL: [_ifAnn] :: If v a -> Ann a
- Language.Python.DSL: [_kpAnn] :: KeywordParam v a -> a
+ Language.Python.DSL: [_kpAnn] :: KeywordParam v a -> Ann a
- Language.Python.DSL: [_noneAnn] :: None a -> a
+ Language.Python.DSL: [_noneAnn] :: None a -> Ann a
- Language.Python.DSL: [_paramAnn] :: Param a -> a
+ Language.Python.DSL: [_paramAnn] :: Param a -> Ann a
- Language.Python.DSL: [_ppAnn] :: PositionalParam v a -> a
+ Language.Python.DSL: [_ppAnn] :: PositionalParam v a -> Ann a
- Language.Python.DSL: [_teAnn] :: TryExcept v a -> a
+ Language.Python.DSL: [_teAnn] :: TryExcept v a -> Ann a
- Language.Python.DSL: [_tfAnn] :: TryFinally v a -> a
+ Language.Python.DSL: [_tfAnn] :: TryFinally v a -> Ann a
- Language.Python.DSL: [_tupleAnn] :: Tuple v a -> a
+ Language.Python.DSL: [_tupleAnn] :: Tuple v a -> Ann a
- Language.Python.DSL: [_whileAnn] :: While v a -> a
+ Language.Python.DSL: [_whileAnn] :: While v a -> Ann a
- Language.Python.DSL: [_withAnn] :: With v a -> a
+ Language.Python.DSL: [_withAnn] :: With v a -> Ann a
- Language.Python.DSL: [_withItemAnn] :: WithItem a -> a
+ Language.Python.DSL: [_withItemAnn] :: WithItem a -> Ann a
- Language.Python.DSL: callAnn :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) a_a2jct
+ Language.Python.DSL: callAnn :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Ann a_a2N4c)
- Language.Python.DSL: callArguments :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Maybe (CommaSep1' (Arg v_a2jcs a_a2jct)))
+ Language.Python.DSL: callArguments :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Maybe (CommaSep1' (Arg v_a2N4b a_a2N4c)))
- Language.Python.DSL: callFunction :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Expr v_a2jcs a_a2jct)
+ Language.Python.DSL: callFunction :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Expr v_a2N4b a_a2N4c)
- Language.Python.DSL: callLeftParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace]
+ Language.Python.DSL: callLeftParen :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) [Whitespace]
- Language.Python.DSL: callRightParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace]
+ Language.Python.DSL: callRightParen :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) [Whitespace]
- Language.Python.DSL: cdAnn :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) a_a2keL
+ Language.Python.DSL: cdAnn :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Ann a_a2PY5)
- Language.Python.DSL: cdArguments :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2keK a_a2keL)), [Whitespace]))
+ Language.Python.DSL: cdArguments :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2PY4 a_a2PY5)), [Whitespace]))
- Language.Python.DSL: cdBody :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Suite v_a2keK a_a2keL)
+ Language.Python.DSL: cdBody :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Suite v_a2PY4 a_a2PY5)
- Language.Python.DSL: cdClass :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (NonEmpty Whitespace)
+ Language.Python.DSL: cdClass :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (NonEmpty Whitespace)
- Language.Python.DSL: cdDecorators :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) [Decorator v_a2keK a_a2keL]
+ Language.Python.DSL: cdDecorators :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) [Decorator v_a2PY4 a_a2PY5]
- Language.Python.DSL: cdIndents :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Indents a_a2keL)
+ Language.Python.DSL: cdIndents :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Indents a_a2PY5)
- Language.Python.DSL: cdName :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Ident v_a2keK a_a2keL)
+ Language.Python.DSL: cdName :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Ident v_a2PY4 a_a2PY5)
- Language.Python.DSL: elifBody :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Suite v_a2jiC a_a2jiD)
+ Language.Python.DSL: elifBody :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Suite v_a2Noq a_a2Nor)
- Language.Python.DSL: elifCond :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Expr v_a2jiC a_a2jiD)
+ Language.Python.DSL: elifCond :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Expr v_a2Noq a_a2Nor)
- Language.Python.DSL: elifElif :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) [Whitespace]
+ Language.Python.DSL: elifElif :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) [Whitespace]
- Language.Python.DSL: elifIndents :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Indents a_a2jiD)
+ Language.Python.DSL: elifIndents :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Indents a_a2Nor)
- Language.Python.DSL: elseBody :: forall v_a2ivn a_a2ivo v_a2iF5. Lens (Else v_a2ivn a_a2ivo) (Else v_a2iF5 a_a2ivo) (Suite v_a2ivn a_a2ivo) (Suite v_a2iF5 a_a2ivo)
+ Language.Python.DSL: elseBody :: forall v_a2L90 a_a2L91 v_a2Lsw. Lens (Else v_a2L90 a_a2L91) (Else v_a2Lsw a_a2L91) (Suite v_a2L90 a_a2L91) (Suite v_a2Lsw a_a2L91)
- Language.Python.DSL: elseElse :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) [Whitespace]
+ Language.Python.DSL: elseElse :: forall v_a2L90 a_a2L91. Lens' (Else v_a2L90 a_a2L91) [Whitespace]
- Language.Python.DSL: elseIndents :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) (Indents a_a2ivo)
+ Language.Python.DSL: elseIndents :: forall v_a2L90 a_a2L91. Lens' (Else v_a2L90 a_a2L91) (Indents a_a2L91)
- Language.Python.DSL: exceptBody :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Suite v_a2jRM a_a2jRN)
+ Language.Python.DSL: exceptBody :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Suite v_a2OUh a_a2OUi)
- Language.Python.DSL: exceptExcept :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) [Whitespace]
+ Language.Python.DSL: exceptExcept :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) [Whitespace]
- Language.Python.DSL: exceptExceptAs :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Maybe (ExceptAs v_a2jRM a_a2jRN))
+ Language.Python.DSL: exceptExceptAs :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Maybe (ExceptAs v_a2OUh a_a2OUi))
- Language.Python.DSL: exceptIndents :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Indents a_a2jRN)
+ Language.Python.DSL: exceptIndents :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Indents a_a2OUi)
- Language.Python.DSL: fdAnn :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) a_a2im3
+ Language.Python.DSL: fdAnn :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Ann a_a2KCQ)
- Language.Python.DSL: fdAsync :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe (NonEmpty Whitespace))
+ Language.Python.DSL: fdAsync :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Maybe (NonEmpty Whitespace))
- Language.Python.DSL: fdBody :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Suite v_a2im2 a_a2im3)
+ Language.Python.DSL: fdBody :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Suite v_a2KCP a_a2KCQ)
- Language.Python.DSL: fdDecorators :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Decorator v_a2im2 a_a2im3]
+ Language.Python.DSL: fdDecorators :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Decorator v_a2KCP a_a2KCQ]
- Language.Python.DSL: fdDefSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (NonEmpty Whitespace)
+ Language.Python.DSL: fdDefSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (NonEmpty Whitespace)
- Language.Python.DSL: fdIndents :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Indents a_a2im3)
+ Language.Python.DSL: fdIndents :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Indents a_a2KCQ)
- Language.Python.DSL: fdLeftParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace]
+ Language.Python.DSL: fdLeftParenSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Whitespace]
- Language.Python.DSL: fdName :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Ident v_a2im2 a_a2im3)
+ Language.Python.DSL: fdName :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Ident v_a2KCP a_a2KCQ)
- Language.Python.DSL: fdParameters :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (CommaSep (Param v_a2im2 a_a2im3))
+ Language.Python.DSL: fdParameters :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (CommaSep (Param v_a2KCP a_a2KCQ))
- Language.Python.DSL: fdReturnType :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe ([Whitespace], Expr v_a2im2 a_a2im3))
+ Language.Python.DSL: fdReturnType :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Maybe ([Whitespace], Expr v_a2KCP a_a2KCQ))
- Language.Python.DSL: fdRightParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace]
+ Language.Python.DSL: fdRightParenSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Whitespace]
- Language.Python.DSL: finallyBody :: forall v_a2jJi a_a2jJj v_a2jRn. Lens (Finally v_a2jJi a_a2jJj) (Finally v_a2jRn a_a2jJj) (Suite v_a2jJi a_a2jJj) (Suite v_a2jRn a_a2jJj)
+ Language.Python.DSL: finallyBody :: forall v_a2OBq a_a2OBr v_a2OTS. Lens (Finally v_a2OBq a_a2OBr) (Finally v_a2OTS a_a2OBr) (Suite v_a2OBq a_a2OBr) (Suite v_a2OTS a_a2OBr)
- Language.Python.DSL: finallyFinally :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) [Whitespace]
+ Language.Python.DSL: finallyFinally :: forall v_a2OBq a_a2OBr. Lens' (Finally v_a2OBq a_a2OBr) [Whitespace]
- Language.Python.DSL: finallyIndents :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) (Indents a_a2jJj)
+ Language.Python.DSL: finallyIndents :: forall v_a2OBq a_a2OBr. Lens' (Finally v_a2OBq a_a2OBr) (Indents a_a2OBr)
- Language.Python.DSL: ifAnn :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) a_a2jpA
+ Language.Python.DSL: ifAnn :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Ann a_a2NHj)
- Language.Python.DSL: ifBody :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Suite v_a2jpz a_a2jpA)
+ Language.Python.DSL: ifBody :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Suite v_a2NHi a_a2NHj)
- Language.Python.DSL: ifCond :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Expr v_a2jpz a_a2jpA)
+ Language.Python.DSL: ifCond :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Expr v_a2NHi a_a2NHj)
- Language.Python.DSL: ifElifs :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Elif v_a2jpz a_a2jpA]
+ Language.Python.DSL: ifElifs :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) [Elif v_a2NHi a_a2NHj]
- Language.Python.DSL: ifElse :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Maybe (Else v_a2jpz a_a2jpA))
+ Language.Python.DSL: ifElse :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Maybe (Else v_a2NHi a_a2NHj))
- Language.Python.DSL: ifIf :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Whitespace]
+ Language.Python.DSL: ifIf :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) [Whitespace]
- Language.Python.DSL: ifIndents :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Indents a_a2jpA)
+ Language.Python.DSL: ifIndents :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Indents a_a2NHj)
- Language.Python.DSL: kpAnn :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) a_a2iMG
+ Language.Python.DSL: kpAnn :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Ann a_a2LOV)
- Language.Python.DSL: kpEquals :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) [Whitespace]
+ Language.Python.DSL: kpEquals :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) [Whitespace]
- Language.Python.DSL: kpExpr :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Expr v_a2iMF a_a2iMG)
+ Language.Python.DSL: kpExpr :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Expr v_a2LOU a_a2LOV)
- Language.Python.DSL: kpName :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Ident v_a2iMF a_a2iMG)
+ Language.Python.DSL: kpName :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Ident v_a2LOU a_a2LOV)
- Language.Python.DSL: kpType :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Maybe (Colon, Expr v_a2iMF a_a2iMG))
+ Language.Python.DSL: kpType :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Maybe (Colon, Expr v_a2LOU a_a2LOV))
- Language.Python.DSL: noneAnn :: forall v_a2kRA a_a2kRB v_a2kWD a_a2kWE. Lens (None v_a2kRA a_a2kRB) (None v_a2kWD a_a2kWE) a_a2kRB a_a2kWE
+ Language.Python.DSL: noneAnn :: forall v_a2RLO a_a2RLP v_a2RZS a_a2RZT. Lens (None v_a2RLO a_a2RLP) (None v_a2RZS a_a2RZT) (Ann a_a2RLP) (Ann a_a2RZT)
- Language.Python.DSL: noneWhitespace :: forall v_a2kRA a_a2kRB v_a2kWF. Lens (None v_a2kRA a_a2kRB) (None v_a2kWF a_a2kRB) [Whitespace] [Whitespace]
+ Language.Python.DSL: noneWhitespace :: forall v_a2RLO a_a2RLP v_a2RZU. Lens (None v_a2RLO a_a2RLP) (None v_a2RZU a_a2RLP) [Whitespace] [Whitespace]
- Language.Python.DSL: ppAnn :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) a_a2iUP
+ Language.Python.DSL: ppAnn :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Ann a_a2Mcv)
- Language.Python.DSL: ppName :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Ident v_a2iUO a_a2iUP)
+ Language.Python.DSL: ppName :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Ident v_a2Mcu a_a2Mcv)
- Language.Python.DSL: ppType :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Maybe (Colon, Expr v_a2iUO a_a2iUP))
+ Language.Python.DSL: ppType :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Maybe (Colon, Expr v_a2Mcu a_a2Mcv))
- Language.Python.DSL: teAnn :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) a_a2jXO
+ Language.Python.DSL: teAnn :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Ann a_a2Pc1)
- Language.Python.DSL: teBody :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Suite v_a2jXN a_a2jXO)
+ Language.Python.DSL: teBody :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Suite v_a2Pc0 a_a2Pc1)
- Language.Python.DSL: teElse :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Else v_a2jXN a_a2jXO))
+ Language.Python.DSL: teElse :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Maybe (Else v_a2Pc0 a_a2Pc1))
- Language.Python.DSL: teExcepts :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (NonEmpty (Except v_a2jXN a_a2jXO))
+ Language.Python.DSL: teExcepts :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (NonEmpty (Except v_a2Pc0 a_a2Pc1))
- Language.Python.DSL: teFinally :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Finally v_a2jXN a_a2jXO))
+ Language.Python.DSL: teFinally :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Maybe (Finally v_a2Pc0 a_a2Pc1))
- Language.Python.DSL: teIndents :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Indents a_a2jXO)
+ Language.Python.DSL: teIndents :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Indents a_a2Pc1)
- Language.Python.DSL: teTry :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) [Whitespace]
+ Language.Python.DSL: teTry :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) [Whitespace]
- Language.Python.DSL: whileAnn :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) a_a2iFx
+ Language.Python.DSL: whileAnn :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Ann a_a2LsY)
- Language.Python.DSL: whileBody :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Suite v_a2iFw a_a2iFx)
+ Language.Python.DSL: whileBody :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Suite v_a2LsX a_a2LsY)
- Language.Python.DSL: whileCond :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Expr v_a2iFw a_a2iFx)
+ Language.Python.DSL: whileCond :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Expr v_a2LsX a_a2LsY)
- Language.Python.DSL: whileIndents :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Indents a_a2iFx)
+ Language.Python.DSL: whileIndents :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Indents a_a2LsY)
- Language.Python.DSL: whileWhile :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) [Whitespace]
+ Language.Python.DSL: whileWhile :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) [Whitespace]
- Language.Python.DSL: withAnn :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) a_a2knY
+ Language.Python.DSL: withAnn :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Ann a_a2Qsc)
- Language.Python.DSL: withAsync :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Maybe (NonEmpty Whitespace))
+ Language.Python.DSL: withAsync :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Maybe (NonEmpty Whitespace))
- Language.Python.DSL: withBody :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Suite v_a2knX a_a2knY)
+ Language.Python.DSL: withBody :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Suite v_a2Qsb a_a2Qsc)
- Language.Python.DSL: withIndents :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Indents a_a2knY)
+ Language.Python.DSL: withIndents :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Indents a_a2Qsc)
- Language.Python.DSL: withItems :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (CommaSep1 (WithItem v_a2knX a_a2knY))
+ Language.Python.DSL: withItems :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (CommaSep1 (WithItem v_a2Qsb a_a2Qsc))
- Language.Python.DSL: withWith :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) [Whitespace]
+ Language.Python.DSL: withWith :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) [Whitespace]
- Language.Python.Internal.Render: renderImportAs :: (e a -> RenderOutput ()) -> ImportAs e v a -> RenderOutput ()
+ Language.Python.Internal.Render: renderImportAs :: (e v a -> RenderOutput ()) -> ImportAs e v a -> RenderOutput ()
- Language.Python.Internal.Syntax.IR: Ident :: Ident '[] a -> Expr a
+ Language.Python.Internal.Syntax.IR: Ident :: a -> Ident '[] a -> Expr a
- Language.Python.Internal.Syntax.IR: Import :: a -> NonEmpty Whitespace -> CommaSep1 (ImportAs (ModuleName '[]) '[] a) -> SimpleStatement a
+ Language.Python.Internal.Syntax.IR: Import :: a -> NonEmpty Whitespace -> CommaSep1 (ImportAs ModuleName '[] a) -> SimpleStatement a
- Language.Python.Optics: _Ident :: Prism (Expr v a) (Expr '[] a) (Ident v a) (Ident '[] a)
+ Language.Python.Optics: _Ident :: (Choice p, Applicative f) => p (Ident v a) (f (Ident '[] a)) -> p (Expr v a) (f (Expr '[] a))
- Language.Python.Syntax.AugAssign: MkAugAssign :: AugAssignOp -> a -> [Whitespace] -> AugAssign a
+ Language.Python.Syntax.AugAssign: MkAugAssign :: Ann a -> AugAssignOp -> [Whitespace] -> AugAssign a
- Language.Python.Syntax.AugAssign: [_augAssignAnn] :: AugAssign a -> a
+ Language.Python.Syntax.AugAssign: [_augAssignAnn] :: AugAssign a -> Ann a
- Language.Python.Syntax.Comment: MkComment :: a -> String -> Comment a
+ Language.Python.Syntax.Comment: MkComment :: Ann a -> String -> Comment a
- Language.Python.Syntax.Comment: [_commentAnn] :: Comment a -> a
+ Language.Python.Syntax.Comment: [_commentAnn] :: Comment a -> Ann a
- Language.Python.Syntax.Expr: Await :: a -> [Whitespace] -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: Await :: Ann a -> [Whitespace] -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: BinOp :: a -> Expr v a -> BinOp a -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: BinOp :: Ann a -> Expr v a -> BinOp a -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: Bool :: a -> Bool -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Bool :: Ann a -> Bool -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Call :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Call :: Ann a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: CompFor :: a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> CompFor a
+ Language.Python.Syntax.Expr: CompFor :: Ann a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> CompFor a
- Language.Python.Syntax.Expr: CompIf :: a -> [Whitespace] -> Expr v a -> CompIf a
+ Language.Python.Syntax.Expr: CompIf :: Ann a -> [Whitespace] -> Expr v a -> CompIf a
- Language.Python.Syntax.Expr: Comprehension :: a -> e v a -> CompFor v a -> [Either (CompFor v a) (CompIf v a)] -> Comprehension e a
+ Language.Python.Syntax.Expr: Comprehension :: Ann a -> e v a -> CompFor v a -> [Either (CompFor v a) (CompIf v a)] -> Comprehension e a
- Language.Python.Syntax.Expr: Deref :: a -> Expr v a -> [Whitespace] -> Ident v a -> Expr a
+ Language.Python.Syntax.Expr: Deref :: Ann a -> Expr v a -> [Whitespace] -> Ident v a -> Expr a
- Language.Python.Syntax.Expr: Dict :: a -> [Whitespace] -> Maybe (CommaSep1' (DictItem v a)) -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Dict :: Ann a -> [Whitespace] -> Maybe (CommaSep1' (DictItem v a)) -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: DictComp :: a -> [Whitespace] -> Comprehension DictItem v a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: DictComp :: Ann a -> [Whitespace] -> Comprehension DictItem v a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: DictItem :: a -> Expr v a -> Colon -> Expr v a -> DictItem a
+ Language.Python.Syntax.Expr: DictItem :: Ann a -> Expr v a -> Colon -> Expr v a -> DictItem a
- Language.Python.Syntax.Expr: DictUnpack :: a -> [Whitespace] -> Expr v a -> DictItem a
+ Language.Python.Syntax.Expr: DictUnpack :: Ann a -> [Whitespace] -> Expr v a -> DictItem a
- Language.Python.Syntax.Expr: DoubleStarArg :: a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.Syntax.Expr: DoubleStarArg :: Ann a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.Syntax.Expr: DoubleStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.Syntax.Expr: DoubleStarParam :: Ann a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.Syntax.Expr: Ellipsis :: a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Ellipsis :: Ann a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Float :: a -> FloatLiteral a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Float :: Ann a -> FloatLiteral a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Generator :: a -> Comprehension Expr v a -> Expr a
+ Language.Python.Syntax.Expr: Generator :: Ann a -> Comprehension Expr v a -> Expr a
- Language.Python.Syntax.Expr: Ident :: Ident v a -> Expr a
+ Language.Python.Syntax.Expr: Ident :: Ann a -> Ident v a -> Expr a
- Language.Python.Syntax.Expr: Imag :: a -> ImagLiteral a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Imag :: Ann a -> ImagLiteral a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Int :: a -> IntLiteral a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Int :: Ann a -> IntLiteral a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: KeywordArg :: a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.Syntax.Expr: KeywordArg :: Ann a -> Ident v a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.Syntax.Expr: KeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a
+ Language.Python.Syntax.Expr: KeywordParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> Param a
- Language.Python.Syntax.Expr: Lambda :: a -> [Whitespace] -> CommaSep (Param v a) -> Colon -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: Lambda :: Ann a -> [Whitespace] -> CommaSep (Param v a) -> Colon -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: List :: a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: List :: Ann a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: ListComp :: a -> [Whitespace] -> Comprehension Expr v a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: ListComp :: Ann a -> [Whitespace] -> Comprehension Expr v a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: ListItem :: a -> Expr v a -> ListItem a
+ Language.Python.Syntax.Expr: ListItem :: Ann a -> Expr v a -> ListItem a
- Language.Python.Syntax.Expr: ListUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListItem a
+ Language.Python.Syntax.Expr: ListUnpack :: Ann a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListItem a
- Language.Python.Syntax.Expr: None :: a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: None :: Ann a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Not :: a -> [Whitespace] -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: Not :: Ann a -> [Whitespace] -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: Parens :: a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Parens :: Ann a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: PositionalArg :: a -> Expr v a -> Arg a
+ Language.Python.Syntax.Expr: PositionalArg :: Ann a -> Expr v a -> Arg a
- Language.Python.Syntax.Expr: PositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.Syntax.Expr: PositionalParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.Syntax.Expr: Set :: a -> [Whitespace] -> CommaSep1' (SetItem v a) -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Set :: Ann a -> [Whitespace] -> CommaSep1' (SetItem v a) -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: SetComp :: a -> [Whitespace] -> Comprehension SetItem v a -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: SetComp :: Ann a -> [Whitespace] -> Comprehension SetItem v a -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: SetItem :: a -> Expr v a -> SetItem a
+ Language.Python.Syntax.Expr: SetItem :: Ann a -> Expr v a -> SetItem a
- Language.Python.Syntax.Expr: SetUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> SetItem a
+ Language.Python.Syntax.Expr: SetUnpack :: Ann a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> SetItem a
- Language.Python.Syntax.Expr: StarArg :: a -> [Whitespace] -> Expr v a -> Arg a
+ Language.Python.Syntax.Expr: StarArg :: Ann a -> [Whitespace] -> Expr v a -> Arg a
- Language.Python.Syntax.Expr: StarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
+ Language.Python.Syntax.Expr: StarParam :: Ann a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> Param a
- Language.Python.Syntax.Expr: String :: a -> NonEmpty (StringLiteral a) -> Expr a
+ Language.Python.Syntax.Expr: String :: Ann a -> NonEmpty (StringLiteral a) -> Expr a
- Language.Python.Syntax.Expr: Subscript :: a -> Expr v a -> [Whitespace] -> CommaSep1' (Subscript v a) -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Subscript :: Ann a -> Expr v a -> [Whitespace] -> CommaSep1' (Subscript v a) -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: Ternary :: a -> Expr v a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: Ternary :: Ann a -> Expr v a -> [Whitespace] -> Expr v a -> [Whitespace] -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: Tuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Expr a
+ Language.Python.Syntax.Expr: Tuple :: Ann a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Expr a
- Language.Python.Syntax.Expr: TupleItem :: a -> Expr v a -> TupleItem a
+ Language.Python.Syntax.Expr: TupleItem :: Ann a -> Expr v a -> TupleItem a
- Language.Python.Syntax.Expr: TupleUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleItem a
+ Language.Python.Syntax.Expr: TupleUnpack :: Ann a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleItem a
- Language.Python.Syntax.Expr: UnOp :: a -> UnOp a -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: UnOp :: Ann a -> UnOp a -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: Unit :: a -> [Whitespace] -> [Whitespace] -> Expr a
+ Language.Python.Syntax.Expr: Unit :: Ann a -> [Whitespace] -> [Whitespace] -> Expr a
- Language.Python.Syntax.Expr: UnnamedStarParam :: a -> [Whitespace] -> Param a
+ Language.Python.Syntax.Expr: UnnamedStarParam :: Ann a -> [Whitespace] -> Param a
- Language.Python.Syntax.Expr: Yield :: a -> [Whitespace] -> CommaSep (Expr v a) -> Expr a
+ Language.Python.Syntax.Expr: Yield :: Ann a -> [Whitespace] -> CommaSep (Expr v a) -> Expr a
- Language.Python.Syntax.Expr: YieldFrom :: a -> [Whitespace] -> [Whitespace] -> Expr v a -> Expr a
+ Language.Python.Syntax.Expr: YieldFrom :: Ann a -> [Whitespace] -> [Whitespace] -> Expr v a -> Expr a
- Language.Python.Syntax.Expr: [_argAnn] :: Arg a -> a
+ Language.Python.Syntax.Expr: [_argAnn] :: Arg a -> Ann a
- Language.Python.Syntax.Expr: [_dictItemAnn] :: DictItem a -> a
+ Language.Python.Syntax.Expr: [_dictItemAnn] :: DictItem a -> Ann a
- Language.Python.Syntax.Expr: [_listItemAnn] :: ListItem a -> a
+ Language.Python.Syntax.Expr: [_listItemAnn] :: ListItem a -> Ann a
- Language.Python.Syntax.Expr: [_paramAnn] :: Param a -> a
+ Language.Python.Syntax.Expr: [_paramAnn] :: Param a -> Ann a
- Language.Python.Syntax.Expr: [_setItemAnn] :: SetItem a -> a
+ Language.Python.Syntax.Expr: [_setItemAnn] :: SetItem a -> Ann a
- Language.Python.Syntax.Expr: [_tupleItemAnn] :: TupleItem a -> a
+ Language.Python.Syntax.Expr: [_tupleItemAnn] :: TupleItem a -> Ann a
- Language.Python.Syntax.Expr: [_unsafeExprAnn] :: Expr a -> a
+ Language.Python.Syntax.Expr: [_unsafeExprAnn] :: Expr a -> Ann a
- Language.Python.Syntax.Ident: MkIdent :: a -> String -> [Whitespace] -> Ident a
+ Language.Python.Syntax.Ident: MkIdent :: Ann a -> String -> [Whitespace] -> Ident a
- Language.Python.Syntax.Ident: [_identAnn] :: Ident a -> a
+ Language.Python.Syntax.Ident: [_identAnn] :: Ident a -> Ann a
- Language.Python.Syntax.Import: ImportAll :: a -> [Whitespace] -> ImportTargets v a
+ Language.Python.Syntax.Import: ImportAll :: Ann a -> [Whitespace] -> ImportTargets v a
- Language.Python.Syntax.Import: ImportAs :: a -> e a -> Maybe (NonEmpty Whitespace, Ident v a) -> ImportAs e v a
+ Language.Python.Syntax.Import: ImportAs :: Ann a -> e v a -> Maybe (NonEmpty Whitespace, Ident v a) -> ImportAs e v a
- Language.Python.Syntax.Import: ImportSome :: a -> CommaSep1 (ImportAs (Ident v) v a) -> ImportTargets v a
+ Language.Python.Syntax.Import: ImportSome :: Ann a -> CommaSep1 (ImportAs Ident v a) -> ImportTargets v a
- Language.Python.Syntax.Import: ImportSomeParens :: a -> [Whitespace] -> CommaSep1' (ImportAs (Ident v) v a) -> [Whitespace] -> ImportTargets v a
+ Language.Python.Syntax.Import: ImportSomeParens :: Ann a -> [Whitespace] -> CommaSep1' (ImportAs Ident v a) -> [Whitespace] -> ImportTargets v a
- Language.Python.Syntax.Import: [_importAsAnn] :: ImportAs e v a -> a
+ Language.Python.Syntax.Import: [_importAsAnn] :: ImportAs e v a -> Ann a
- Language.Python.Syntax.Import: [_importAsName] :: ImportAs e v a -> e a
+ Language.Python.Syntax.Import: [_importAsName] :: ImportAs e v a -> e v a
- Language.Python.Syntax.Import: importAsName :: Lens (ImportAs e v a) (ImportAs e' '[] a) (e a) (e' a)
+ Language.Python.Syntax.Import: importAsName :: Validated e => Lens (ImportAs e v a) (ImportAs e' '[] a) (e v a) (e' '[] a)
- Language.Python.Syntax.Import: importAsQual :: Lens (ImportAs e v a) (ImportAs e '[] a) (Maybe (NonEmpty Whitespace, Ident v a)) (Maybe (NonEmpty Whitespace, Ident '[] a))
+ Language.Python.Syntax.Import: importAsQual :: Validated e => Lens (ImportAs e v a) (ImportAs e '[] a) (Maybe (NonEmpty Whitespace, Ident v a)) (Maybe (NonEmpty Whitespace, Ident '[] a))
- Language.Python.Syntax.ModuleNames: ModuleNameMany :: a -> Ident v a -> Dot -> ModuleName v a -> ModuleName v a
+ Language.Python.Syntax.ModuleNames: ModuleNameMany :: Ann a -> Ident v a -> Dot -> ModuleName v a -> ModuleName v a
- Language.Python.Syntax.ModuleNames: ModuleNameOne :: a -> Ident v a -> ModuleName v a
+ Language.Python.Syntax.ModuleNames: ModuleNameOne :: Ann a -> Ident v a -> ModuleName v a
- Language.Python.Syntax.ModuleNames: Relative :: NonEmpty Dot -> RelativeModuleName v a
+ Language.Python.Syntax.ModuleNames: Relative :: Ann a -> NonEmpty Dot -> RelativeModuleName v a
- Language.Python.Syntax.ModuleNames: RelativeWithName :: [Dot] -> ModuleName v a -> RelativeModuleName v a
+ Language.Python.Syntax.ModuleNames: RelativeWithName :: Ann a -> [Dot] -> ModuleName v a -> RelativeModuleName v a
- Language.Python.Syntax.Numbers: FloatLiteralFull :: a -> NonEmpty DecDigit -> Maybe (These (NonEmpty DecDigit) FloatExponent) -> FloatLiteral a
+ Language.Python.Syntax.Numbers: FloatLiteralFull :: Ann a -> NonEmpty DecDigit -> Maybe (These (NonEmpty DecDigit) FloatExponent) -> FloatLiteral a
- Language.Python.Syntax.Numbers: FloatLiteralPoint :: a -> NonEmpty DecDigit -> Maybe FloatExponent -> FloatLiteral a
+ Language.Python.Syntax.Numbers: FloatLiteralPoint :: Ann a -> NonEmpty DecDigit -> Maybe FloatExponent -> FloatLiteral a
- Language.Python.Syntax.Numbers: FloatLiteralWhole :: a -> NonEmpty DecDigit -> FloatExponent -> FloatLiteral a
+ Language.Python.Syntax.Numbers: FloatLiteralWhole :: Ann a -> NonEmpty DecDigit -> FloatExponent -> FloatLiteral a
- Language.Python.Syntax.Numbers: ImagLiteralFloat :: a -> FloatLiteral a -> Bool -> ImagLiteral a
+ Language.Python.Syntax.Numbers: ImagLiteralFloat :: Ann a -> FloatLiteral a -> Bool -> ImagLiteral a
- Language.Python.Syntax.Numbers: ImagLiteralInt :: a -> NonEmpty DecDigit -> Bool -> ImagLiteral a
+ Language.Python.Syntax.Numbers: ImagLiteralInt :: Ann a -> NonEmpty DecDigit -> Bool -> ImagLiteral a
- Language.Python.Syntax.Numbers: IntLiteralBin :: a -> Bool -> NonEmpty BinDigit -> IntLiteral a
+ Language.Python.Syntax.Numbers: IntLiteralBin :: Ann a -> Bool -> NonEmpty BinDigit -> IntLiteral a
- Language.Python.Syntax.Numbers: IntLiteralDec :: a -> NonEmpty DecDigit -> IntLiteral a
+ Language.Python.Syntax.Numbers: IntLiteralDec :: Ann a -> NonEmpty DecDigit -> IntLiteral a
- Language.Python.Syntax.Numbers: IntLiteralHex :: a -> Bool -> NonEmpty HeXDigit -> IntLiteral a
+ Language.Python.Syntax.Numbers: IntLiteralHex :: Ann a -> Bool -> NonEmpty HeXDigit -> IntLiteral a
- Language.Python.Syntax.Numbers: IntLiteralOct :: a -> Bool -> NonEmpty OctDigit -> IntLiteral a
+ Language.Python.Syntax.Numbers: IntLiteralOct :: Ann a -> Bool -> NonEmpty OctDigit -> IntLiteral a
- Language.Python.Syntax.Numbers: [_floatLiteralAnn] :: FloatLiteral a -> a
+ Language.Python.Syntax.Numbers: [_floatLiteralAnn] :: FloatLiteral a -> Ann a
- Language.Python.Syntax.Numbers: [_imagLiteralAnn] :: ImagLiteral a -> a
+ Language.Python.Syntax.Numbers: [_imagLiteralAnn] :: ImagLiteral a -> Ann a
- Language.Python.Syntax.Numbers: [_intLiteralAnn] :: IntLiteral a -> a
+ Language.Python.Syntax.Numbers: [_intLiteralAnn] :: IntLiteral a -> Ann a
- Language.Python.Syntax.Operator.Binary: At :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: At :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: BitAnd :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: BitAnd :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: BitOr :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: BitOr :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: BitXor :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: BitXor :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: BoolAnd :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: BoolAnd :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: BoolOr :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: BoolOr :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Divide :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Divide :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Eq :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Eq :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Exp :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Exp :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: FloorDivide :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: FloorDivide :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Gt :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Gt :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: GtEq :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: GtEq :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: In :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: In :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Is :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Is :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: IsNot :: a -> [Whitespace] -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: IsNot :: Ann a -> [Whitespace] -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Lt :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Lt :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: LtEq :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: LtEq :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Minus :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Minus :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Multiply :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Multiply :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: NotEq :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: NotEq :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: NotIn :: a -> [Whitespace] -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: NotIn :: Ann a -> [Whitespace] -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Percent :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Percent :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: Plus :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: Plus :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: ShiftLeft :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: ShiftLeft :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Binary: ShiftRight :: a -> [Whitespace] -> BinOp a
+ Language.Python.Syntax.Operator.Binary: ShiftRight :: Ann a -> [Whitespace] -> BinOp a
- Language.Python.Syntax.Operator.Unary: Complement :: a -> [Whitespace] -> UnOp a
+ Language.Python.Syntax.Operator.Unary: Complement :: Ann a -> [Whitespace] -> UnOp a
- Language.Python.Syntax.Operator.Unary: Negate :: a -> [Whitespace] -> UnOp a
+ Language.Python.Syntax.Operator.Unary: Negate :: Ann a -> [Whitespace] -> UnOp a
- Language.Python.Syntax.Operator.Unary: Positive :: a -> [Whitespace] -> UnOp a
+ Language.Python.Syntax.Operator.Unary: Positive :: Ann a -> [Whitespace] -> UnOp a
- Language.Python.Syntax.Punctuation: MkSemicolon :: a -> [Whitespace] -> Semicolon a
+ Language.Python.Syntax.Punctuation: MkSemicolon :: Ann a -> [Whitespace] -> Semicolon a
- Language.Python.Syntax.Statement: Assert :: a -> [Whitespace] -> Expr v a -> Maybe (Comma, Expr v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Assert :: Ann a -> [Whitespace] -> Expr v a -> Maybe (Comma, Expr v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: Assign :: a -> Expr v a -> NonEmpty (Equals, Expr v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Assign :: Ann a -> Expr v a -> NonEmpty (Equals, Expr v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: AugAssign :: a -> Expr v a -> AugAssign a -> Expr v a -> SimpleStatement a
+ Language.Python.Syntax.Statement: AugAssign :: Ann a -> Expr v a -> AugAssign a -> Expr v a -> SimpleStatement a
- Language.Python.Syntax.Statement: Break :: a -> [Whitespace] -> SimpleStatement a
+ Language.Python.Syntax.Statement: Break :: Ann a -> [Whitespace] -> SimpleStatement a
- Language.Python.Syntax.Statement: ClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> CompoundStatement a
+ Language.Python.Syntax.Statement: ClassDef :: Ann a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> CompoundStatement a
- Language.Python.Syntax.Statement: Continue :: a -> [Whitespace] -> SimpleStatement a
+ Language.Python.Syntax.Statement: Continue :: Ann a -> [Whitespace] -> SimpleStatement a
- Language.Python.Syntax.Statement: Decorator :: a -> Indents a -> At -> Expr v a -> Maybe (Comment a) -> Newline -> [(Blank a, Newline)] -> Decorator a
+ Language.Python.Syntax.Statement: Decorator :: Ann a -> Indents a -> At -> Expr v a -> Maybe (Comment a) -> Newline -> [(Blank a, Newline)] -> Decorator a
- Language.Python.Syntax.Statement: Del :: a -> [Whitespace] -> CommaSep1' (Expr v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Del :: Ann a -> [Whitespace] -> CommaSep1' (Expr v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: ExceptAs :: a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a
+ Language.Python.Syntax.Statement: ExceptAs :: Ann a -> Expr v a -> Maybe ([Whitespace], Ident v a) -> ExceptAs a
- Language.Python.Syntax.Statement: Expr :: a -> Expr v a -> SimpleStatement a
+ Language.Python.Syntax.Statement: Expr :: Ann a -> Expr v a -> SimpleStatement a
- Language.Python.Syntax.Statement: For :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
+ Language.Python.Syntax.Statement: For :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
- Language.Python.Syntax.Statement: From :: a -> [Whitespace] -> RelativeModuleName v a -> [Whitespace] -> ImportTargets v a -> SimpleStatement a
+ Language.Python.Syntax.Statement: From :: Ann a -> [Whitespace] -> RelativeModuleName v a -> [Whitespace] -> ImportTargets v a -> SimpleStatement a
- Language.Python.Syntax.Statement: Fundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> CompoundStatement a
+ Language.Python.Syntax.Statement: Fundef :: Ann a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> CompoundStatement a
- Language.Python.Syntax.Statement: Global :: a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Global :: Ann a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: If :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [(Indents a, [Whitespace], Expr v a, Suite v a)] -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
+ Language.Python.Syntax.Statement: If :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [(Indents a, [Whitespace], Expr v a, Suite v a)] -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
- Language.Python.Syntax.Statement: Import :: a -> NonEmpty Whitespace -> CommaSep1 (ImportAs (ModuleName v) v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Import :: Ann a -> NonEmpty Whitespace -> CommaSep1 (ImportAs ModuleName v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: Nonlocal :: a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Nonlocal :: Ann a -> NonEmpty Whitespace -> CommaSep1 (Ident v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: Pass :: a -> [Whitespace] -> SimpleStatement a
+ Language.Python.Syntax.Statement: Pass :: Ann a -> [Whitespace] -> SimpleStatement a
- Language.Python.Syntax.Statement: Raise :: a -> [Whitespace] -> Maybe (Expr v a, Maybe ([Whitespace], Expr v a)) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Raise :: Ann a -> [Whitespace] -> Maybe (Expr v a, Maybe ([Whitespace], Expr v a)) -> SimpleStatement a
- Language.Python.Syntax.Statement: Return :: a -> [Whitespace] -> Maybe (Expr v a) -> SimpleStatement a
+ Language.Python.Syntax.Statement: Return :: Ann a -> [Whitespace] -> Maybe (Expr v a) -> SimpleStatement a
- Language.Python.Syntax.Statement: SuiteMany :: a -> Colon -> Maybe (Comment a) -> Newline -> Block v a -> Suite a
+ Language.Python.Syntax.Statement: SuiteMany :: Ann a -> Colon -> Maybe (Comment a) -> Newline -> Block v a -> Suite a
- Language.Python.Syntax.Statement: SuiteOne :: a -> Colon -> SmallStatement v a -> Suite a
+ Language.Python.Syntax.Statement: SuiteOne :: Ann a -> Colon -> SmallStatement v a -> Suite a
- Language.Python.Syntax.Statement: TryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs v a), Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
+ Language.Python.Syntax.Statement: TryExcept :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Indents a, [Whitespace], Maybe (ExceptAs v a), Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
- Language.Python.Syntax.Statement: TryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Indents a -> [Whitespace] -> Suite v a -> CompoundStatement a
+ Language.Python.Syntax.Statement: TryFinally :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> Indents a -> [Whitespace] -> Suite v a -> CompoundStatement a
- Language.Python.Syntax.Statement: While :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
+ Language.Python.Syntax.Statement: While :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Indents a, [Whitespace], Suite v a) -> CompoundStatement a
- Language.Python.Syntax.Statement: With :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> CompoundStatement a
+ Language.Python.Syntax.Statement: With :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> CompoundStatement a
- Language.Python.Syntax.Statement: WithItem :: a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a
+ Language.Python.Syntax.Statement: WithItem :: Ann a -> Expr v a -> Maybe ([Whitespace], Expr v a) -> WithItem a
- Language.Python.Syntax.Statement: [_csAnn] :: CompoundStatement a -> a
+ Language.Python.Syntax.Statement: [_csAnn] :: CompoundStatement a -> Ann a
- Language.Python.Syntax.Statement: [_decoratorAnn] :: Decorator a -> a
+ Language.Python.Syntax.Statement: [_decoratorAnn] :: Decorator a -> Ann a
- Language.Python.Syntax.Statement: [_exceptAsAnn] :: ExceptAs a -> a
+ Language.Python.Syntax.Statement: [_exceptAsAnn] :: ExceptAs a -> Ann a
- Language.Python.Syntax.Statement: [_withItemAnn] :: WithItem a -> a
+ Language.Python.Syntax.Statement: [_withItemAnn] :: WithItem a -> Ann a
- Language.Python.Syntax.Statement: blockBlankLines :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) [(Blank a_a1KcI, Newline)]
+ Language.Python.Syntax.Statement: blockBlankLines :: forall v_a26s9 a_a26sa. Lens' (Block v_a26s9 a_a26sa) [(Blank a_a26sa, Newline)]
- Language.Python.Syntax.Statement: blockHead :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) (Statement v_a1KcH a_a1KcI)
+ Language.Python.Syntax.Statement: blockHead :: forall v_a26s9 a_a26sa. Lens' (Block v_a26s9 a_a26sa) (Statement v_a26s9 a_a26sa)
- Language.Python.Syntax.Statement: blockTail :: forall v_a1KcH a_a1KcI. Lens' (Block v_a1KcH a_a1KcI) [Either (Blank a_a1KcI, Newline) (Statement v_a1KcH a_a1KcI)]
+ Language.Python.Syntax.Statement: blockTail :: forall v_a26s9 a_a26sa. Lens' (Block v_a26s9 a_a26sa) [Either (Blank a_a26sa, Newline) (Statement v_a26s9 a_a26sa)]
- Language.Python.Syntax.Statement: exceptAsAnn :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) a_a1Kcx
+ Language.Python.Syntax.Statement: exceptAsAnn :: forall v_a26rY a_a26rZ. Lens' (ExceptAs v_a26rY a_a26rZ) (Ann a_a26rZ)
- Language.Python.Syntax.Statement: exceptAsExpr :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) (Expr v_a1Kcw a_a1Kcx)
+ Language.Python.Syntax.Statement: exceptAsExpr :: forall v_a26rY a_a26rZ. Lens' (ExceptAs v_a26rY a_a26rZ) (Expr v_a26rY a_a26rZ)
- Language.Python.Syntax.Statement: exceptAsName :: forall v_a1Kcw a_a1Kcx. Lens' (ExceptAs v_a1Kcw a_a1Kcx) (Maybe ([Whitespace], Ident v_a1Kcw a_a1Kcx))
+ Language.Python.Syntax.Statement: exceptAsName :: forall v_a26rY a_a26rZ. Lens' (ExceptAs v_a26rY a_a26rZ) (Maybe ([Whitespace], Ident v_a26rY a_a26rZ))
- Language.Python.Syntax.Statement: withItemAnn :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) a_a1Kct
+ Language.Python.Syntax.Statement: withItemAnn :: forall v_a26rU a_a26rV. Lens' (WithItem v_a26rU a_a26rV) (Ann a_a26rV)
- Language.Python.Syntax.Statement: withItemBinder :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) (Maybe ([Whitespace], Expr v_a1Kcs a_a1Kct))
+ Language.Python.Syntax.Statement: withItemBinder :: forall v_a26rU a_a26rV. Lens' (WithItem v_a26rU a_a26rV) (Maybe ([Whitespace], Expr v_a26rU a_a26rV))
- Language.Python.Syntax.Statement: withItemValue :: forall v_a1Kcs a_a1Kct. Lens' (WithItem v_a1Kcs a_a1Kct) (Expr v_a1Kcs a_a1Kct)
+ Language.Python.Syntax.Statement: withItemValue :: forall v_a26rU a_a26rV. Lens' (WithItem v_a26rU a_a26rV) (Expr v_a26rU a_a26rV)
- Language.Python.Syntax.Strings: BytesLiteral :: a -> BytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
+ Language.Python.Syntax.Strings: BytesLiteral :: Ann a -> BytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
- Language.Python.Syntax.Strings: RawBytesLiteral :: a -> RawBytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
+ Language.Python.Syntax.Strings: RawBytesLiteral :: Ann a -> RawBytesPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
- Language.Python.Syntax.Strings: RawStringLiteral :: a -> RawStringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
+ Language.Python.Syntax.Strings: RawStringLiteral :: Ann a -> RawStringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
- Language.Python.Syntax.Strings: StringLiteral :: a -> Maybe StringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
+ Language.Python.Syntax.Strings: StringLiteral :: Ann a -> Maybe StringPrefix -> StringType -> QuoteType -> [PyChar] -> [Whitespace] -> StringLiteral a
- Language.Python.Syntax.Strings: [_stringLiteralAnn] :: StringLiteral a -> a
+ Language.Python.Syntax.Strings: [_stringLiteralAnn] :: StringLiteral a -> Ann a
- Language.Python.Syntax.Strings: stringLiteralQuoteType :: forall a_aAPr. Lens' (StringLiteral a_aAPr) QuoteType
+ Language.Python.Syntax.Strings: stringLiteralQuoteType :: forall a_aHO9. Lens' (StringLiteral a_aHO9) QuoteType
- Language.Python.Syntax.Strings: stringLiteralStringType :: forall a_aAPr. Lens' (StringLiteral a_aAPr) StringType
+ Language.Python.Syntax.Strings: stringLiteralStringType :: forall a_aHO9. Lens' (StringLiteral a_aHO9) StringType
- Language.Python.Syntax.Strings: stringLiteralValue :: forall a_aAPr. Lens' (StringLiteral a_aAPr) [PyChar]
+ Language.Python.Syntax.Strings: stringLiteralValue :: forall a_aHO9. Lens' (StringLiteral a_aHO9) [PyChar]
- Language.Python.Syntax.Strings: stringLiteralWhitespace :: forall a_aAPr. Lens' (StringLiteral a_aAPr) [Whitespace]
+ Language.Python.Syntax.Strings: stringLiteralWhitespace :: forall a_aHO9. Lens' (StringLiteral a_aHO9) [Whitespace]
- Language.Python.Syntax.Types: MkCall :: a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a
+ Language.Python.Syntax.Types: MkCall :: Ann a -> Expr v a -> [Whitespace] -> Maybe (CommaSep1' (Arg v a)) -> [Whitespace] -> Call v a
- Language.Python.Syntax.Types: MkClassDef :: a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a
+ Language.Python.Syntax.Types: MkClassDef :: Ann a -> [Decorator v a] -> Indents a -> NonEmpty Whitespace -> Ident v a -> Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) -> Suite v a -> ClassDef v a
- Language.Python.Syntax.Types: MkFor :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a
+ Language.Python.Syntax.Types: MkFor :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> Expr v a -> [Whitespace] -> CommaSep1' (Expr v a) -> Suite v a -> Maybe (Else v a) -> For v a
- Language.Python.Syntax.Types: MkFundef :: a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a
+ Language.Python.Syntax.Types: MkFundef :: Ann a -> [Decorator v a] -> Indents a -> Maybe (NonEmpty Whitespace) -> NonEmpty Whitespace -> Ident v a -> [Whitespace] -> CommaSep (Param v a) -> [Whitespace] -> Maybe ([Whitespace], Expr v a) -> Suite v a -> Fundef v a
- Language.Python.Syntax.Types: MkIf :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a
+ Language.Python.Syntax.Types: MkIf :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> [Elif v a] -> Maybe (Else v a) -> If v a
- Language.Python.Syntax.Types: MkKeywordParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a
+ Language.Python.Syntax.Types: MkKeywordParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> [Whitespace] -> Expr v a -> KeywordParam v a
- Language.Python.Syntax.Types: MkList :: a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> List v a
+ Language.Python.Syntax.Types: MkList :: Ann a -> [Whitespace] -> Maybe (CommaSep1' (ListItem v a)) -> [Whitespace] -> List v a
- Language.Python.Syntax.Types: MkListUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListUnpack v a
+ Language.Python.Syntax.Types: MkListUnpack :: Ann a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> ListUnpack v a
- Language.Python.Syntax.Types: MkNone :: a -> [Whitespace] -> None a
+ Language.Python.Syntax.Types: MkNone :: Ann a -> [Whitespace] -> None a
- Language.Python.Syntax.Types: MkPositionalParam :: a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a
+ Language.Python.Syntax.Types: MkPositionalParam :: Ann a -> Ident v a -> Maybe (Colon, Expr v a) -> PositionalParam v a
- Language.Python.Syntax.Types: MkStarParam :: a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> StarParam v a
+ Language.Python.Syntax.Types: MkStarParam :: Ann a -> [Whitespace] -> Ident v a -> Maybe (Colon, Expr v a) -> StarParam v a
- Language.Python.Syntax.Types: MkTryExcept :: a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a
+ Language.Python.Syntax.Types: MkTryExcept :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> NonEmpty (Except v a) -> Maybe (Else v a) -> Maybe (Finally v a) -> TryExcept v a
- Language.Python.Syntax.Types: MkTryFinally :: a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a
+ Language.Python.Syntax.Types: MkTryFinally :: Ann a -> Indents a -> [Whitespace] -> Suite v a -> Finally v a -> TryFinally v a
- Language.Python.Syntax.Types: MkTuple :: a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a
+ Language.Python.Syntax.Types: MkTuple :: Ann a -> TupleItem v a -> Comma -> Maybe (CommaSep1' (TupleItem v a)) -> Tuple v a
- Language.Python.Syntax.Types: MkTupleUnpack :: a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleUnpack v a
+ Language.Python.Syntax.Types: MkTupleUnpack :: Ann a -> [([Whitespace], [Whitespace])] -> [Whitespace] -> Expr v a -> TupleUnpack v a
- Language.Python.Syntax.Types: MkUnnamedStarParam :: a -> [Whitespace] -> UnnamedStarParam a
+ Language.Python.Syntax.Types: MkUnnamedStarParam :: Ann a -> [Whitespace] -> UnnamedStarParam a
- Language.Python.Syntax.Types: MkWhile :: a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a
+ Language.Python.Syntax.Types: MkWhile :: Ann a -> Indents a -> [Whitespace] -> Expr v a -> Suite v a -> Maybe (Else v a) -> While v a
- Language.Python.Syntax.Types: MkWith :: a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a
+ Language.Python.Syntax.Types: MkWith :: Ann a -> Indents a -> Maybe (NonEmpty Whitespace) -> [Whitespace] -> CommaSep1 (WithItem v a) -> Suite v a -> With v a
- Language.Python.Syntax.Types: [_callAnn] :: Call v a -> a
+ Language.Python.Syntax.Types: [_callAnn] :: Call v a -> Ann a
- Language.Python.Syntax.Types: [_cdAnn] :: ClassDef v a -> a
+ Language.Python.Syntax.Types: [_cdAnn] :: ClassDef v a -> Ann a
- Language.Python.Syntax.Types: [_fdAnn] :: Fundef v a -> a
+ Language.Python.Syntax.Types: [_fdAnn] :: Fundef v a -> Ann a
- Language.Python.Syntax.Types: [_forAnn] :: For v a -> a
+ Language.Python.Syntax.Types: [_forAnn] :: For v a -> Ann a
- Language.Python.Syntax.Types: [_ifAnn] :: If v a -> a
+ Language.Python.Syntax.Types: [_ifAnn] :: If v a -> Ann a
- Language.Python.Syntax.Types: [_kpAnn] :: KeywordParam v a -> a
+ Language.Python.Syntax.Types: [_kpAnn] :: KeywordParam v a -> Ann a
- Language.Python.Syntax.Types: [_listAnn] :: List v a -> a
+ Language.Python.Syntax.Types: [_listAnn] :: List v a -> Ann a
- Language.Python.Syntax.Types: [_listUnpackAnn] :: ListUnpack v a -> a
+ Language.Python.Syntax.Types: [_listUnpackAnn] :: ListUnpack v a -> Ann a
- Language.Python.Syntax.Types: [_noneAnn] :: None a -> a
+ Language.Python.Syntax.Types: [_noneAnn] :: None a -> Ann a
- Language.Python.Syntax.Types: [_ppAnn] :: PositionalParam v a -> a
+ Language.Python.Syntax.Types: [_ppAnn] :: PositionalParam v a -> Ann a
- Language.Python.Syntax.Types: [_spAnn] :: StarParam v a -> a
+ Language.Python.Syntax.Types: [_spAnn] :: StarParam v a -> Ann a
- Language.Python.Syntax.Types: [_teAnn] :: TryExcept v a -> a
+ Language.Python.Syntax.Types: [_teAnn] :: TryExcept v a -> Ann a
- Language.Python.Syntax.Types: [_tfAnn] :: TryFinally v a -> a
+ Language.Python.Syntax.Types: [_tfAnn] :: TryFinally v a -> Ann a
- Language.Python.Syntax.Types: [_tupleAnn] :: Tuple v a -> a
+ Language.Python.Syntax.Types: [_tupleAnn] :: Tuple v a -> Ann a
- Language.Python.Syntax.Types: [_tupleUnpackAnn] :: TupleUnpack v a -> a
+ Language.Python.Syntax.Types: [_tupleUnpackAnn] :: TupleUnpack v a -> Ann a
- Language.Python.Syntax.Types: [_uspAnn] :: UnnamedStarParam a -> a
+ Language.Python.Syntax.Types: [_uspAnn] :: UnnamedStarParam a -> Ann a
- Language.Python.Syntax.Types: [_whileAnn] :: While v a -> a
+ Language.Python.Syntax.Types: [_whileAnn] :: While v a -> Ann a
- Language.Python.Syntax.Types: [_withAnn] :: With v a -> a
+ Language.Python.Syntax.Types: [_withAnn] :: With v a -> Ann a
- Language.Python.Syntax.Types: callAnn :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) a_a2jct
+ Language.Python.Syntax.Types: callAnn :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Ann a_a2N4c)
- Language.Python.Syntax.Types: callArguments :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Maybe (CommaSep1' (Arg v_a2jcs a_a2jct)))
+ Language.Python.Syntax.Types: callArguments :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Maybe (CommaSep1' (Arg v_a2N4b a_a2N4c)))
- Language.Python.Syntax.Types: callFunction :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) (Expr v_a2jcs a_a2jct)
+ Language.Python.Syntax.Types: callFunction :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) (Expr v_a2N4b a_a2N4c)
- Language.Python.Syntax.Types: callLeftParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace]
+ Language.Python.Syntax.Types: callLeftParen :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) [Whitespace]
- Language.Python.Syntax.Types: callRightParen :: forall v_a2jcs a_a2jct. Lens' (Call v_a2jcs a_a2jct) [Whitespace]
+ Language.Python.Syntax.Types: callRightParen :: forall v_a2N4b a_a2N4c. Lens' (Call v_a2N4b a_a2N4c) [Whitespace]
- Language.Python.Syntax.Types: cdAnn :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) a_a2keL
+ Language.Python.Syntax.Types: cdAnn :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Ann a_a2PY5)
- Language.Python.Syntax.Types: cdArguments :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2keK a_a2keL)), [Whitespace]))
+ Language.Python.Syntax.Types: cdArguments :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Maybe ([Whitespace], Maybe (CommaSep1' (Arg v_a2PY4 a_a2PY5)), [Whitespace]))
- Language.Python.Syntax.Types: cdBody :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Suite v_a2keK a_a2keL)
+ Language.Python.Syntax.Types: cdBody :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Suite v_a2PY4 a_a2PY5)
- Language.Python.Syntax.Types: cdClass :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (NonEmpty Whitespace)
+ Language.Python.Syntax.Types: cdClass :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (NonEmpty Whitespace)
- Language.Python.Syntax.Types: cdDecorators :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) [Decorator v_a2keK a_a2keL]
+ Language.Python.Syntax.Types: cdDecorators :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) [Decorator v_a2PY4 a_a2PY5]
- Language.Python.Syntax.Types: cdIndents :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Indents a_a2keL)
+ Language.Python.Syntax.Types: cdIndents :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Indents a_a2PY5)
- Language.Python.Syntax.Types: cdName :: forall v_a2keK a_a2keL. Lens' (ClassDef v_a2keK a_a2keL) (Ident v_a2keK a_a2keL)
+ Language.Python.Syntax.Types: cdName :: forall v_a2PY4 a_a2PY5. Lens' (ClassDef v_a2PY4 a_a2PY5) (Ident v_a2PY4 a_a2PY5)
- Language.Python.Syntax.Types: elifBody :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Suite v_a2jiC a_a2jiD)
+ Language.Python.Syntax.Types: elifBody :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Suite v_a2Noq a_a2Nor)
- Language.Python.Syntax.Types: elifCond :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Expr v_a2jiC a_a2jiD)
+ Language.Python.Syntax.Types: elifCond :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Expr v_a2Noq a_a2Nor)
- Language.Python.Syntax.Types: elifElif :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) [Whitespace]
+ Language.Python.Syntax.Types: elifElif :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) [Whitespace]
- Language.Python.Syntax.Types: elifIndents :: forall v_a2jiC a_a2jiD. Lens' (Elif v_a2jiC a_a2jiD) (Indents a_a2jiD)
+ Language.Python.Syntax.Types: elifIndents :: forall v_a2Noq a_a2Nor. Lens' (Elif v_a2Noq a_a2Nor) (Indents a_a2Nor)
- Language.Python.Syntax.Types: elseBody :: forall v_a2ivn a_a2ivo v_a2iF5. Lens (Else v_a2ivn a_a2ivo) (Else v_a2iF5 a_a2ivo) (Suite v_a2ivn a_a2ivo) (Suite v_a2iF5 a_a2ivo)
+ Language.Python.Syntax.Types: elseBody :: forall v_a2L90 a_a2L91 v_a2Lsw. Lens (Else v_a2L90 a_a2L91) (Else v_a2Lsw a_a2L91) (Suite v_a2L90 a_a2L91) (Suite v_a2Lsw a_a2L91)
- Language.Python.Syntax.Types: elseElse :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) [Whitespace]
+ Language.Python.Syntax.Types: elseElse :: forall v_a2L90 a_a2L91. Lens' (Else v_a2L90 a_a2L91) [Whitespace]
- Language.Python.Syntax.Types: elseIndents :: forall v_a2ivn a_a2ivo. Lens' (Else v_a2ivn a_a2ivo) (Indents a_a2ivo)
+ Language.Python.Syntax.Types: elseIndents :: forall v_a2L90 a_a2L91. Lens' (Else v_a2L90 a_a2L91) (Indents a_a2L91)
- Language.Python.Syntax.Types: exceptBody :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Suite v_a2jRM a_a2jRN)
+ Language.Python.Syntax.Types: exceptBody :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Suite v_a2OUh a_a2OUi)
- Language.Python.Syntax.Types: exceptExcept :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) [Whitespace]
+ Language.Python.Syntax.Types: exceptExcept :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) [Whitespace]
- Language.Python.Syntax.Types: exceptExceptAs :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Maybe (ExceptAs v_a2jRM a_a2jRN))
+ Language.Python.Syntax.Types: exceptExceptAs :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Maybe (ExceptAs v_a2OUh a_a2OUi))
- Language.Python.Syntax.Types: exceptIndents :: forall v_a2jRM a_a2jRN. Lens' (Except v_a2jRM a_a2jRN) (Indents a_a2jRN)
+ Language.Python.Syntax.Types: exceptIndents :: forall v_a2OUh a_a2OUi. Lens' (Except v_a2OUh a_a2OUi) (Indents a_a2OUi)
- Language.Python.Syntax.Types: fdAnn :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) a_a2im3
+ Language.Python.Syntax.Types: fdAnn :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Ann a_a2KCQ)
- Language.Python.Syntax.Types: fdAsync :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe (NonEmpty Whitespace))
+ Language.Python.Syntax.Types: fdAsync :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Maybe (NonEmpty Whitespace))
- Language.Python.Syntax.Types: fdBody :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Suite v_a2im2 a_a2im3)
+ Language.Python.Syntax.Types: fdBody :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Suite v_a2KCP a_a2KCQ)
- Language.Python.Syntax.Types: fdDecorators :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Decorator v_a2im2 a_a2im3]
+ Language.Python.Syntax.Types: fdDecorators :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Decorator v_a2KCP a_a2KCQ]
- Language.Python.Syntax.Types: fdDefSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (NonEmpty Whitespace)
+ Language.Python.Syntax.Types: fdDefSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (NonEmpty Whitespace)
- Language.Python.Syntax.Types: fdIndents :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Indents a_a2im3)
+ Language.Python.Syntax.Types: fdIndents :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Indents a_a2KCQ)
- Language.Python.Syntax.Types: fdLeftParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace]
+ Language.Python.Syntax.Types: fdLeftParenSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Whitespace]
- Language.Python.Syntax.Types: fdName :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Ident v_a2im2 a_a2im3)
+ Language.Python.Syntax.Types: fdName :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Ident v_a2KCP a_a2KCQ)
- Language.Python.Syntax.Types: fdParameters :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (CommaSep (Param v_a2im2 a_a2im3))
+ Language.Python.Syntax.Types: fdParameters :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (CommaSep (Param v_a2KCP a_a2KCQ))
- Language.Python.Syntax.Types: fdReturnType :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) (Maybe ([Whitespace], Expr v_a2im2 a_a2im3))
+ Language.Python.Syntax.Types: fdReturnType :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) (Maybe ([Whitespace], Expr v_a2KCP a_a2KCQ))
- Language.Python.Syntax.Types: fdRightParenSpaces :: forall v_a2im2 a_a2im3. Lens' (Fundef v_a2im2 a_a2im3) [Whitespace]
+ Language.Python.Syntax.Types: fdRightParenSpaces :: forall v_a2KCP a_a2KCQ. Lens' (Fundef v_a2KCP a_a2KCQ) [Whitespace]
- Language.Python.Syntax.Types: finallyBody :: forall v_a2jJi a_a2jJj v_a2jRn. Lens (Finally v_a2jJi a_a2jJj) (Finally v_a2jRn a_a2jJj) (Suite v_a2jJi a_a2jJj) (Suite v_a2jRn a_a2jJj)
+ Language.Python.Syntax.Types: finallyBody :: forall v_a2OBq a_a2OBr v_a2OTS. Lens (Finally v_a2OBq a_a2OBr) (Finally v_a2OTS a_a2OBr) (Suite v_a2OBq a_a2OBr) (Suite v_a2OTS a_a2OBr)
- Language.Python.Syntax.Types: finallyFinally :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) [Whitespace]
+ Language.Python.Syntax.Types: finallyFinally :: forall v_a2OBq a_a2OBr. Lens' (Finally v_a2OBq a_a2OBr) [Whitespace]
- Language.Python.Syntax.Types: finallyIndents :: forall v_a2jJi a_a2jJj. Lens' (Finally v_a2jJi a_a2jJj) (Indents a_a2jJj)
+ Language.Python.Syntax.Types: finallyIndents :: forall v_a2OBq a_a2OBr. Lens' (Finally v_a2OBq a_a2OBr) (Indents a_a2OBr)
- Language.Python.Syntax.Types: forAnn :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) a_a2jxZ
+ Language.Python.Syntax.Types: forAnn :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Ann a_a2O6G)
- Language.Python.Syntax.Types: forAsync :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Maybe (NonEmpty Whitespace))
+ Language.Python.Syntax.Types: forAsync :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Maybe (NonEmpty Whitespace))
- Language.Python.Syntax.Types: forBinder :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Expr v_a2jxY a_a2jxZ)
+ Language.Python.Syntax.Types: forBinder :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Expr v_a2O6F a_a2O6G)
- Language.Python.Syntax.Types: forBody :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Suite v_a2jxY a_a2jxZ)
+ Language.Python.Syntax.Types: forBody :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Suite v_a2O6F a_a2O6G)
- Language.Python.Syntax.Types: forCollection :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (CommaSep1' (Expr v_a2jxY a_a2jxZ))
+ Language.Python.Syntax.Types: forCollection :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (CommaSep1' (Expr v_a2O6F a_a2O6G))
- Language.Python.Syntax.Types: forElse :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Maybe (Else v_a2jxY a_a2jxZ))
+ Language.Python.Syntax.Types: forElse :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Maybe (Else v_a2O6F a_a2O6G))
- Language.Python.Syntax.Types: forFor :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) [Whitespace]
+ Language.Python.Syntax.Types: forFor :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) [Whitespace]
- Language.Python.Syntax.Types: forIn :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) [Whitespace]
+ Language.Python.Syntax.Types: forIn :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) [Whitespace]
- Language.Python.Syntax.Types: forIndents :: forall v_a2jxY a_a2jxZ. Lens' (For v_a2jxY a_a2jxZ) (Indents a_a2jxZ)
+ Language.Python.Syntax.Types: forIndents :: forall v_a2O6F a_a2O6G. Lens' (For v_a2O6F a_a2O6G) (Indents a_a2O6G)
- Language.Python.Syntax.Types: ifAnn :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) a_a2jpA
+ Language.Python.Syntax.Types: ifAnn :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Ann a_a2NHj)
- Language.Python.Syntax.Types: ifBody :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Suite v_a2jpz a_a2jpA)
+ Language.Python.Syntax.Types: ifBody :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Suite v_a2NHi a_a2NHj)
- Language.Python.Syntax.Types: ifCond :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Expr v_a2jpz a_a2jpA)
+ Language.Python.Syntax.Types: ifCond :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Expr v_a2NHi a_a2NHj)
- Language.Python.Syntax.Types: ifElifs :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Elif v_a2jpz a_a2jpA]
+ Language.Python.Syntax.Types: ifElifs :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) [Elif v_a2NHi a_a2NHj]
- Language.Python.Syntax.Types: ifElse :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Maybe (Else v_a2jpz a_a2jpA))
+ Language.Python.Syntax.Types: ifElse :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Maybe (Else v_a2NHi a_a2NHj))
- Language.Python.Syntax.Types: ifIf :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) [Whitespace]
+ Language.Python.Syntax.Types: ifIf :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) [Whitespace]
- Language.Python.Syntax.Types: ifIndents :: forall v_a2jpz a_a2jpA. Lens' (If v_a2jpz a_a2jpA) (Indents a_a2jpA)
+ Language.Python.Syntax.Types: ifIndents :: forall v_a2NHi a_a2NHj. Lens' (If v_a2NHi a_a2NHj) (Indents a_a2NHj)
- Language.Python.Syntax.Types: kpAnn :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) a_a2iMG
+ Language.Python.Syntax.Types: kpAnn :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Ann a_a2LOV)
- Language.Python.Syntax.Types: kpEquals :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) [Whitespace]
+ Language.Python.Syntax.Types: kpEquals :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) [Whitespace]
- Language.Python.Syntax.Types: kpExpr :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Expr v_a2iMF a_a2iMG)
+ Language.Python.Syntax.Types: kpExpr :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Expr v_a2LOU a_a2LOV)
- Language.Python.Syntax.Types: kpName :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Ident v_a2iMF a_a2iMG)
+ Language.Python.Syntax.Types: kpName :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Ident v_a2LOU a_a2LOV)
- Language.Python.Syntax.Types: kpType :: forall v_a2iMF a_a2iMG. Lens' (KeywordParam v_a2iMF a_a2iMG) (Maybe (Colon, Expr v_a2iMF a_a2iMG))
+ Language.Python.Syntax.Types: kpType :: forall v_a2LOU a_a2LOV. Lens' (KeywordParam v_a2LOU a_a2LOV) (Maybe (Colon, Expr v_a2LOU a_a2LOV))
- Language.Python.Syntax.Types: listAnn :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) a_a2kEB
+ Language.Python.Syntax.Types: listAnn :: forall v_a2Rb2 a_a2Rb3. Lens' (List v_a2Rb2 a_a2Rb3) (Ann a_a2Rb3)
- Language.Python.Syntax.Types: listBody :: forall v_a2kEA a_a2kEB v_a2kKt. Lens (List v_a2kEA a_a2kEB) (List v_a2kKt a_a2kEB) (Maybe (CommaSep1' (ListItem v_a2kEA a_a2kEB))) (Maybe (CommaSep1' (ListItem v_a2kKt a_a2kEB)))
+ Language.Python.Syntax.Types: listBody :: forall v_a2Rb2 a_a2Rb3 v_a2Rts. Lens (List v_a2Rb2 a_a2Rb3) (List v_a2Rts a_a2Rb3) (Maybe (CommaSep1' (ListItem v_a2Rb2 a_a2Rb3))) (Maybe (CommaSep1' (ListItem v_a2Rts a_a2Rb3)))
- Language.Python.Syntax.Types: listUnpackAnn :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) a_a2kL3
+ Language.Python.Syntax.Types: listUnpackAnn :: forall v_a2Ru1 a_a2Ru2. Lens' (ListUnpack v_a2Ru1 a_a2Ru2) (Ann a_a2Ru2)
- Language.Python.Syntax.Types: listUnpackParens :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) [([Whitespace], [Whitespace])]
+ Language.Python.Syntax.Types: listUnpackParens :: forall v_a2Ru1 a_a2Ru2. Lens' (ListUnpack v_a2Ru1 a_a2Ru2) [([Whitespace], [Whitespace])]
- Language.Python.Syntax.Types: listUnpackValue :: forall v_a2kL2 a_a2kL3 v_a2kR3. Lens (ListUnpack v_a2kL2 a_a2kL3) (ListUnpack v_a2kR3 a_a2kL3) (Expr v_a2kL2 a_a2kL3) (Expr v_a2kR3 a_a2kL3)
+ Language.Python.Syntax.Types: listUnpackValue :: forall v_a2Ru1 a_a2Ru2 v_a2RLh. Lens (ListUnpack v_a2Ru1 a_a2Ru2) (ListUnpack v_a2RLh a_a2Ru2) (Expr v_a2Ru1 a_a2Ru2) (Expr v_a2RLh a_a2Ru2)
- Language.Python.Syntax.Types: listUnpackWhitespace :: forall v_a2kL2 a_a2kL3. Lens' (ListUnpack v_a2kL2 a_a2kL3) [Whitespace]
+ Language.Python.Syntax.Types: listUnpackWhitespace :: forall v_a2Ru1 a_a2Ru2. Lens' (ListUnpack v_a2Ru1 a_a2Ru2) [Whitespace]
- Language.Python.Syntax.Types: listWhitespaceLeft :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) [Whitespace]
+ Language.Python.Syntax.Types: listWhitespaceLeft :: forall v_a2Rb2 a_a2Rb3. Lens' (List v_a2Rb2 a_a2Rb3) [Whitespace]
- Language.Python.Syntax.Types: listWhitespaceRight :: forall v_a2kEA a_a2kEB. Lens' (List v_a2kEA a_a2kEB) [Whitespace]
+ Language.Python.Syntax.Types: listWhitespaceRight :: forall v_a2Rb2 a_a2Rb3. Lens' (List v_a2Rb2 a_a2Rb3) [Whitespace]
- Language.Python.Syntax.Types: noneAnn :: forall v_a2kRA a_a2kRB v_a2kWD a_a2kWE. Lens (None v_a2kRA a_a2kRB) (None v_a2kWD a_a2kWE) a_a2kRB a_a2kWE
+ Language.Python.Syntax.Types: noneAnn :: forall v_a2RLO a_a2RLP v_a2RZS a_a2RZT. Lens (None v_a2RLO a_a2RLP) (None v_a2RZS a_a2RZT) (Ann a_a2RLP) (Ann a_a2RZT)
- Language.Python.Syntax.Types: noneWhitespace :: forall v_a2kRA a_a2kRB v_a2kWF. Lens (None v_a2kRA a_a2kRB) (None v_a2kWF a_a2kRB) [Whitespace] [Whitespace]
+ Language.Python.Syntax.Types: noneWhitespace :: forall v_a2RLO a_a2RLP v_a2RZU. Lens (None v_a2RLO a_a2RLP) (None v_a2RZU a_a2RLP) [Whitespace] [Whitespace]
- Language.Python.Syntax.Types: ppAnn :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) a_a2iUP
+ Language.Python.Syntax.Types: ppAnn :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Ann a_a2Mcv)
- Language.Python.Syntax.Types: ppName :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Ident v_a2iUO a_a2iUP)
+ Language.Python.Syntax.Types: ppName :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Ident v_a2Mcu a_a2Mcv)
- Language.Python.Syntax.Types: ppType :: forall v_a2iUO a_a2iUP. Lens' (PositionalParam v_a2iUO a_a2iUP) (Maybe (Colon, Expr v_a2iUO a_a2iUP))
+ Language.Python.Syntax.Types: ppType :: forall v_a2Mcu a_a2Mcv. Lens' (PositionalParam v_a2Mcu a_a2Mcv) (Maybe (Colon, Expr v_a2Mcu a_a2Mcv))
- Language.Python.Syntax.Types: spAnn :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) a_a2j1e
+ Language.Python.Syntax.Types: spAnn :: forall v_a2Mw0 a_a2Mw1. Lens' (StarParam v_a2Mw0 a_a2Mw1) (Ann a_a2Mw1)
- Language.Python.Syntax.Types: spName :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) (Ident v_a2j1d a_a2j1e)
+ Language.Python.Syntax.Types: spName :: forall v_a2Mw0 a_a2Mw1. Lens' (StarParam v_a2Mw0 a_a2Mw1) (Ident v_a2Mw0 a_a2Mw1)
- Language.Python.Syntax.Types: spType :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) (Maybe (Colon, Expr v_a2j1d a_a2j1e))
+ Language.Python.Syntax.Types: spType :: forall v_a2Mw0 a_a2Mw1. Lens' (StarParam v_a2Mw0 a_a2Mw1) (Maybe (Colon, Expr v_a2Mw0 a_a2Mw1))
- Language.Python.Syntax.Types: spWhitespace :: forall v_a2j1d a_a2j1e. Lens' (StarParam v_a2j1d a_a2j1e) [Whitespace]
+ Language.Python.Syntax.Types: spWhitespace :: forall v_a2Mw0 a_a2Mw1. Lens' (StarParam v_a2Mw0 a_a2Mw1) [Whitespace]
- Language.Python.Syntax.Types: teAnn :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) a_a2jXO
+ Language.Python.Syntax.Types: teAnn :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Ann a_a2Pc1)
- Language.Python.Syntax.Types: teBody :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Suite v_a2jXN a_a2jXO)
+ Language.Python.Syntax.Types: teBody :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Suite v_a2Pc0 a_a2Pc1)
- Language.Python.Syntax.Types: teElse :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Else v_a2jXN a_a2jXO))
+ Language.Python.Syntax.Types: teElse :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Maybe (Else v_a2Pc0 a_a2Pc1))
- Language.Python.Syntax.Types: teExcepts :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (NonEmpty (Except v_a2jXN a_a2jXO))
+ Language.Python.Syntax.Types: teExcepts :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (NonEmpty (Except v_a2Pc0 a_a2Pc1))
- Language.Python.Syntax.Types: teFinally :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Maybe (Finally v_a2jXN a_a2jXO))
+ Language.Python.Syntax.Types: teFinally :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Maybe (Finally v_a2Pc0 a_a2Pc1))
- Language.Python.Syntax.Types: teIndents :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) (Indents a_a2jXO)
+ Language.Python.Syntax.Types: teIndents :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) (Indents a_a2Pc1)
- Language.Python.Syntax.Types: teTry :: forall v_a2jXN a_a2jXO. Lens' (TryExcept v_a2jXN a_a2jXO) [Whitespace]
+ Language.Python.Syntax.Types: teTry :: forall v_a2Pc0 a_a2Pc1. Lens' (TryExcept v_a2Pc0 a_a2Pc1) [Whitespace]
- Language.Python.Syntax.Types: tfAnn :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) a_a2k6d
+ Language.Python.Syntax.Types: tfAnn :: forall v_a2PC1 a_a2PC2. Lens' (TryFinally v_a2PC1 a_a2PC2) (Ann a_a2PC2)
- Language.Python.Syntax.Types: tfBody :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Suite v_a2k6c a_a2k6d)
+ Language.Python.Syntax.Types: tfBody :: forall v_a2PC1 a_a2PC2. Lens' (TryFinally v_a2PC1 a_a2PC2) (Suite v_a2PC1 a_a2PC2)
- Language.Python.Syntax.Types: tfFinally :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Finally v_a2k6c a_a2k6d)
+ Language.Python.Syntax.Types: tfFinally :: forall v_a2PC1 a_a2PC2. Lens' (TryFinally v_a2PC1 a_a2PC2) (Finally v_a2PC1 a_a2PC2)
- Language.Python.Syntax.Types: tfIndents :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) (Indents a_a2k6d)
+ Language.Python.Syntax.Types: tfIndents :: forall v_a2PC1 a_a2PC2. Lens' (TryFinally v_a2PC1 a_a2PC2) (Indents a_a2PC2)
- Language.Python.Syntax.Types: tfTry :: forall v_a2k6c a_a2k6d. Lens' (TryFinally v_a2k6c a_a2k6d) [Whitespace]
+ Language.Python.Syntax.Types: tfTry :: forall v_a2PC1 a_a2PC2. Lens' (TryFinally v_a2PC1 a_a2PC2) [Whitespace]
- Language.Python.Syntax.Types: tupleAnn :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) a_a2kxe
+ Language.Python.Syntax.Types: tupleAnn :: forall v_a2QQo a_a2QQp. Lens' (Tuple v_a2QQo a_a2QQp) (Ann a_a2QQp)
- Language.Python.Syntax.Types: tupleComma :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) Comma
+ Language.Python.Syntax.Types: tupleComma :: forall v_a2QQo a_a2QQp. Lens' (Tuple v_a2QQo a_a2QQp) Comma
- Language.Python.Syntax.Types: tupleHead :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) (TupleItem v_a2kxd a_a2kxe)
+ Language.Python.Syntax.Types: tupleHead :: forall v_a2QQo a_a2QQp. Lens' (Tuple v_a2QQo a_a2QQp) (TupleItem v_a2QQo a_a2QQp)
- Language.Python.Syntax.Types: tupleTail :: forall v_a2kxd a_a2kxe. Lens' (Tuple v_a2kxd a_a2kxe) (Maybe (CommaSep1' (TupleItem v_a2kxd a_a2kxe)))
+ Language.Python.Syntax.Types: tupleTail :: forall v_a2QQo a_a2QQp. Lens' (Tuple v_a2QQo a_a2QQp) (Maybe (CommaSep1' (TupleItem v_a2QQo a_a2QQp)))
- Language.Python.Syntax.Types: tupleUnpackAnn :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) a_a2kWX
+ Language.Python.Syntax.Types: tupleUnpackAnn :: forall v_a2S0b a_a2S0c. Lens' (TupleUnpack v_a2S0b a_a2S0c) (Ann a_a2S0c)
- Language.Python.Syntax.Types: tupleUnpackParens :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) [([Whitespace], [Whitespace])]
+ Language.Python.Syntax.Types: tupleUnpackParens :: forall v_a2S0b a_a2S0c. Lens' (TupleUnpack v_a2S0b a_a2S0c) [([Whitespace], [Whitespace])]
- Language.Python.Syntax.Types: tupleUnpackValue :: forall v_a2kWW a_a2kWX v_a2l21. Lens (TupleUnpack v_a2kWW a_a2kWX) (TupleUnpack v_a2l21 a_a2kWX) (Expr v_a2kWW a_a2kWX) (Expr v_a2l21 a_a2kWX)
+ Language.Python.Syntax.Types: tupleUnpackValue :: forall v_a2S0b a_a2S0c v_a2Sgv. Lens (TupleUnpack v_a2S0b a_a2S0c) (TupleUnpack v_a2Sgv a_a2S0c) (Expr v_a2S0b a_a2S0c) (Expr v_a2Sgv a_a2S0c)
- Language.Python.Syntax.Types: tupleUnpackWhitespace :: forall v_a2kWW a_a2kWX. Lens' (TupleUnpack v_a2kWW a_a2kWX) [Whitespace]
+ Language.Python.Syntax.Types: tupleUnpackWhitespace :: forall v_a2S0b a_a2S0c. Lens' (TupleUnpack v_a2S0b a_a2S0c) [Whitespace]
- Language.Python.Syntax.Types: uspAnn :: forall v_a2j79 a_a2j7a v_a2jc8 a_a2jc9. Lens (UnnamedStarParam v_a2j79 a_a2j7a) (UnnamedStarParam v_a2jc8 a_a2jc9) a_a2j7a a_a2jc9
+ Language.Python.Syntax.Types: uspAnn :: forall v_a2MPR a_a2MPS v_a2N3R a_a2N3S. Lens (UnnamedStarParam v_a2MPR a_a2MPS) (UnnamedStarParam v_a2N3R a_a2N3S) (Ann a_a2MPS) (Ann a_a2N3S)
- Language.Python.Syntax.Types: uspWhitespace :: forall v_a2j79 a_a2j7a v_a2jca. Lens (UnnamedStarParam v_a2j79 a_a2j7a) (UnnamedStarParam v_a2jca a_a2j7a) [Whitespace] [Whitespace]
+ Language.Python.Syntax.Types: uspWhitespace :: forall v_a2MPR a_a2MPS v_a2N3T. Lens (UnnamedStarParam v_a2MPR a_a2MPS) (UnnamedStarParam v_a2N3T a_a2MPS) [Whitespace] [Whitespace]
- Language.Python.Syntax.Types: whileAnn :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) a_a2iFx
+ Language.Python.Syntax.Types: whileAnn :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Ann a_a2LsY)
- Language.Python.Syntax.Types: whileBody :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Suite v_a2iFw a_a2iFx)
+ Language.Python.Syntax.Types: whileBody :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Suite v_a2LsX a_a2LsY)
- Language.Python.Syntax.Types: whileCond :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Expr v_a2iFw a_a2iFx)
+ Language.Python.Syntax.Types: whileCond :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Expr v_a2LsX a_a2LsY)
- Language.Python.Syntax.Types: whileElse :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Maybe (Else v_a2iFw a_a2iFx))
+ Language.Python.Syntax.Types: whileElse :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Maybe (Else v_a2LsX a_a2LsY))
- Language.Python.Syntax.Types: whileIndents :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) (Indents a_a2iFx)
+ Language.Python.Syntax.Types: whileIndents :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) (Indents a_a2LsY)
- Language.Python.Syntax.Types: whileWhile :: forall v_a2iFw a_a2iFx. Lens' (While v_a2iFw a_a2iFx) [Whitespace]
+ Language.Python.Syntax.Types: whileWhile :: forall v_a2LsX a_a2LsY. Lens' (While v_a2LsX a_a2LsY) [Whitespace]
- Language.Python.Syntax.Types: withAnn :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) a_a2knY
+ Language.Python.Syntax.Types: withAnn :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Ann a_a2Qsc)
- Language.Python.Syntax.Types: withAsync :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Maybe (NonEmpty Whitespace))
+ Language.Python.Syntax.Types: withAsync :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Maybe (NonEmpty Whitespace))
- Language.Python.Syntax.Types: withBody :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Suite v_a2knX a_a2knY)
+ Language.Python.Syntax.Types: withBody :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Suite v_a2Qsb a_a2Qsc)
- Language.Python.Syntax.Types: withIndents :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (Indents a_a2knY)
+ Language.Python.Syntax.Types: withIndents :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (Indents a_a2Qsc)
- Language.Python.Syntax.Types: withItems :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) (CommaSep1 (WithItem v_a2knX a_a2knY))
+ Language.Python.Syntax.Types: withItems :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) (CommaSep1 (WithItem v_a2Qsb a_a2Qsc))
- Language.Python.Syntax.Types: withWith :: forall v_a2knX a_a2knY. Lens' (With v_a2knX a_a2knY) [Whitespace]
+ Language.Python.Syntax.Types: withWith :: forall v_a2Qsb a_a2Qsc. Lens' (With v_a2Qsb a_a2Qsc) [Whitespace]
- Language.Python.Syntax.Whitespace: Blank :: a -> [Whitespace] -> Maybe (Comment a) -> Blank a
+ Language.Python.Syntax.Whitespace: Blank :: Ann a -> [Whitespace] -> Maybe (Comment a) -> Blank a
- Language.Python.Syntax.Whitespace: Indents :: [Indent] -> a -> Indents a
+ Language.Python.Syntax.Whitespace: Indents :: [Indent] -> Ann a -> Indents a
- Language.Python.Syntax.Whitespace: [_blankAnn] :: Blank a -> a
+ Language.Python.Syntax.Whitespace: [_blankAnn] :: Blank a -> Ann a
- Language.Python.Syntax.Whitespace: [_indentsAnn] :: Indents a -> a
+ Language.Python.Syntax.Whitespace: [_indentsAnn] :: Indents a -> Ann a
- Language.Python.Syntax.Whitespace: indentsAnn :: forall a_av5Q a_awRJ. Lens (Indents a_av5Q) (Indents a_awRJ) a_av5Q a_awRJ
+ Language.Python.Syntax.Whitespace: indentsAnn :: forall a_aCu9 a_aDy8. Lens (Indents a_aCu9) (Indents a_aDy8) (Ann a_aCu9) (Ann a_aDy8)
- Language.Python.Syntax.Whitespace: indentsValue :: forall a_av5Q. Lens' (Indents a_av5Q) [Indent]
+ Language.Python.Syntax.Whitespace: indentsValue :: forall a_aCu9. Lens' (Indents a_aCu9) [Indent]
- Language.Python.Validate.Scope: scGlobalScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ)
+ Language.Python.Validate.Scope: scGlobalScope :: forall a_a5TRu. Lens' (ScopeContext a_a5TRu) (Map ByteString a_a5TRu)
- Language.Python.Validate.Scope: scImmediateScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ)
+ Language.Python.Validate.Scope: scImmediateScope :: forall a_a5TRu. Lens' (ScopeContext a_a5TRu) (Map ByteString a_a5TRu)
- Language.Python.Validate.Scope: scLocalScope :: forall a_a4KxZ. Lens' (ScopeContext a_a4KxZ) (Map ByteString a_a4KxZ)
+ Language.Python.Validate.Scope: scLocalScope :: forall a_a5TRu. Lens' (ScopeContext a_a5TRu) (Map ByteString a_a5TRu)
- Language.Python.Validate.Scope.Error: _BadShadowing :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (Ident ('[] :: [Type]) a_a4Jc4)
+ Language.Python.Validate.Scope.Error: _BadShadowing :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa (Ident ('[] :: [Type]) a_a5SvC)
- Language.Python.Validate.Scope.Error: _DeletedIdent :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4
+ Language.Python.Validate.Scope.Error: _DeletedIdent :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa a_a5SvC
- Language.Python.Validate.Scope.Error: _FoundDynamic :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (a_a4Jc4, Ident ('[] :: [Type]) a_a4Jc4)
+ Language.Python.Validate.Scope.Error: _FoundDynamic :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa (a_a5SvC, Ident ('[] :: [Type]) a_a5SvC)
- Language.Python.Validate.Scope.Error: _FoundGlobal :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4
+ Language.Python.Validate.Scope.Error: _FoundGlobal :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa a_a5SvC
- Language.Python.Validate.Scope.Error: _FoundNonlocal :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC a_a4Jc4
+ Language.Python.Validate.Scope.Error: _FoundNonlocal :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa a_a5SvC
- Language.Python.Validate.Scope.Error: _NotInScope :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (Ident ('[] :: [Type]) a_a4Jc4)
+ Language.Python.Validate.Scope.Error: _NotInScope :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa (Ident ('[] :: [Type]) a_a5SvC)
- Language.Python.Validate.Scope.Error: _ScopeError :: AsScopeError r_a4JhC a_a4Jc4 => Prism' r_a4JhC (ScopeError a_a4Jc4)
+ Language.Python.Validate.Scope.Error: _ScopeError :: AsScopeError r_a5SBa a_a5SvC => Prism' r_a5SBa (ScopeError a_a5SvC)
- Language.Python.Validate.Scope.Error: class AsScopeError r_a4JhC a_a4Jc4 | r_a4JhC -> a_a4Jc4
+ Language.Python.Validate.Scope.Error: class AsScopeError r_a5SBa a_a5SvC | r_a5SBa -> a_a5SvC
- Language.Python.Validate.Syntax: validateImportAsSyntax :: (AsSyntaxError e a, Member Indentation v) => (t a -> ValidateSyntax e (t' a)) -> ImportAs t v a -> ValidateSyntax e (ImportAs t' (Nub (Syntax : v)) a)
+ Language.Python.Validate.Syntax: validateImportAsSyntax :: (AsSyntaxError e a, Member Indentation v) => (t v a -> ValidateSyntax e (t' (Nub (Syntax : v)) a)) -> ImportAs t v a -> ValidateSyntax e (ImportAs t' (Nub (Syntax : v)) a)
- Language.Python.Validate.Syntax: validateSimpleStatementSyntax :: (AsSyntaxError e a, Member Indentation v) => SimpleStatement v a -> ValidateSyntax e (SimpleStatement (Nub (Syntax : v)) a)
+ Language.Python.Validate.Syntax: validateSimpleStatementSyntax :: forall e a v. (AsSyntaxError e a, Member Indentation v) => SimpleStatement v a -> ValidateSyntax e (SimpleStatement (Nub (Syntax : v)) a)
- Language.Python.Validate.Syntax.Error: _AsyncForOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _AsyncForOutsideCoroutine :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _AsyncWithOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _AsyncWithOutsideCoroutine :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _AwaitInsideComprehension :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _AwaitInsideComprehension :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _AwaitOutsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _AwaitOutsideCoroutine :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _BadCharacter :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _BadCharacter :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _BreakOutsideLoop :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _BreakOutsideLoop :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _Can'tJoinStringAndBytes :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _Can'tJoinStringAndBytes :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _CannotAssignTo :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _CannotAssignTo :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Expr ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _CannotAugAssignTo :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _CannotAugAssignTo :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Expr ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _CannotDelete :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _CannotDelete :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Expr ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _ContinueInsideFinally :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _ContinueInsideFinally :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _ContinueOutsideLoop :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _ContinueOutsideLoop :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _DefaultExceptMustBeLast :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _DefaultExceptMustBeLast :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _DuplicateArgument :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _DuplicateArgument :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _EmptyIdentifier :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _EmptyIdentifier :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _IdentifierReservedWord :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _IdentifierReservedWord :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _InvalidDictUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _InvalidDictUnpacking :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _InvalidSetUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _InvalidSetUnpacking :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _MalformedDecorator :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _MalformedDecorator :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _ManyStarredParams :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _ManyStarredParams :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _ManyStarredTargets :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _ManyStarredTargets :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _NoBindingNonlocal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (Ident ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _NoBindingNonlocal :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (Ident ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _NoKeywordsAfterEmptyStarArg :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _NoKeywordsAfterEmptyStarArg :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _NonAsciiInBytes :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Char)
+ Language.Python.Validate.Syntax.Error: _NonAsciiInBytes :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Char)
- Language.Python.Validate.Syntax.Error: _NonlocalOutsideFunction :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _NonlocalOutsideFunction :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _NullByte :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _NullByte :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _ParameterMarkedGlobal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _ParameterMarkedGlobal :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _ParametersNonlocal :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, [String])
+ Language.Python.Validate.Syntax.Error: _ParametersNonlocal :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, [String])
- Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordArg :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordArg :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Expr ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordParam :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordParam :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordUnpacking :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, Expr ('[] :: [Type]) a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _PositionalAfterKeywordUnpacking :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, Expr ('[] :: [Type]) a_a644s)
- Language.Python.Validate.Syntax.Error: _ReturnOutsideFunction :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _ReturnOutsideFunction :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _SyntaxError :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (SyntaxError a_a4UAh)
+ Language.Python.Validate.Syntax.Error: _SyntaxError :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (SyntaxError a_a644s)
- Language.Python.Validate.Syntax.Error: _TypedParamInLambda :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _TypedParamInLambda :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _UnexpectedComment :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _UnexpectedComment :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _UnexpectedDoubleStarParam :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX (a_a4UAh, String)
+ Language.Python.Validate.Syntax.Error: _UnexpectedDoubleStarParam :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 (a_a644s, String)
- Language.Python.Validate.Syntax.Error: _UnexpectedNewline :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _UnexpectedNewline :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _WildcardImportInDefinition :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _WildcardImportInDefinition :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _YieldFromInsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _YieldFromInsideCoroutine :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _YieldInsideCoroutine :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _YieldInsideCoroutine :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: _YieldOutsideGenerator :: AsSyntaxError r_a4UZX a_a4UAh => Prism' r_a4UZX a_a4UAh
+ Language.Python.Validate.Syntax.Error: _YieldOutsideGenerator :: AsSyntaxError r_a64u8 a_a644s => Prism' r_a64u8 a_a644s
- Language.Python.Validate.Syntax.Error: class AsSyntaxError r_a4UZX a_a4UAh | r_a4UZX -> a_a4UAh
+ Language.Python.Validate.Syntax.Error: class AsSyntaxError r_a64u8 a_a644s | r_a64u8 -> a_a644s
Files
- ChangeLog.md +22/−0
- example/Main.hs +6/−1
- example/Programs.hs +11/−11
- example/Recase.hs +29/−0
- hpython.cabal +9/−2
- src/Language/Python/DSL.hs +140/−136
- src/Language/Python/Internal/Lexer.hs +27/−21
- src/Language/Python/Internal/Parse.hs +81/−86
- src/Language/Python/Internal/Render.hs +4/−4
- src/Language/Python/Internal/Syntax/IR.hs +115/−114
- src/Language/Python/Internal/Token.hs +6/−4
- src/Language/Python/Optics.hs +18/−5
- src/Language/Python/Optics/Idents.hs +162/−0
- src/Language/Python/Optics/Newlines.hs +5/−5
- src/Language/Python/Parse.hs +69/−3
- src/Language/Python/Syntax.hs +3/−1
- src/Language/Python/Syntax/Ann.hs +44/−0
- src/Language/Python/Syntax/AugAssign.hs +13/−5
- src/Language/Python/Syntax/CommaSep.hs +5/−4
- src/Language/Python/Syntax/Comment.hs +13/−3
- src/Language/Python/Syntax/Expr.hs +277/−146
- src/Language/Python/Syntax/Ident.hs +14/−6
- src/Language/Python/Syntax/Import.hs +30/−15
- src/Language/Python/Syntax/Module.hs +8/−2
- src/Language/Python/Syntax/ModuleNames.hs +27/−20
- src/Language/Python/Syntax/Numbers.hs +34/−16
- src/Language/Python/Syntax/Operator/Binary.hs +38/−32
- src/Language/Python/Syntax/Operator/Unary.hs +15/−6
- src/Language/Python/Syntax/Punctuation.hs +16/−7
- src/Language/Python/Syntax/Statement.hs +69/−38
- src/Language/Python/Syntax/Strings.hs +22/−14
- src/Language/Python/Syntax/Types.hs +118/−40
- src/Language/Python/Syntax/Whitespace.hs +18/−6
- src/Language/Python/Validate/Indentation.hs +10/−9
- src/Language/Python/Validate/Scope.hs +16/−15
- src/Language/Python/Validate/Syntax.hs +197/−146
- test/DSL.hs +2/−1
- test/LexerParser.hs +25/−24
- test/Optics.hs +26/−4
- test/Scope.hs +9/−8
- test/Syntax.hs +15/−14
- test/files/exprs_optics_in1.py +3/−0
- test/files/exprs_optics_out1.py +3/−0
- test/files/idents_optics_in1.py +3/−0
- test/files/idents_optics_out1.py +3/−0
ChangeLog.md view
@@ -1,5 +1,27 @@ # Revision history for hpython +## 0.2++* Improved Plated instance for exprs++ It now drills down into collections, parameters, arguments, subscripts, and+ comprehensions+ +* Added `_Idents` traversal++* Annotations are now wrapped in the `Ann` type to aid generic deriving++* Added `HasExprs` instance for `Module`++* Added `HasStatements` instance for `Statement`++* Added IO-based `read-` functions to `Language.Python.Parse`++* Re-export `Data.Validation` from `Language.Python.Parse`++* Added `annot` and `annot_` lenses to `Language.Python.Syntax.Ann` to retrieve+ annotations from structures+ ## 0.1.0.1 *2019-01-07*
example/Main.hs view
@@ -7,6 +7,7 @@ import FixMutableDefaultArguments import OptimizeTailRecursion import Indentation+import Recase import Validation import Language.Python.Render (showModule)@@ -46,4 +47,8 @@ section $ do putStrLn "Validated\n"- doValidating+ doValidating++ section $ do+ putStrLn "Recased\n"+ recase
example/Programs.hs view
@@ -22,26 +22,26 @@ append_to :: Raw Statement append_to = CompoundStatement $- Fundef () [] (Indents [] ())+ Fundef (Ann ()) [] (Indents [] (Ann ())) Nothing (Space :| []) "append_to" []- ( CommaSepMany (PositionalParam () "element" Nothing) (MkComma [Space]) $- CommaSepOne (KeywordParam () "to" Nothing [] (List () [] Nothing []))+ ( CommaSepMany (PositionalParam (Ann ()) "element" Nothing) (MkComma [Space]) $+ CommaSepOne (KeywordParam (Ann ()) "to" Nothing [] (List (Ann ()) [] Nothing [])) ) [] Nothing- (SuiteMany () (MkColon []) Nothing LF $+ (SuiteMany (Ann ()) (MkColon []) Nothing LF $ Block [] ( SmallStatement- (Indents [replicate 4 Space ^. from indentWhitespaces] ())+ (Indents [replicate 4 Space ^. from indentWhitespaces] (Ann ())) (MkSmallStatement- (Expr () $- Call ()- (Deref () (Ident "to") [] "append")+ (Expr (Ann ()) $+ Call (Ann ())+ (Deref (Ann ()) (Ident (Ann ()) "to") [] "append") []- (Just $ CommaSepOne1' (PositionalArg () (Ident "element")) Nothing)+ (Just $ CommaSepOne1' (PositionalArg (Ann ()) (Ident (Ann ()) "element")) Nothing) []) [] Nothing@@ -50,9 +50,9 @@ ) [ Right $ SmallStatement- (Indents [replicate 4 Space ^. from indentWhitespaces] ())+ (Indents [replicate 4 Space ^. from indentWhitespaces] (Ann ())) (MkSmallStatement- (Return () [Space] (Just $ Ident "to"))+ (Return (Ann ()) [Space] (Just $ Ident (Ann ()) "to")) [] Nothing Nothing
+ example/Recase.hs view
@@ -0,0 +1,29 @@+{-# language TypeApplications #-}+module Recase (recase) where++import Control.Lens.Setter (over)+import Control.Lens.Plated (transform)+import Data.Char (toUpper)++import qualified Data.Text.IO as Text++import Language.Python.Parse+import Language.Python.Optics.Idents+import Language.Python.Render (showModule)+import Language.Python.Syntax (identValue)++snakeToCamel :: String -> String+snakeToCamel =+ transform $+ \s -> case s of+ '_' : c : cs -> toUpper c : cs+ _ -> s++recase :: IO ()+recase = do+ m <- readModule @(ParseError SrcInfo) "example/snake_cased.py"+ case m of+ Failure err -> error $ show err+ Success a -> do+ let fixed = over (_Idents.identValue) snakeToCamel a+ Text.putStrLn $ showModule fixed
hpython.cabal view
@@ -2,7 +2,7 @@ -- documentation, see http://haskell.org/cabal/users-guide/ name: hpython-version: 0.1.0.1+version: 0.2 synopsis: Python language tools description: `hpython` provides an abstract syntax tree for Python 3.5, along with a parser,@@ -35,6 +35,10 @@ test/files/indent_optics_out.py test/files/indent_optics_in2.py test/files/indent_optics_out2.py+ test/files/exprs_optics_in1.py+ test/files/exprs_optics_out1.py+ test/files/idents_optics_in1.py+ test/files/idents_optics_out1.py test/files/joblib.py test/files/joblib2.py test/files/mypy.py@@ -83,6 +87,7 @@ , Language.Python.Internal.Token , Language.Python.Internal.Syntax.IR , Language.Python.Optics+ , Language.Python.Optics.Idents , Language.Python.Optics.Indents , Language.Python.Optics.Newlines , Language.Python.Optics.Validated@@ -90,6 +95,7 @@ , Language.Python.Parse.Error , Language.Python.Render , Language.Python.Syntax+ , Language.Python.Syntax.Ann , Language.Python.Syntax.AugAssign , Language.Python.Syntax.CommaSep , Language.Python.Syntax.Comment@@ -124,6 +130,7 @@ , parsers >= 0.10 && < 0.13 , megaparsec >=6.3 && <7 , fingertree >=0.1 && <0.2+ , generic-lens >=1.0 && <1.2 , mtl >= 2.1 && < 2.3 , containers >=0.5.7.1 && <0.7 , deriving-compat >=0.4 && <0.6@@ -148,6 +155,7 @@ , FixMutableDefaultArguments , OptimizeTailRecursion , Programs+ , Recase , Validation hs-source-dirs: example build-depends: base >=4.9 && <5, lens, hpython, text@@ -157,7 +165,6 @@ -Wunused-imports if flag(development) ghc-options: -Werror- benchmark bench main-is: Main.hs
src/Language/Python/DSL.hs view
@@ -425,6 +425,7 @@ import Data.Semigroup ((<>)) import Language.Python.Optics+import Language.Python.Syntax.Ann import Language.Python.Syntax.AugAssign import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Expr@@ -473,7 +474,7 @@ -- | Create a blank 'Line' blank_ :: Raw Line-blank_ = Line $ Left (Blank () [] Nothing, LF)+blank_ = Line $ Left (Blank (Ann ()) [] Nothing, LF) -- | Convert some data to a 'Line' class AsLine s where@@ -481,11 +482,11 @@ instance AsLine SmallStatement where line_ ss =- Line . Right $ SmallStatement (Indents [] ()) ss+ Line . Right $ SmallStatement (Indents [] (Ann ())) ss instance AsLine SimpleStatement where line_ ss =- Line . Right . SmallStatement (Indents [] ()) $+ Line . Right . SmallStatement (Indents [] (Ann ())) $ MkSmallStatement ss [] Nothing Nothing (Just LF) instance AsLine CompoundStatement where@@ -510,7 +511,7 @@ line_ = Line . Right instance AsLine Expr where- line_ e = line_ $ Expr (e ^. exprAnn) e+ line_ e = line_ $ Expr (e ^. annot) e instance HasExprs Line where _Exprs f (Line a) = Line <$> (_Right._Exprs) f a@@ -562,7 +563,7 @@ -- -- @('.:') :: 'Raw' 'Expr' -> 'Raw' 'Expr' -> 'Raw' 'DictItem'@ instance ColonSyntax Expr DictItem where- (.:) a = DictItem () a (MkColon [Space])+ (.:) a = DictItem (Ann ()) a (MkColon [Space]) -- | Function parameter type annotations --@@ -589,22 +590,22 @@ -- | See 'def_' instance StarSyntax Ident Param where- s_ i = StarParam () [] i Nothing+ s_ i = StarParam (Ann ()) [] i Nothing -- | See 'def_' instance DoubleStarSyntax Ident Param where- ss_ i = DoubleStarParam () [] i Nothing+ ss_ i = DoubleStarParam (Ann ()) [] i Nothing class StarSyntax s t | t -> s where s_ :: Raw s -> Raw t -- | See 'call_' instance StarSyntax Expr Arg where- s_ = StarArg () []+ s_ = StarArg (Ann ()) [] -- | See 'call_' instance DoubleStarSyntax Expr Arg where- ss_ = DoubleStarArg () []+ ss_ = DoubleStarArg (Ann ()) [] -- | Keyword parameters/arguments --@@ -624,28 +625,28 @@ -- def a(b, *): -- pass star_ :: Raw Param-star_ = UnnamedStarParam () []+star_ = UnnamedStarParam (Ann ()) [] class DoubleStarSyntax s t | t -> s where ss_ :: Raw s -> Raw t -- | See 'dict_' instance DoubleStarSyntax Expr DictItem where- ss_ = DictUnpack () []+ ss_ = DictUnpack (Ann ()) [] -- | See 'def_' instance PositionalSyntax Param Ident where- p_ i = PositionalParam () i Nothing+ p_ i = PositionalParam (Ann ()) i Nothing -- | See 'def_' instance KeywordSyntax Param where- k_ a = KeywordParam () a Nothing []+ k_ a = KeywordParam (Ann ()) a Nothing [] -- | See 'call_'-instance PositionalSyntax Arg Expr where; p_ = PositionalArg ()+instance PositionalSyntax Arg Expr where; p_ = PositionalArg (Ann ()) -- | See 'call_'-instance KeywordSyntax Arg where; k_ a = KeywordArg () a []+instance KeywordSyntax Arg where; k_ a = KeywordArg (Ann ()) a [] class ParametersSyntax s where -- | A faux-Lens that allows targeting 'Param's in-between existing formatting,@@ -696,7 +697,7 @@ decorated_ = setDecorators exprsToDecorators :: Indents () -> [Raw Expr] -> [Raw Decorator]-exprsToDecorators is = fmap (\e -> Decorator () is (MkAt []) e Nothing LF [])+exprsToDecorators is = fmap (\e -> Decorator (Ann ()) is (MkAt []) e Nothing LF []) instance DecoratorsSyntax Fundef where decorators = fdDecorators@@ -723,7 +724,7 @@ -- spaces. defaultIndent = fromMaybe- (Indents [replicate 4 Space ^. from indentWhitespaces] ())+ (Indents [replicate 4 Space ^. from indentWhitespaces] (Ann ())) (e ^? gIndents) -- | The number of indentation chunks that precede the lines we're focusing on.@@ -890,9 +891,9 @@ mkFundef :: Raw Ident -> [Raw Line] -> Raw Fundef mkFundef name body = MkFundef- { _fdAnn = ()+ { _fdAnn = Ann () , _fdDecorators = []- , _fdIndents = Indents [] ()+ , _fdIndents = Indents [] (Ann ()) , _fdAsync = Nothing , _fdDefSpaces = pure Space , _fdName = name@@ -900,7 +901,7 @@ , _fdParameters = CommaSepNone , _fdRightParenSpaces = [] , _fdReturnType = Nothing- , _fdBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _fdBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } -- |@@ -930,7 +931,7 @@ mkCall :: Raw Expr -> Raw Call mkCall e = MkCall- { _callAnn = ()+ { _callAnn = Ann () , _callFunction = e , _callLeftParen = [] , _callArguments = Nothing@@ -976,8 +977,8 @@ return_ :: Raw Expr -> Raw Statement return_ e = SmallStatement- (Indents [] ())- (MkSmallStatement (Return () [Space] $ Just e) [] Nothing Nothing (Just LF))+ (Indents [] (Ann ()))+ (MkSmallStatement (Return (Ann ()) [Space] $ Just e) [] Nothing Nothing (Just LF)) -- | Turns an 'Expr' into a 'Statement' --@@ -986,8 +987,8 @@ expr_ :: Raw Expr -> Raw Statement expr_ e = SmallStatement- (Indents [] ())- (MkSmallStatement (Expr () e) [] Nothing Nothing (Just LF))+ (Indents [] (Ann ()))+ (MkSmallStatement (Expr (Ann ()) e) [] Nothing Nothing (Just LF)) -- | -- >>> list_ [li_ $ var_ "a"]@@ -1012,17 +1013,17 @@ li_ = id instance AsListItem Expr where- li_ = ListItem ()+ li_ = ListItem (Ann ()) -- | See 'list_' instance StarSyntax Expr ListItem where- s_ = ListUnpack () [] []+ s_ = ListUnpack (Ann ()) [] [] instance e ~ Raw ListItem => AsList [e] where- list_ es = List () [] (listToCommaSep1' es) []+ list_ es = List (Ann ()) [] (listToCommaSep1' es) [] instance e ~ Comprehension Expr => AsList (Raw e) where- list_ c = ListComp () [] c []+ list_ c = ListComp (Ann ()) [] c [] newtype Guard v a = MkGuard { unGuard :: Either (CompFor v a) (CompIf v a) } @@ -1035,7 +1036,7 @@ -- >>> comp_ (var_ "a") (for_ $ var_ "a" `in_` var_ "b") [] -- a for a in b instance ForSyntax (Raw CompFor) In where- for_ (MkIn a b) = CompFor () [Space] a [Space] b+ for_ (MkIn a b) = CompFor (Ann ()) [Space] a [Space] b -- | -- @'for_' :: 'Raw' 'In' -> 'Raw' 'Guard'@@@ -1043,7 +1044,7 @@ -- >>> comp_ (var_ "a") (for_ $ var_ "a" `in_` var_ "b") [for_ $ var_ "c" `in_` var_ "d"] -- a for a in b for c in d instance ForSyntax (Raw Guard) In where- for_ (MkIn a b) = MkGuard . Left $ CompFor () [Space] a [Space] b+ for_ (MkIn a b) = MkGuard . Left $ CompFor (Ann ()) [Space] a [Space] b class IfSyntax a where if_ :: Raw Expr -> a@@ -1054,7 +1055,7 @@ -- >>> comp_ (var_ "a") (for_ $ var_ "a" `in_` var_ "b") [if_ $ var_ "c" .== var_ "d"] -- a for a in b if c == d instance IfSyntax (Raw Guard) where- if_ = MkGuard . Right . CompIf () [Space]+ if_ = MkGuard . Right . CompIf (Ann ()) [Space] -- | -- >>> set_ []@@ -1082,24 +1083,24 @@ si_ = id instance AsSetItem Expr where- si_ = SetItem ()+ si_ = SetItem (Ann ()) -- | See 'set_' instance StarSyntax Expr SetItem where- s_ = SetUnpack () [] []+ s_ = SetUnpack (Ann ()) [] [] instance e ~ Raw SetItem => AsSet [e] where set_ es = case es of [] -> call_ (var_ "set") []- a:as -> Set () [] ((a, zip (repeat (MkComma [Space])) as, Nothing) ^. _CommaSep1') []+ a:as -> Set (Ann ()) [] ((a, zip (repeat (MkComma [Space])) as, Nothing) ^. _CommaSep1') [] instance e ~ Comprehension SetItem => AsSet (Raw e) where- set_ c = SetComp () [] c []+ set_ c = SetComp (Ann ()) [] c [] comp_ :: Raw e -> Raw CompFor -> [Raw Guard] -> Raw (Comprehension e) comp_ val cfor guards =- Comprehension ()+ Comprehension (Ann ()) val (if null guards then cfor@@ -1110,7 +1111,7 @@ -- >>> gen_ $ comp_ (var_ "a") (for_ $ var_ "a" `in_` list_ [li_ $ int_ 1, li_ $ int_ 2, li_ $ int_ 3]) [if_ $ var_ "a" .== 2] -- (a for a in [1, 2, 3] if a == 2) gen_ :: Raw (Comprehension Expr) -> Raw Expr-gen_ = Generator ()+gen_ = Generator (Ann ()) -- | -- >>> dict_ [var_ "a" .: 1]@@ -1131,7 +1132,7 @@ -- @'dict_' :: ['Raw' 'DictItem'] -> 'Raw' 'Expr'@ instance e ~ Raw DictItem => AsDict [e] where dict_ ds =- Dict ()+ Dict (Ann ()) [] (case ds of [] -> Nothing@@ -1141,14 +1142,14 @@ -- | -- @'dict_' :: 'Raw' ('Comprehension' 'DictItem') -> 'Raw' 'Expr'@ instance e ~ Comprehension DictItem => AsDict (Raw e) where- dict_ comp = DictComp () [] comp []+ dict_ comp = DictComp (Ann ()) [] comp [] mkBinOp :: ([Whitespace] -> BinOp ()) -> Raw Expr -> Raw Expr -> Raw Expr-mkBinOp bop a = BinOp () (a & trailingWhitespace .~ [Space]) (bop [Space])+mkBinOp bop a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (bop [Space]) -- | @a is b@ is_ :: Raw Expr -> Raw Expr -> Raw Expr-is_ = mkBinOp $ Is ()+is_ = mkBinOp $ Is (Ann ()) infixl 1 `is_` -- |@@ -1169,19 +1170,19 @@ -- -- Does not have a precedence and_ :: Raw Expr -> Raw Expr -> Raw Expr-and_ a = BinOp () (a & trailingWhitespace .~ [Space]) (BoolAnd () [Space])+and_ a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (BoolAnd (Ann ()) [Space]) -- | @a or b@ -- -- Does not have a precedence or_ :: Raw Expr -> Raw Expr -> Raw Expr-or_ a = BinOp () (a & trailingWhitespace .~ [Space]) (BoolOr () [Space])+or_ a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (BoolOr (Ann ()) [Space]) -- | -- >>> var_ "a" `in_` var_ "b" -- a in b instance InSyntax Expr (Raw Expr) where- in_ = mkBinOp $ In ()+ in_ = mkBinOp $ In (Ann ()) -- | See 'for_' instance e ~ Raw Expr => InSyntax InList [e] where@@ -1189,71 +1190,71 @@ -- | @a not in b@ notIn_ :: Raw Expr -> Raw Expr -> Raw Expr-notIn_ = mkBinOp $ NotIn () [Space]+notIn_ = mkBinOp $ NotIn (Ann ()) [Space] infixl 1 `notIn_` -- | @a is not b@ isNot_ :: Raw Expr -> Raw Expr -> Raw Expr-isNot_ = mkBinOp $ IsNot () [Space]+isNot_ = mkBinOp $ IsNot (Ann ()) [Space] infixl 1 `isNot_` -- | @not a@ not_ :: Raw Expr -> Raw Expr-not_ = Not () [Space]+not_ = Not (Ann ()) [Space] -- | @a == b@ (.==) :: Raw Expr -> Raw Expr -> Raw Expr-(.==) = mkBinOp $ Eq ()+(.==) = mkBinOp $ Eq (Ann ()) infixl 1 .== -- | @a < b@ (.<) :: Raw Expr -> Raw Expr -> Raw Expr-(.<) = mkBinOp $ Lt ()+(.<) = mkBinOp $ Lt (Ann ()) infixl 1 .< -- | @a <= b@ (.<=) :: Raw Expr -> Raw Expr -> Raw Expr-(.<=) = mkBinOp $ LtEq ()+(.<=) = mkBinOp $ LtEq (Ann ()) infixl 1 .<= -- | @a > b@ (.>) :: Raw Expr -> Raw Expr -> Raw Expr-(.>) = mkBinOp $ Gt ()+(.>) = mkBinOp $ Gt (Ann ()) infixl 1 .> -- | @a >= b@ (.>=) :: Raw Expr -> Raw Expr -> Raw Expr-(.>=) = mkBinOp $ GtEq ()+(.>=) = mkBinOp $ GtEq (Ann ()) infixl 1 .>= -- | @a != b@ (.!=) :: Raw Expr -> Raw Expr -> Raw Expr-(.!=) = mkBinOp $ NotEq ()+(.!=) = mkBinOp $ NotEq (Ann ()) infixl 1 .!= -- | @a | b@ (.|) :: Raw Expr -> Raw Expr -> Raw Expr-(.|) = mkBinOp $ BitOr ()+(.|) = mkBinOp $ BitOr (Ann ()) infixl 2 .| -- | @a ^ b@ (.^) :: Raw Expr -> Raw Expr -> Raw Expr-(.^) = mkBinOp $ BitXor ()+(.^) = mkBinOp $ BitXor (Ann ()) infixl 3 .^ -- | @a & b@ (.&) :: Raw Expr -> Raw Expr -> Raw Expr -(.&) = mkBinOp $ BitAnd ()+(.&) = mkBinOp $ BitAnd (Ann ()) infixl 4 .& -- | @a << b@ (.<<) :: Raw Expr -> Raw Expr -> Raw Expr -(.<<) = mkBinOp $ ShiftLeft ()+(.<<) = mkBinOp $ ShiftLeft (Ann ()) infixl 5 .<< -- | @a >> b@ (.>>) :: Raw Expr -> Raw Expr -> Raw Expr -(.>>) = mkBinOp $ ShiftRight ()+(.>>) = mkBinOp $ ShiftRight (Ann ()) infixl 5 .>> -- | @a + b@@@ -1273,34 +1274,34 @@ -- | @a \@ b@ (.@) :: Raw Expr -> Raw Expr -> Raw Expr-(.@) = mkBinOp $ At ()+(.@) = mkBinOp $ At (Ann ()) infixl 7 .@ -- | @a / b@ (./) :: Raw Expr -> Raw Expr -> Raw Expr-(./) = mkBinOp $ Divide ()+(./) = mkBinOp $ Divide (Ann ()) infixl 7 ./ -- | @a // b@ (.//) :: Raw Expr -> Raw Expr -> Raw Expr-(.//) = mkBinOp $ FloorDivide ()+(.//) = mkBinOp $ FloorDivide (Ann ()) infixl 7 .// -- | @a % b@ (.%) :: Raw Expr -> Raw Expr -> Raw Expr-(.%) = mkBinOp $ Percent ()+(.%) = mkBinOp $ Percent (Ann ()) infixl 7 .% -- | @a ** b@ (.**) :: Raw Expr -> Raw Expr -> Raw Expr-(.**) = mkBinOp $ Exp ()+(.**) = mkBinOp $ Exp (Ann ()) infixr 8 .** -- | -- >>> var_ "a" /> var_ "b" -- a.b (/>) :: Raw Expr -> Raw Ident -> Raw Expr-(/>) a = Deref () a []+(/>) a = Deref (Ann ()) a [] infixl 9 /> -- | @-a@@@ -1309,11 +1310,11 @@ -- | @+a@ pos_ :: Raw Expr -> Raw Expr-pos_ = UnOp () (Positive () [])+pos_ = UnOp (Ann ()) (Positive (Ann ()) []) -- | @~a@ compl_ :: Raw Expr -> Raw Expr-compl_ = UnOp () (Complement () [])+compl_ = UnOp (Ann ()) (Complement (Ann ()) []) -- | Convert a list of 'Line's to a 'Block', giving them 4 spaces of indentation linesToBlockIndented :: [Raw Line] -> Raw Block@@ -1347,11 +1348,11 @@ mkWhile :: Raw Expr -> [Raw Line] -> Raw While mkWhile cond body = MkWhile- { _whileAnn = ()- , _whileIndents = Indents [] ()+ { _whileAnn = Ann ()+ , _whileIndents = Indents [] (Ann ()) , _whileWhile = [Space] , _whileCond = cond- , _whileBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _whileBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body , _whileElse = Nothing } @@ -1362,11 +1363,11 @@ mkIf :: Raw Expr -> [Raw Line] -> Raw If mkIf cond body = MkIf- { _ifAnn = ()- , _ifIndents = Indents [] ()+ { _ifAnn = Ann ()+ , _ifIndents = Indents [] (Ann ()) , _ifIf = [Space] , _ifCond = cond- , _ifBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _ifBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body , _ifElifs = [] , _ifElse = Nothing }@@ -1396,13 +1397,13 @@ ifThen_ = mkIf var_ :: String -> Raw Expr-var_ s = Ident $ MkIdent () s []+var_ s = Ident (Ann ()) $ MkIdent (Ann ()) s [] -- | -- >>> none_ -- None none_ :: Raw Expr-none_ = None () []+none_ = None (Ann ()) [] -- | @'Raw' 'Expr'@ has a 'Num' instance, but sometimes we need to name integers -- explicitly@@ -1418,17 +1419,17 @@ pass_ :: Raw Statement pass_ = SmallStatement- (Indents [] ())- (MkSmallStatement (Pass () []) [] Nothing Nothing (Just LF))+ (Indents [] (Ann ()))+ (MkSmallStatement (Pass (Ann ()) []) [] Nothing Nothing (Just LF)) -- | Create a minimal valid 'Elif' mkElif :: Raw Expr -> [Raw Line] -> Raw Elif mkElif cond body = MkElif- { _elifIndents = Indents [] ()+ { _elifIndents = Indents [] (Ann ()) , _elifElif = [Space] , _elifCond = cond- , _elifBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _elifBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } elif_ :: Raw Expr -> [Raw Line] -> Raw If -> Raw If@@ -1438,9 +1439,9 @@ mkElse :: [Raw Line] -> Raw Else mkElse body = MkElse- { _elseIndents = Indents [] ()+ { _elseIndents = Indents [] (Ann ()) , _elseElse = []- , _elseBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _elseBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } class ElseSyntax s where@@ -1494,20 +1495,20 @@ break_ :: Raw Statement break_ = SmallStatement- (Indents [] ())- (MkSmallStatement (Break () []) [] Nothing Nothing (Just LF))+ (Indents [] (Ann ()))+ (MkSmallStatement (Break (Ann ()) []) [] Nothing Nothing (Just LF)) -- | -- >>> true_ -- True true_ :: Raw Expr-true_ = Bool () True []+true_ = Bool (Ann ()) True [] -- | -- >>> false_ -- False false_ :: Raw Expr-false_ = Bool () False []+false_ = Bool (Ann ()) False [] -- | Double-quoted string --@@ -1515,8 +1516,8 @@ -- "asdf" str_ :: String -> Raw Expr str_ s =- String () . pure $- StringLiteral () Nothing ShortString DoubleQuote (Char_lit <$> s) []+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing ShortString DoubleQuote (Char_lit <$> s) [] -- | Single-quoted string --@@ -1524,8 +1525,8 @@ -- 'asdf' str'_ :: String -> Raw Expr str'_ s =- String () . pure $- StringLiteral () Nothing ShortString SingleQuote (Char_lit <$> s) []+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing ShortString SingleQuote (Char_lit <$> s) [] -- | Long double-quoted string --@@ -1533,8 +1534,8 @@ -- """asdf""" longStr_ :: String -> Raw Expr longStr_ s =- String () . pure $- StringLiteral () Nothing LongString DoubleQuote (Char_lit <$> s) []+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing LongString DoubleQuote (Char_lit <$> s) [] -- | Long single-quoted string --@@ -1542,15 +1543,18 @@ -- '''asdf''' longStr'_ :: String -> Raw Expr longStr'_ s =- String () . pure $- StringLiteral () Nothing LongString SingleQuote (Char_lit <$> s) []+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing LongString SingleQuote (Char_lit <$> s) [] mkAugAssign :: AugAssignOp -> Raw Expr -> Raw Expr -> Raw Statement mkAugAssign at a b = SmallStatement- (Indents [] ())+ (Indents [] (Ann ())) (MkSmallStatement- (AugAssign () (a & trailingWhitespace .~ [Space]) (MkAugAssign at () [Space]) b)+ (AugAssign+ (Ann ())+ (a & trailingWhitespace .~ [Space])+ (MkAugAssign (Ann ()) at [Space]) b) [] Nothing Nothing@@ -1567,9 +1571,9 @@ chainEq t [] = expr_ t chainEq t (a:as) = SmallStatement- (Indents [] ())+ (Indents [] (Ann ())) (MkSmallStatement- (Assign () t $ (,) (MkEquals [Space]) <$> (a :| as))+ (Assign (Ann ()) t $ (,) (MkEquals [Space]) <$> (a :| as)) [] Nothing Nothing@@ -1579,9 +1583,9 @@ (.=) :: Raw Expr -> Raw Expr -> Raw Statement (.=) a b = SmallStatement- (Indents [] ())+ (Indents [] (Ann ())) (MkSmallStatement- (Assign () (a & trailingWhitespace .~ [Space]) $ pure (MkEquals [Space], b))+ (Assign (Ann ()) (a & trailingWhitespace .~ [Space]) $ pure (MkEquals [Space], b)) [] Nothing Nothing@@ -1656,17 +1660,17 @@ mkFor :: Raw Expr -> [Raw Expr] -> [Raw Line] -> Raw For mkFor binder collection body = MkFor- { _forAnn = ()- , _forIndents = Indents [] ()+ { _forAnn = Ann ()+ , _forIndents = Indents [] (Ann ()) , _forAsync = Nothing , _forFor = [Space] , _forBinder = binder & trailingWhitespace .~ [Space] , _forIn = [Space] , _forCollection = fromMaybe- (CommaSepOne1' (Unit () [] []) Nothing)+ (CommaSepOne1' (Unit (Ann ()) [] []) Nothing) (listToCommaSep1' collection)- , _forBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _forBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body , _forElse = Nothing } @@ -1702,29 +1706,29 @@ mkFinally :: [Raw Line] -> Raw Finally mkFinally body = MkFinally- { _finallyIndents = Indents [] ()+ { _finallyIndents = Indents [] (Ann ()) , _finallyFinally = []- , _finallyBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _finallyBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } -- | Create a minimal valid 'Except' mkExcept :: [Raw Line] -> Raw Except mkExcept body = MkExcept- { _exceptIndents = Indents [] ()+ { _exceptIndents = Indents [] (Ann ()) , _exceptExcept = [] , _exceptExceptAs = Nothing- , _exceptBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _exceptBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } -- | Create a minimal valid 'TryExcept' mkTryExcept :: [Raw Line] -> Raw Except -> Raw TryExcept mkTryExcept body except = MkTryExcept- { _teAnn = ()- , _teIndents = Indents [] ()+ { _teAnn = Ann ()+ , _teIndents = Indents [] (Ann ()) , _teTry = [Space]- , _teBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _teBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body , _teExcepts = pure except , _teElse = Nothing , _teFinally = Nothing@@ -1734,10 +1738,10 @@ mkTryFinally :: [Raw Line] -> [Raw Line] -> Raw TryFinally mkTryFinally body fBody = MkTryFinally- { _tfAnn = ()- , _tfIndents = Indents [] ()+ { _tfAnn = Ann ()+ , _tfIndents = Indents [] (Ann ()) , _tfTry = [Space]- , _tfBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _tfBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body , _tfFinally = mkFinally fBody } @@ -1807,7 +1811,7 @@ toExceptAs = id instance AsExceptAs Expr where- toExceptAs e = ExceptAs () e Nothing+ toExceptAs e = ExceptAs (Ann ()) e Nothing class ExceptSyntax s where except_ :: [Raw Line] -> s -> Raw TryExcept@@ -1915,7 +1919,7 @@ -- | See 'exceptAs_' instance As Expr Ident ExceptAs where- as_ e name = ExceptAs () e $ Just ([Space], name)+ as_ e name = ExceptAs (Ann ()) e $ Just ([Space], name) -- | -- >>> class_ "A" [] [line_ pass_]@@ -1934,13 +1938,13 @@ mkClassDef :: Raw Ident -> [Raw Line] -> Raw ClassDef mkClassDef name body = MkClassDef- { _cdAnn = ()+ { _cdAnn = Ann () , _cdDecorators = []- , _cdIndents = Indents [] ()+ , _cdIndents = Indents [] (Ann ()) , _cdClass = Space :| [] , _cdName = name , _cdArguments = Nothing- , _cdBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _cdBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } instance BodySyntax ClassDef where@@ -1972,12 +1976,12 @@ mkWith :: NonEmpty (Raw WithItem) -> [Raw Line] -> Raw With mkWith items body = MkWith- { _withAnn = ()- , _withIndents = Indents [] ()+ { _withAnn = Ann ()+ , _withIndents = Indents [] (Ann ()) , _withAsync = Nothing , _withWith = [Space] , _withItems = listToCommaSep1 items- , _withBody = SuiteMany () (MkColon []) Nothing LF $ linesToBlockIndented body+ , _withBody = SuiteMany (Ann ()) (MkColon []) Nothing LF $ linesToBlockIndented body } -- |@@ -2002,17 +2006,17 @@ with_ items = mkWith (toWithItem <$> items) withItem_ :: Raw Expr -> Maybe (Raw Expr) -> Raw WithItem-withItem_ a b = WithItem () a ((,) [Space] <$> b)+withItem_ a b = WithItem (Ann ()) a ((,) [Space] <$> b) -- | See 'with_' instance As Expr Expr WithItem where- as_ a b = WithItem () a $ Just ([Space], b)+ as_ a b = WithItem (Ann ()) a $ Just ([Space], b) class AsWithItem s where toWithItem :: Raw s -> Raw WithItem instance AsWithItem Expr where- toWithItem e = WithItem () e Nothing+ toWithItem e = WithItem (Ann ()) e Nothing instance AsWithItem WithItem where toWithItem = id@@ -2028,7 +2032,7 @@ -- >>> ellipsis_ -- ... ellipsis_ :: Raw Expr-ellipsis_ = Ellipsis () []+ellipsis_ = Ellipsis (Ann ()) [] class AsTupleItem e where -- | Create a 'TupleItem'@@ -2036,10 +2040,10 @@ -- | See 'tuple_' instance StarSyntax Expr TupleItem where- s_ = TupleUnpack () [] []+ s_ = TupleUnpack (Ann ()) [] [] instance AsTupleItem Expr where- ti_ = TupleItem ()+ ti_ = TupleItem (Ann ()) instance AsTupleItem TupleItem where ti_ = id@@ -2060,25 +2064,25 @@ -- >>> tuple_ [ti_ $ var_ "a", s_ $ var_ "b"] -- a, *b tuple_ :: [Raw TupleItem] -> Raw Expr-tuple_ [] = Unit () [] []+tuple_ [] = Unit (Ann ()) [] [] tuple_ (a:as) = case as of- [] -> Tuple () (ti_ a) (MkComma []) Nothing+ [] -> Tuple (Ann ()) (ti_ a) (MkComma []) Nothing b:bs ->- Tuple () a (MkComma [Space]) . Just $+ Tuple (Ann ()) a (MkComma [Space]) . Just $ (b, zip (repeat (MkComma [Space])) bs, Nothing) ^. _CommaSep1' -- | -- >>> await (var_ "a") -- await a await_ :: Raw Expr -> Raw Expr-await_ = Await () [Space]+await_ = Await (Ann ()) [Space] -- | -- >>> ifThenElse_ (var_ "a") (var_ "b") (var_ "c") -- a if b else c ifThenElse_ :: Raw Expr -> Raw Expr -> Raw Expr -> Raw Expr-ifThenElse_ a b = Ternary () a [Space] b [Space]+ifThenElse_ a b = Ternary (Ann ()) a [Space] b [Space] -- | -- >>> lambda_ [p_ "x"] "x"@@ -2094,7 +2098,7 @@ -- lambda x, y=2, *z, **w: a lambda_ :: [Raw Param] -> Raw Expr -> Raw Expr lambda_ params =- Lambda ()+ Lambda (Ann ()) (if null params then [] else [Space]) (listToCommaSep params) (MkColon [Space])@@ -2109,13 +2113,13 @@ -- >>> yield_ [var_ "a", var_ "b"] -- yield a, b yield_ :: [Raw Expr] -> Raw Expr-yield_ as = Yield () (foldr (\_ _ -> [Space]) [] as) (listToCommaSep as)+yield_ as = Yield (Ann ()) (foldr (\_ _ -> [Space]) [] as) (listToCommaSep as) -- | -- >>> yieldFrom_ (var_ "a") -- yield from a yieldFrom_ :: Raw Expr -> Raw Expr-yieldFrom_ = YieldFrom () [Space] [Space]+yieldFrom_ = YieldFrom (Ann ()) [Space] [Space] -- | The slice with no bounds --@@ -2227,7 +2231,7 @@ -- a[(1, *b)] subs_ :: Raw Expr -> Raw Expr -> Raw Expr subs_ a e =- Subscript () a+ Subscript (Ann ()) a [] (exprToSubscript e ^. _CommaSep1') []
src/Language/Python/Internal/Lexer.hs view
@@ -69,6 +69,7 @@ import qualified Text.Megaparsec as Parsec import Language.Python.Internal.Token (PyToken(..), pyTokenAnn)+import Language.Python.Syntax.Ann import Language.Python.Syntax.Comment import Language.Python.Syntax.Ident import Language.Python.Syntax.Numbers@@ -113,7 +114,8 @@ parseComment :: (CharParsing m, Monad m) => m (SrcInfo -> PyToken SrcInfo) parseComment =- (\a b -> TkComment (MkComment b a)) <$ char '#' <*> many (satisfy (`notElem` ['\r', '\n']))+ (\a b -> TkComment (MkComment (Ann b) a)) <$ char '#' <*>+ many (satisfy (`notElem` ['\r', '\n'])) stringOrBytesPrefix :: CharParsing m@@ -197,27 +199,29 @@ (\x j ann -> case x of Nothing ->- maybe (TkInt $ IntLiteralDec ann n) (TkImag . ImagLiteralInt ann n) j+ maybe+ (TkInt $ IntLiteralDec (Ann ann) n)+ (TkImag . ImagLiteralInt (Ann ann) n) j Just (Right e) -> let- f = FloatLiteralWhole ann n e+ f = FloatLiteralWhole (Ann ann) n e in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j Just (Left (Left e)) -> let- f = FloatLiteralFull ann n (Just (That e))+ f = FloatLiteralFull (Ann ann) n (Just (That e)) in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j Just (Left (Right (a, b))) -> let- f = FloatLiteralFull ann n $+ f = FloatLiteralFull (Ann ann) n $ case (a, b) of (Nothing, Nothing) -> Nothing (Just x, Nothing) -> Just $ This x (Nothing, Just x) -> Just $ That x (Just x, Just y) -> Just $ These x y in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j) <$>+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j) <$> optional (Left <$ char '.' <*> (Left <$> floatExp <|>@@ -227,28 +231,30 @@ Nothing -> (\a b j ann -> let- f = FloatLiteralPoint ann a b+ f = FloatLiteralPoint (Ann ann) a b in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j) <$>+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j) <$> -- try is necessary here to prevent the intercepting of dereference tokens try (char '.' *> some1 parseDecimal) <*> optional floatExp <*> optional jJ Just z ->- (\xX a b -> TkInt (IntLiteralHex b xX a)) <$>+ (\xX a b -> TkInt (IntLiteralHex (Ann b) xX a)) <$> (True <$ char 'X' <|> False <$ char 'x') <*> some1 parseHeXaDeCiMaL <|>- (\bB a b -> TkInt (IntLiteralBin b bB a)) <$>+ (\bB a b -> TkInt (IntLiteralBin (Ann b) bB a)) <$> (True <$ char 'B' <|> False <$ char 'b') <*> some1 parseBinary <|>- (\oO a b -> TkInt (IntLiteralOct b oO a)) <$>+ (\oO a b -> TkInt (IntLiteralOct (Ann b) oO a)) <$> (True <$ char 'O' <|> False <$ char 'o') <*> some1 parseOctal <|> (\n j a ->- maybe (TkInt $ IntLiteralDec a (z :| n)) (TkImag . ImagLiteralInt a (z :| n)) j) <$>+ maybe+ (TkInt $ IntLiteralDec (Ann a) (z :| n))+ (TkImag . ImagLiteralInt (Ann a) (z :| n)) j) <$> try (many parse0 <* notFollowedBy (char '.' <|> char 'e' <|> char 'E' <|> digit)) <*> optional jJ <|>@@ -256,20 +262,20 @@ case a of Left (Left (b, c, j)) -> let- f = FloatLiteralFull ann (z :| n') $+ f = FloatLiteralFull (Ann ann) (z :| n') $ case (b, c) of (Nothing, Nothing) -> Nothing (Just x, Nothing) -> Just $ This x (Nothing, Just x) -> Just $ That x (Just x, Just y) -> Just $ These x y in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j Left (Right (x, j)) -> let- f = FloatLiteralWhole ann (z :| n') x+ f = FloatLiteralWhole (Ann ann) (z :| n') x in- maybe (TkFloat f) (TkImag . ImagLiteralFloat ann f) j- Right j -> TkImag $ ImagLiteralInt ann (z :| n') j) <$>+ maybe (TkFloat f) (TkImag . ImagLiteralFloat (Ann ann) f) j+ Right j -> TkImag $ ImagLiteralInt (Ann ann) (z :| n') j) <$> many parseDecimal <*> (Left <$> (Left <$>@@ -724,14 +730,14 @@ let leaps' = leaps FingerTree.|> Summed n in- TkIndent a (Indents (splitIndents leaps' i) a) : go leaps' is+ TkIndent a (Indents (splitIndents leaps' i) (Ann a)) : go leaps' is go leaps (Dedent a : is) = case FingerTree.viewr leaps of FingerTree.EmptyR -> error "impossible" leaps' FingerTree.:> _ -> TkDedent a : go leaps' is go leaps (IndentedLine ll : is) = logicalLineToTokens ll <> go leaps is go leaps (Level i a : is) =- TkLevel a (Indents (splitIndents leaps $ NonEmpty.toList i ^. from indentWhitespaces) a) : go leaps is+ TkLevel a (Indents (splitIndents leaps $ NonEmpty.toList i ^. from indentWhitespaces) (Ann a)) : go leaps is -- | Insert indent and dedent tokens --
src/Language/Python/Internal/Parse.hs view
@@ -128,13 +128,13 @@ import Language.Python.Internal.Lexer (SrcInfo(..), withSrcInfo) import Language.Python.Internal.Syntax.IR import Language.Python.Internal.Token+import Language.Python.Syntax.Ann import Language.Python.Syntax.AugAssign import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Comment import Language.Python.Syntax.Ident import Language.Python.Syntax.Import import Language.Python.Syntax.ModuleNames-import Language.Python.Syntax.Numbers import Language.Python.Syntax.Operator.Binary import Language.Python.Syntax.Operator.Unary import Language.Python.Syntax.Punctuation@@ -276,7 +276,7 @@ identifier :: MonadParsec e PyTokens m => m Whitespace -> m (Ident '[] SrcInfo) identifier ws =- (\(TkIdent n ann) -> MkIdent ann n) <$>+ (\(TkIdent n ann) -> MkIdent (Ann ann) n) <$> satisfy (\case; TkIdent{} -> True; _ -> False) <*> many ws @@ -305,30 +305,30 @@ integer :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) integer ws =- (\(TkInt n) -> Int (_intLiteralAnn n) n) <$>+ (\(TkInt n) -> Int (n ^. annot_) n) <$> satisfy (\case; TkInt{} -> True; _ -> False) <*> many ws float :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) float ws =- (\(TkFloat n) -> Float (_floatLiteralAnn n) n) <$>+ (\(TkFloat n) -> Float (n ^. annot_) n) <$> satisfy (\case; TkFloat{} -> True; _ -> False) <*> many ws imag :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) imag ws =- (\(TkImag n) -> Imag (_imagLiteralAnn n) n) <$>+ (\(TkImag n) -> Imag (n ^. annot_) n) <$> satisfy (\case; TkImag{} -> True; _ -> False) <*> many ws stringOrBytes :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) stringOrBytes ws =- fmap (\vs -> String (_stringLiteralAnn $ NonEmpty.head vs) vs) . some1 $+ fmap (\vs -> String (view annot_ $ NonEmpty.head vs) vs) . some1 $ (\case- TkString sp qt st val ann -> StringLiteral ann sp qt st val- TkBytes sp qt st val ann -> BytesLiteral ann sp qt st val- TkRawString sp st qt val ann -> RawStringLiteral ann sp st qt val- TkRawBytes sp st qt val ann -> RawBytesLiteral ann sp st qt val+ TkString sp qt st val ann -> StringLiteral (Ann ann) sp qt st val+ TkBytes sp qt st val ann -> BytesLiteral (Ann ann) sp qt st val+ TkRawString sp st qt val ann -> RawStringLiteral (Ann ann) sp st qt val+ TkRawBytes sp st qt val ann -> RawBytesLiteral (Ann ann) sp st qt val _ -> error "impossible") <$> satisfy (\case@@ -369,7 +369,7 @@ semicolon :: MonadParsec e PyTokens m => m Whitespace -> m (PyToken SrcInfo, Semicolon SrcInfo) semicolon ws =- (\(a, b) -> (a, MkSemicolon (pyTokenAnn a) b)) <$>+ (\(a, b) -> (a, MkSemicolon (Ann $ pyTokenAnn a) b)) <$> token ws (\case; TkSemicolon{} -> True; _ -> False) ";" exprList :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo)@@ -479,11 +479,11 @@ orTest ws = binOp orOp andTest where orOp =- (\(tk, ws) -> BoolOr (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> BoolOr (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkOr{} -> True; _ -> False) "or" andOp =- (\(tk, ws) -> BoolAnd (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> BoolAnd (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkAnd{} -> True; _ -> False) "and" andTest = binOp andOp notTest @@ -493,49 +493,49 @@ comparison compOp =- (\(tk, ws) -> maybe (Is (pyTokenAnn tk) ws) (IsNot (pyTokenAnn tk) ws)) <$>+ (\(tk, ws) -> maybe (Is (Ann $ pyTokenAnn tk) ws) (IsNot (Ann $ pyTokenAnn tk) ws)) <$> token ws (\case; TkIs{} -> True; _ -> False) "is" <*> optional (snd <$> token ws (\case; TkNot{} -> True; _ -> False) "not") <|> - (\(tk, ws) -> NotIn (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> NotIn (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkNot{} -> True; _ -> False) "not" <*> (snd <$> token ws (\case; TkIn{} -> True; _ -> False) "in") <|> - (\(tk, ws) -> In (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> In (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkIn{} -> True; _ -> False) "in" <|> - (\(tk, ws) -> Eq (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Eq (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkDoubleEq{} -> True; _ -> False) "==" <|> - (\(tk, ws) -> Lt (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Lt (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkLt{} -> True; _ -> False) "<" <|> - (\(tk, ws) -> LtEq (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> LtEq (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkLte{} -> True; _ -> False) "<=" <|> - (\(tk, ws) -> Gt (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Gt (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkGt{} -> True; _ -> False) ">" <|> - (\(tk, ws) -> GtEq (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> GtEq (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkGte{} -> True; _ -> False) ">=" <|> - (\(tk, ws) -> NotEq (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> NotEq (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkBangEq{} -> True; _ -> False) "!=" comparison = binOp compOp $ orExpr ws@@ -598,84 +598,84 @@ orExpr :: MonadParsec e PyTokens m => m Whitespace -> m (Expr SrcInfo) orExpr ws = binOp- ((\(tk, ws) -> BitOr (pyTokenAnn tk) ws) <$>+ ((\(tk, ws) -> BitOr (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkPipe{} -> True; _ -> False) "|") xorExpr where xorExpr = binOp- ((\(tk, ws) -> BitXor (pyTokenAnn tk) ws) <$>+ ((\(tk, ws) -> BitXor (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkCaret{} -> True; _ -> False) "^") andExpr andExpr = binOp- ((\(tk, ws) -> BitAnd (pyTokenAnn tk) ws) <$>+ ((\(tk, ws) -> BitAnd (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkAmpersand{} -> True; _ -> False) "&") shiftExpr shiftExpr = binOp- ((\(tk, ws) -> ShiftLeft (pyTokenAnn tk) ws) <$>+ ((\(tk, ws) -> ShiftLeft (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkShiftLeft{} -> True; _ -> False) "<<" <|> - (\(tk, ws) -> ShiftRight (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> ShiftRight (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkShiftRight{} -> True; _ -> False) ">>") arithExpr arithOp =- (\(tk, ws) -> Plus (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Plus (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkPlus{} -> True; _ -> False) "+" <|> - (\(tk, ws) -> Minus (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Minus (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkMinus{} -> True; _ -> False) "-" arithExpr = binOp arithOp term termOp =- (\(tk, ws) -> Multiply (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Multiply (Ann $ pyTokenAnn tk) ws) <$> star ws <|> - (\(tk, ws) -> At (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> At (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkAt{} -> True; _ -> False) "@" <|> - (\(tk, ws) -> Divide (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Divide (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkSlash{} -> True; _ -> False) "/" <|> - (\(tk, ws) -> FloorDivide (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> FloorDivide (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkDoubleSlash{} -> True; _ -> False) "//" <|> - (\(tk, ws) -> Percent (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Percent (Ann $ pyTokenAnn tk) ws) <$> token ws (\case; TkPercent{} -> True; _ -> False) "%" term = binOp termOp factor factor =- ((\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Negate ann s)) <$>+ ((\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Negate (Ann ann) s)) <$> token ws (\case; TkMinus{} -> True; _ -> False) "-" <|>- (\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Positive ann s)) <$>+ (\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Positive (Ann ann) s)) <$> token ws (\case; TkPlus{} -> True; _ -> False) "+" <|>- (\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Complement ann s)) <$>+ (\(tk, s) -> let ann = pyTokenAnn tk in UnOp ann (Complement (Ann ann) s)) <$> token ws (\case; TkTilde{} -> True; _ -> False) "~") <*> factor <|> power powerOp =- (\(tk, ws) -> Exp (pyTokenAnn tk) ws) <$>+ (\(tk, ws) -> Exp (Ann $ pyTokenAnn tk) ws) <$> doubleStar ws power =@@ -843,7 +843,7 @@ float ws <|> imag ws <|> stringOrBytes ws <|>- Ident <$> identifier ws <|>+ (\i -> Ident (i ^. annot_) i) <$> identifier ws <|> parensOrUnit simpleStatement :: MonadParsec e PyTokens m => m (SimpleStatement SrcInfo)@@ -886,69 +886,60 @@ uncurry (Continue . pyTokenAnn) <$> token space (\case; TkContinue{} -> True; _ -> False) "continue" + mkAugAssign ctor match name =+ (\(tk, s) -> MkAugAssign (Ann $ pyTokenAnn tk) ctor s) <$>+ token space match name+ augAssign =- (\(tk, s) -> MkAugAssign PlusEq (pyTokenAnn tk) s) <$>- token space (\case; TkPlusEq{} -> True; _ -> False) "+="+ mkAugAssign PlusEq (\case; TkPlusEq{} -> True; _ -> False) "+=" <|> - (\(tk, s) -> MkAugAssign MinusEq (pyTokenAnn tk) s) <$>- token space (\case; TkMinusEq{} -> True; _ -> False) "-="+ mkAugAssign MinusEq (\case; TkMinusEq{} -> True; _ -> False) "-=" <|> - (\(tk, s) -> MkAugAssign AtEq (pyTokenAnn tk) s) <$>- token space (\case; TkAtEq{} -> True; _ -> False) "@="+ mkAugAssign AtEq (\case; TkAtEq{} -> True; _ -> False) "@=" <|> - (\(tk, s) -> MkAugAssign StarEq (pyTokenAnn tk) s) <$>- token space (\case; TkStarEq{} -> True; _ -> False) "*="+ mkAugAssign StarEq (\case; TkStarEq{} -> True; _ -> False) "*=" <|> - (\(tk, s) -> MkAugAssign SlashEq (pyTokenAnn tk) s) <$>- token space (\case; TkSlashEq{} -> True; _ -> False) "/="+ mkAugAssign SlashEq (\case; TkSlashEq{} -> True; _ -> False) "/=" <|> - (\(tk, s) -> MkAugAssign PercentEq (pyTokenAnn tk) s) <$>- token space (\case; TkPercentEq{} -> True; _ -> False) "%="+ mkAugAssign PercentEq (\case; TkPercentEq{} -> True; _ -> False) "%=" <|> - (\(tk, s) -> MkAugAssign AmpersandEq (pyTokenAnn tk) s) <$>- token space (\case; TkAmpersandEq{} -> True; _ -> False) "&="+ mkAugAssign AmpersandEq (\case; TkAmpersandEq{} -> True; _ -> False) "&=" <|> - (\(tk, s) -> MkAugAssign PipeEq (pyTokenAnn tk) s) <$>- token space (\case; TkPipeEq{} -> True; _ -> False) "|="+ mkAugAssign PipeEq (\case; TkPipeEq{} -> True; _ -> False) "|=" <|> - (\(tk, s) -> MkAugAssign CaretEq (pyTokenAnn tk) s) <$>- token space (\case; TkCaretEq{} -> True; _ -> False) "^="+ mkAugAssign CaretEq (\case; TkCaretEq{} -> True; _ -> False) "^=" <|> - (\(tk, s) -> MkAugAssign ShiftLeftEq (pyTokenAnn tk) s) <$>- token space (\case; TkShiftLeftEq{} -> True; _ -> False) "<<="+ mkAugAssign ShiftLeftEq (\case; TkShiftLeftEq{} -> True; _ -> False) "<<=" <|> - (\(tk, s) -> MkAugAssign ShiftRightEq (pyTokenAnn tk) s) <$>- token space (\case; TkShiftRightEq{} -> True; _ -> False) ">>="+ mkAugAssign ShiftRightEq (\case; TkShiftRightEq{} -> True; _ -> False) ">>=" <|> - (\(tk, s) -> MkAugAssign DoubleStarEq (pyTokenAnn tk) s) <$>- token space (\case; TkDoubleStarEq{} -> True; _ -> False) "**="+ mkAugAssign DoubleStarEq (\case; TkDoubleStarEq{} -> True; _ -> False) "**=" <|> - (\(tk, s) -> MkAugAssign DoubleSlashEq (pyTokenAnn tk) s) <$>- token space (\case; TkDoubleSlashEq{} -> True; _ -> False) "//="+ mkAugAssign DoubleSlashEq (\case; TkDoubleSlashEq{} -> True; _ -> False) "//=" exprOrAssignSt = (\a ->@@ -1005,8 +996,8 @@ (snd <$> token space (\case; TkDot{} -> True; _ -> False) ".") <*> identifier space) - importAs ws getAnn p =- (\a -> ImportAs (getAnn a) a) <$>+ importAs ws ann p =+ (\a -> ImportAs (Ann $ ann a) a) <$> p <*> optional ((,) <$>@@ -1016,7 +1007,7 @@ importName = (\(tk, s) -> Import (pyTokenAnn tk) $ NonEmpty.fromList s) <$> token space (\case; TkImport{} -> True; _ -> False) "import" <*>- commaSep1 space (importAs space _moduleNameAnn moduleName)+ commaSep1 space (importAs space (view annot_) moduleName) dots = fmap concat . some $@@ -1028,29 +1019,33 @@ token space (\case; TkEllipsis{} -> True; _ -> False) "..." relativeModuleName =- RelativeWithName [] <$> moduleName+ withSrcInfo $+ (\b ann -> RelativeWithName (Ann ann) [] b) <$> moduleName <|> - (\a -> maybe (Relative $ NonEmpty.fromList a) (RelativeWithName a)) <$>+ (\a ->+ maybe+ (\ann -> Relative (Ann ann) $ NonEmpty.fromList a)+ (\b ann -> RelativeWithName (Ann ann) a b)) <$> dots <*> optional moduleName importTargets =- (\(tk, s) -> ImportAll (pyTokenAnn tk) s) <$>+ (\(tk, s) -> ImportAll (Ann $ pyTokenAnn tk) s) <$> star space <|> - (\(tk, s) -> ImportSomeParens (pyTokenAnn tk) s) <$>+ (\(tk, s) -> ImportSomeParens (Ann $ pyTokenAnn tk) s) <$> token anySpace (\case; TkLeftParen{} -> True; _ -> False) "(" <*>- commaSep1' anySpace (importAs anySpace _identAnn (identifier anySpace)) <*>+ commaSep1' anySpace (importAs anySpace (view annot_) (identifier anySpace)) <*> (snd <$> rightParen space) <|> - (\a -> ImportSome (commaSep1Head a ^. importAsAnn) a) <$>- commaSep1 space (importAs space _identAnn (identifier space))+ (\a -> ImportSome (Ann $ commaSep1Head a ^. importAsAnn) a) <$>+ commaSep1 space (importAs space (view annot_) (identifier space)) importFrom = (\(tk, s) -> From (pyTokenAnn tk) s) <$>@@ -1096,13 +1091,13 @@ blank :: MonadParsec e PyTokens m => m (Blank SrcInfo) blank = withSrcInfo $- (\b c a -> Blank a b c) <$>+ (\b c a -> Blank (Ann a) b c) <$> some space <*> optional comment <|> - (\b a -> Blank a [] b) <$> optional comment+ (\b a -> Blank (Ann a) [] b) <$> optional comment suite :: MonadParsec e PyTokens m => m (Suite SrcInfo) suite =@@ -1220,8 +1215,8 @@ upPositional ws = (\a -> maybe- (PositionalParam (_identAnn a) a Nothing)- (uncurry $ KeywordParam (_identAnn a) a Nothing)) <$>+ (PositionalParam (a ^. annot_) a Nothing)+ (uncurry $ KeywordParam (a ^. annot_) a Nothing)) <$> identifier ws <*> optional ((,) <$>@@ -1259,8 +1254,8 @@ tpPositional = (\a b -> maybe- (PositionalParam (_identAnn a) a b)- (uncurry $ KeywordParam (_identAnn a) a b)) <$>+ (PositionalParam (a ^. annot_) a b)+ (uncurry $ KeywordParam (a ^. annot_) a b)) <$> identifier anySpace <*> optional tyAnn <*> optional@@ -1292,12 +1287,12 @@ (do e <- exprComp anySpace case e of- Ident ident -> do+ Ident ann ident -> do eqSpaces <- optional $ snd <$> token anySpace (\case; TkEq{} -> True; _ -> False) "=" case eqSpaces of- Nothing -> pure $ PositionalArg (e ^. exprAnn) e- Just s -> KeywordArg (e ^. exprAnn) ident s <$> expr anySpace+ Nothing -> pure $ PositionalArg ann e+ Just s -> KeywordArg ann ident s <$> expr anySpace _ -> pure $ PositionalArg (e ^. exprAnn) e) <|>@@ -1334,7 +1329,7 @@ derefs = foldl (\b (ws, a) -> Deref (b ^. exprAnn) b ws a)- (Ident id1)+ (Ident (id1 ^. annot_) id1) ids pure $ case args of@@ -1572,4 +1567,4 @@ ModuleEmpty <$ eof where- tlIndent = level <|> withSrcInfo (pure $ Indents [])+ tlIndent = level <|> withSrcInfo (pure $ Indents [] . Ann)
src/Language/Python/Internal/Render.hs view
@@ -957,7 +957,7 @@ renderExpr (Imag _ n ws) = do singleton $ TkImag (() <$ n) traverse_ renderWhitespace ws-renderExpr (Ident name) = renderIdent name+renderExpr (Ident _ name) = renderIdent name renderExpr (List _ ws1 exprs ws2) = do brackets $ do traverse_ renderWhitespace ws1@@ -1074,13 +1074,13 @@ traverse_ renderWhitespace ws renderRelativeModuleName :: RelativeModuleName v a -> RenderOutput ()-renderRelativeModuleName (RelativeWithName ds mn) = do+renderRelativeModuleName (RelativeWithName _ ds mn) = do traverse_ renderDot ds renderModuleName mn-renderRelativeModuleName (Relative ds) =+renderRelativeModuleName (Relative _ ds) = traverse_ renderDot ds -renderImportAs :: (e a -> RenderOutput ()) -> ImportAs e v a -> RenderOutput ()+renderImportAs :: (e v a -> RenderOutput ()) -> ImportAs e v a -> RenderOutput () renderImportAs f (ImportAs _ ea m) = do f ea traverse_
src/Language/Python/Internal/Syntax/IR.hs view
@@ -25,18 +25,18 @@ import Control.Lens.Lens (Lens', lens) import Control.Lens.Prism (Prism') import Control.Lens.Review ((#))-import Control.Lens.Setter ((.~), over, mapped)+import Control.Lens.Setter (over, mapped) import Control.Lens.TH (makeLenses) import Control.Lens.Traversal (traverseOf) import Control.Lens.Tuple (_1, _2, _3) import Data.Bifoldable (bifoldMap) import Data.Bifunctor (bimap) import Data.Bitraversable (bitraverse)-import Data.Function ((&)) import Data.List.NonEmpty (NonEmpty) import Data.Monoid ((<>)) import Data.Validation (Validation(..)) +import Language.Python.Syntax.Ann import Language.Python.Syntax.AugAssign import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Comment@@ -173,7 +173,7 @@ | Import a (NonEmpty Whitespace)- (CommaSep1 (ImportAs (ModuleName '[]) '[] a))+ (CommaSep1 (ImportAs ModuleName '[] a)) | From a [Whitespace]@@ -304,35 +304,35 @@ data Expr a = StarExpr- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeStarExprWhitespace :: [Whitespace] , _unsafeStarExprValue :: Expr a } | Unit- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeUnitWhitespaceInner :: [Whitespace] , _unsafeUnitWhitespaceRight :: [Whitespace] } | Lambda- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeLambdaWhitespace :: [Whitespace] , _unsafeLambdaArgs :: CommaSep (Param a) , _unsafeLambdaColon :: Colon , _unsafeLambdaBody :: Expr a } | Yield- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeYieldWhitespace :: [Whitespace] , _unsafeYieldValue :: CommaSep (Expr a) } | YieldFrom- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeYieldWhitespace :: [Whitespace] , _unsafeFromWhitespace :: [Whitespace] , _unsafeYieldFromValue :: Expr a } | Ternary- { _unsafeExprAnn :: a+ { _exprAnn :: a -- expr , _unsafeTernaryValue :: Expr a -- 'if' spaces@@ -345,7 +345,7 @@ , _unsafeTernaryElse :: Expr a } | ListComp- { _unsafeExprAnn :: a+ { _exprAnn :: a -- [ spaces , _unsafeListCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -354,7 +354,7 @@ , _unsafeListCompWhitespaceRight :: [Whitespace] } | List- { _unsafeExprAnn :: a+ { _exprAnn :: a -- [ spaces , _unsafeListWhitespaceLeft :: [Whitespace] -- exprs@@ -363,7 +363,7 @@ , _unsafeListWhitespaceRight :: [Whitespace] } | DictComp- { _unsafeExprAnn :: a+ { _exprAnn :: a -- { spaces , _unsafeDictCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -372,13 +372,13 @@ , _unsafeDictCompWhitespaceRight :: [Whitespace] } | Dict- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeDictWhitespaceLeft :: [Whitespace] , _unsafeDictValues :: Maybe (CommaSep1' (DictItem a)) , _unsafeDictWhitespaceRight :: [Whitespace] } | SetComp- { _unsafeExprAnn :: a+ { _exprAnn :: a -- { spaces , _unsafeSetCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -387,13 +387,13 @@ , _unsafeSetCompWhitespaceRight :: [Whitespace] } | Set- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeSetWhitespaceLeft :: [Whitespace] , _unsafeSetValues :: CommaSep1' (Expr a) , _unsafeSetWhitespaceRight :: [Whitespace] } | Deref- { _unsafeExprAnn :: a+ { _exprAnn :: a -- expr , _unsafeDerefValueLeft :: Expr a -- . spaces@@ -402,7 +402,7 @@ , _unsafeDerefValueRight :: Ident '[] a } | Subscript- { _unsafeExprAnn :: a+ { _exprAnn :: a -- expr , _unsafeSubscriptValueLeft :: Expr a -- [ spaces@@ -413,7 +413,7 @@ , _unsafeSubscriptWhitespaceRight :: [Whitespace] } | Call- { _unsafeExprAnn :: a+ { _exprAnn :: a -- expr , _unsafeCallFunction :: Expr a -- ( spaces@@ -424,26 +424,26 @@ , _unsafeCallWhitespaceRight :: [Whitespace] } | None- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeNoneWhitespace :: [Whitespace] } | Ellipsis- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeEllipsisWhitespace :: [Whitespace] } | BinOp- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeBinOpExprLeft :: Expr a , _unsafeBinOpOp :: BinOp a , _unsafeBinOpExprRight :: Expr a } | UnOp- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeUnOpOp :: UnOp a , _unsafeUnOpValue :: Expr a } | Parens- { _unsafeExprAnn :: a+ { _exprAnn :: a -- ( spaces , _unsafeParensWhitespaceLeft :: [Whitespace] -- expr@@ -452,34 +452,35 @@ , _unsafeParensWhitespaceAfter :: [Whitespace] } | Ident- { _unsafeIdentValue :: Ident '[] a+ { _exprAnn :: a+ , _unsafeIdentValue :: Ident '[] a } | Int- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeIntValue :: IntLiteral a , _unsafeIntWhitespace :: [Whitespace] } | Float- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeFloatValue :: FloatLiteral a , _unsafeFloatWhitespace :: [Whitespace] } | Imag- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeImagValue :: ImagLiteral a , _unsafeImagWhitespace :: [Whitespace] } | Bool- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeBoolValue :: Bool , _unsafeBoolWhitespace :: [Whitespace] } | String- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeStringLiteralValue :: NonEmpty (StringLiteral a) } | Tuple- { _unsafeExprAnn :: a+ { _exprAnn :: a -- expr , _unsafeTupleHead :: Expr a -- , spaces@@ -488,16 +489,16 @@ , _unsafeTupleTail :: Maybe (CommaSep1' (Expr a)) } | Not- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeNotWhitespace :: [Whitespace] , _unsafeNotValue :: Expr a } | Generator- { _unsafeExprAnn :: a+ { _exprAnn :: a , _generatorValue :: Comprehension Expr a } | Await- { _unsafeExprAnn :: a+ { _exprAnn :: a , _unsafeAwaitWhitespace :: [Whitespace] , _unsafeAwaitValue :: Expr a }@@ -523,7 +524,7 @@ BinOp a _ _ _ -> a UnOp a _ _ -> a Parens a _ _ _ -> a- Ident a -> a ^. identAnn+ Ident a _ -> a Int a _ _ -> a Float a _ _ -> a Imag a _ _ -> a@@ -555,7 +556,7 @@ BinOp _ a b c -> BinOp ann a b c UnOp _ a b -> UnOp ann a b Parens _ a b c -> Parens ann a b c- Ident a -> Ident $ a & identAnn .~ ann+ Ident _ b -> Ident ann b Int _ a b -> Int ann a b Float _ a b -> Float ann a b Imag _ a b -> Imag ann a b@@ -656,71 +657,71 @@ fromIR_expr ex = case ex of StarExpr{} -> Failure $ pure (_InvalidUnpacking # (ex ^. exprAnn))- Unit a b c -> pure $ Syntax.Unit a b c+ Unit a b c -> pure $ Syntax.Unit (Ann a) b c Lambda a b c d e ->- (\c' -> Syntax.Lambda a b c' d) <$>+ (\c' -> Syntax.Lambda (Ann a) b c' d) <$> traverse fromIR_param c <*> fromIR_expr e- Yield a b c -> Syntax.Yield a b <$> traverse fromIR_expr c- YieldFrom a b c d -> Syntax.YieldFrom a b c <$> fromIR_expr d+ Yield a b c -> Syntax.Yield (Ann a) b <$> traverse fromIR_expr c+ YieldFrom a b c d -> Syntax.YieldFrom (Ann a) b c <$> fromIR_expr d Ternary a b c d e f ->- (\b' d' -> Syntax.Ternary a b' c d' e) <$>+ (\b' d' -> Syntax.Ternary (Ann a) b' c d' e) <$> fromIR_expr b <*> fromIR_expr d <*> fromIR_expr f ListComp a b c d ->- (\c' -> Syntax.ListComp a b c' d) <$>+ (\c' -> Syntax.ListComp (Ann a) b c' d) <$> fromIR_comprehension fromIR_expr c List a b c d ->- (\c' -> Syntax.List a b c' d) <$>+ (\c' -> Syntax.List (Ann a) b c' d) <$> traverseOf (traverse.traverse) fromIR_listItem c DictComp a b c d ->- (\c' -> Syntax.DictComp a b c' d) <$>+ (\c' -> Syntax.DictComp (Ann a) b c' d) <$> fromIR_comprehension fromIR_dictItem c Dict a b c d ->- (\c' -> Syntax.Dict a b c' d) <$>+ (\c' -> Syntax.Dict (Ann a) b c' d) <$> traverseOf (traverse.traverse) fromIR_dictItem c SetComp a b c d ->- (\c' -> Syntax.SetComp a b c' d) <$>+ (\c' -> Syntax.SetComp (Ann a) b c' d) <$> fromIR_comprehension fromIR_setItem c Set a b c d ->- (\c' -> Syntax.Set a b c' d) <$>+ (\c' -> Syntax.Set (Ann a) b c' d) <$> traverse fromIR_setItem c Deref a b c d ->- (\b' -> Syntax.Deref a b' c d) <$>+ (\b' -> Syntax.Deref (Ann a) b' c d) <$> fromIR_expr b Subscript a b c d e ->- (\b' d' -> Syntax.Subscript a b' c d' e) <$>+ (\b' d' -> Syntax.Subscript (Ann a) b' c d' e) <$> fromIR_expr b <*> traverse fromIR_subscript d Call a b c d e ->- (\b' d' -> Syntax.Call a b' c d' e) <$>+ (\b' d' -> Syntax.Call (Ann a) b' c d' e) <$> fromIR_expr b <*> traverseOf (traverse.traverse) fromIR_arg d- None a b -> pure $ Syntax.None a b- Ellipsis a b -> pure $ Syntax.Ellipsis a b+ None a b -> pure $ Syntax.None (Ann a) b+ Ellipsis a b -> pure $ Syntax.Ellipsis (Ann a) b BinOp a b c d ->- (\b' d' -> Syntax.BinOp a b' c d') <$>+ (\b' d' -> Syntax.BinOp (Ann a) b' c d') <$> fromIR_expr b <*> fromIR_expr d UnOp a b c ->- Syntax.UnOp a b <$> fromIR_expr c+ Syntax.UnOp (Ann a) b <$> fromIR_expr c Parens a b c d ->- (\c' -> Syntax.Parens a b c' d) <$>+ (\c' -> Syntax.Parens (Ann a) b c' d) <$> fromIR_expr c- Ident a -> pure $ Syntax.Ident a- Int a b c -> pure $ Syntax.Int a b c- Float a b c -> pure $ Syntax.Float a b c- Imag a b c -> pure $ Syntax.Imag a b c- Bool a b c -> pure $ Syntax.Bool a b c- String a b -> pure $ Syntax.String a b+ Ident a b -> pure $ Syntax.Ident (Ann a) b+ Int a b c -> pure $ Syntax.Int (Ann a) b c+ Float a b c -> pure $ Syntax.Float (Ann a) b c+ Imag a b c -> pure $ Syntax.Imag (Ann a) b c+ Bool a b c -> pure $ Syntax.Bool (Ann a) b c+ String a b -> pure $ Syntax.String (Ann a) b Tuple a b c d ->- (\b' -> Syntax.Tuple a b' c) <$>+ (\b' -> Syntax.Tuple (Ann a) b' c) <$> fromIR_tupleItem b <*> traverseOf (traverse.traverse) fromIR_tupleItem d- Not a b c -> Syntax.Not a b <$> fromIR_expr c- Generator a b -> Syntax.Generator a <$> fromIR_comprehension fromIR_expr b- Await a b c -> Syntax.Await a b <$> fromIR_expr c+ Not a b c -> Syntax.Not (Ann a) b <$> fromIR_expr c+ Generator a b -> Syntax.Generator (Ann a) <$> fromIR_comprehension fromIR_expr b+ Await a b c -> Syntax.Await (Ann a) b <$> fromIR_expr c fromIR_suite :: AsIRError e a@@ -729,9 +730,9 @@ fromIR_suite s = case s of SuiteOne a b c ->- Syntax.SuiteOne a b <$> fromIR_smallStatement c+ Syntax.SuiteOne (Ann a) b <$> fromIR_smallStatement c SuiteMany a b c d e ->- Syntax.SuiteMany a b c d <$> fromIR_block e+ Syntax.SuiteMany (Ann a) b c d <$> fromIR_block e fromIR_param :: AsIRError e a@@ -740,17 +741,17 @@ fromIR_param p = case p of PositionalParam a b c ->- Syntax.PositionalParam a b <$> traverseOf (traverse._2) fromIR_expr c+ Syntax.PositionalParam (Ann a) b <$> traverseOf (traverse._2) fromIR_expr c KeywordParam a b c d e ->- Syntax.KeywordParam a b <$>+ Syntax.KeywordParam (Ann a) b <$> traverseOf (traverse._2) fromIR_expr c <*> pure d <*> fromIR_expr e StarParam a b c d ->- Syntax.StarParam a b c <$> traverseOf (traverse._2) fromIR_expr d- UnnamedStarParam a b -> pure $ Syntax.UnnamedStarParam a b+ Syntax.StarParam (Ann a) b c <$> traverseOf (traverse._2) fromIR_expr d+ UnnamedStarParam a b -> pure $ Syntax.UnnamedStarParam (Ann a) b DoubleStarParam a b c d ->- Syntax.DoubleStarParam a b c <$> traverseOf (traverse._2) fromIR_expr d+ Syntax.DoubleStarParam (Ann a) b c <$> traverseOf (traverse._2) fromIR_expr d fromIR_arg :: AsIRError e a@@ -758,17 +759,17 @@ -> Validation (NonEmpty e) (Syntax.Arg '[] a) fromIR_arg a = case a of- PositionalArg a b -> Syntax.PositionalArg a <$> fromIR_expr b- KeywordArg a b c d -> Syntax.KeywordArg a b c <$> fromIR_expr d- StarArg a b c -> Syntax.StarArg a b <$> fromIR_expr c- DoubleStarArg a b c -> Syntax.DoubleStarArg a b <$> fromIR_expr c+ PositionalArg a b -> Syntax.PositionalArg (Ann a) <$> fromIR_expr b+ KeywordArg a b c d -> Syntax.KeywordArg (Ann a) b c <$> fromIR_expr d+ StarArg a b c -> Syntax.StarArg (Ann a) b <$> fromIR_expr c+ DoubleStarArg a b c -> Syntax.DoubleStarArg (Ann a) b <$> fromIR_expr c fromIR_decorator :: AsIRError e a => Decorator a -> Validation (NonEmpty e) (Syntax.Decorator '[] a) fromIR_decorator (Decorator a b c d e f g) =- (\d' -> Syntax.Decorator a b c d' e f g) <$>+ (\d' -> Syntax.Decorator (Ann a) b c d' e f g) <$> fromIR_expr d fromIR_exceptAs@@ -776,7 +777,7 @@ => ExceptAs a -> Validation (NonEmpty e) (Syntax.ExceptAs '[] a) fromIR_exceptAs (ExceptAs a b c) =- (\b' -> Syntax.ExceptAs a b' c) <$>+ (\b' -> Syntax.ExceptAs (Ann a) b' c) <$> fromIR_expr b fromIR_withItem@@ -784,7 +785,7 @@ => WithItem a -> Validation (NonEmpty e) (Syntax.WithItem '[] a) fromIR_withItem (WithItem a b c) =- Syntax.WithItem a <$>+ Syntax.WithItem (Ann a) <$> fromIR_expr b <*> traverseOf (traverse._2) fromIR_expr c @@ -794,7 +795,7 @@ -> Comprehension ex a -> Validation (NonEmpty e) (Syntax.Comprehension ex' '[] a) fromIR_comprehension f (Comprehension a b c d) =- Syntax.Comprehension a <$>+ Syntax.Comprehension (Ann a) <$> f b <*> fromIR_compFor c <*> traverse (bitraverse fromIR_compFor fromIR_compIf) d@@ -806,11 +807,11 @@ fromIR_dictItem di = case di of DictItem a b c d ->- (\b' -> Syntax.DictItem a b' c) <$>+ (\b' -> Syntax.DictItem (Ann a) b' c) <$> fromIR_expr b <*> fromIR_expr d DictUnpack a b c ->- Syntax.DictUnpack a b <$> fromIR_expr c+ Syntax.DictUnpack (Ann a) b <$> fromIR_expr c fromIR_subscript :: AsIRError e a@@ -839,7 +840,7 @@ => CompFor a -> Validation (NonEmpty e) (Syntax.CompFor '[] a) fromIR_compFor (CompFor a b c d e) =- (\c' -> Syntax.CompFor a b c' d) <$>+ (\c' -> Syntax.CompFor (Ann a) b c' d) <$> fromIR_expr c <*> fromIR_expr e @@ -848,7 +849,7 @@ => CompIf a -> Validation (NonEmpty e) (Syntax.CompIf '[] a) fromIR_compIf (CompIf a b c) =- Syntax.CompIf a b <$> fromIR_expr c+ Syntax.CompIf (Ann a) b <$> fromIR_expr c fromIR_smallStatement :: AsIRError e a@@ -877,32 +878,32 @@ fromIR_SimpleStatement ex = case ex of Assign a b c ->- Syntax.Assign a <$>+ Syntax.Assign (Ann a) <$> fromIR_expr b <*> traverseOf (traverse._2) fromIR_expr c- Return a b c -> Syntax.Return a b <$> traverse fromIR_expr c- Expr a b -> Syntax.Expr a <$> fromIR_expr b+ Return a b c -> Syntax.Return (Ann a) b <$> traverse fromIR_expr c+ Expr a b -> Syntax.Expr (Ann a) <$> fromIR_expr b AugAssign a b c d ->- (\b' d' -> Syntax.AugAssign a b' c d') <$>+ (\b' d' -> Syntax.AugAssign (Ann a) b' c d') <$> fromIR_expr b <*> fromIR_expr d- Pass a ws -> pure $ Syntax.Pass a ws- Break a ws -> pure $ Syntax.Break a ws- Continue a ws -> pure $ Syntax.Continue a ws- Global a b c -> pure $ Syntax.Global a b c- Nonlocal a b c -> pure $ Syntax.Nonlocal a b c- Del a b c -> Syntax.Del a b <$> traverse fromIR_expr c- Import a b c -> pure $ Syntax.Import a b c- From a b c d e -> pure $ Syntax.From a b c d e+ Pass a ws -> pure $ Syntax.Pass (Ann a) ws+ Break a ws -> pure $ Syntax.Break (Ann a) ws+ Continue a ws -> pure $ Syntax.Continue (Ann a) ws+ Global a b c -> pure $ Syntax.Global (Ann a) b c+ Nonlocal a b c -> pure $ Syntax.Nonlocal (Ann a) b c+ Del a b c -> Syntax.Del (Ann a) b <$> traverse fromIR_expr c+ Import a b c -> pure $ Syntax.Import (Ann a) b c+ From a b c d e -> pure $ Syntax.From (Ann a) b c d e Raise a b c ->- Syntax.Raise a b <$>+ Syntax.Raise (Ann a) b <$> traverse (\(a, b) -> (,) <$> fromIR_expr a <*> traverseOf (traverse._2) fromIR_expr b) c Assert a b c d ->- Syntax.Assert a b <$>+ Syntax.Assert (Ann a) b <$> fromIR_expr c <*> traverseOf (traverse._2) fromIR_expr d @@ -913,24 +914,24 @@ fromIR_compoundStatement st = case st of Fundef a b asyncWs c d e f g h i j ->- (\b' g' i' -> Syntax.Fundef a b' asyncWs c d e f g' h i') <$>+ (\b' g' i' -> Syntax.Fundef (Ann a) b' asyncWs c d e f g' h i') <$> traverse fromIR_decorator b <*> traverse fromIR_param g <*> traverseOf (traverse._2) fromIR_expr i <*> fromIR_suite j If a b c d e f g ->- Syntax.If a b c <$>+ Syntax.If (Ann a) b c <$> fromIR_expr d <*> fromIR_suite e <*> traverse (\(a, b, c, d) -> (,,,) a b <$> fromIR_expr c <*> fromIR_suite d) f <*> traverseOf (traverse._3) fromIR_suite g While a b c d e f ->- Syntax.While a b c <$>+ Syntax.While (Ann a) b c <$> fromIR_expr d <*> fromIR_suite e <*> traverseOf (traverse._3) fromIR_suite f TryExcept a b c d e f g ->- Syntax.TryExcept a b c <$>+ Syntax.TryExcept (Ann a) b c <$> fromIR_suite d <*> traverse (\(a, b, c, d) -> (,,,) a b <$> traverse fromIR_exceptAs c <*> fromIR_suite d)@@ -938,20 +939,20 @@ traverseOf (traverse._3) fromIR_suite f <*> traverseOf (traverse._3) fromIR_suite g TryFinally a b c d e f g ->- (\d' -> Syntax.TryFinally a b c d' e f) <$> fromIR_suite d <*> fromIR_suite g+ (\d' -> Syntax.TryFinally (Ann a) b c d' e f) <$> fromIR_suite d <*> fromIR_suite g For a b asyncWs c d e f g h ->- (\d' -> Syntax.For a b asyncWs c d' e) <$>+ (\d' -> Syntax.For (Ann a) b asyncWs c d' e) <$> fromIR_expr d <*> traverse fromIR_expr f <*> fromIR_suite g <*> traverseOf (traverse._3) fromIR_suite h ClassDef a b c d e f g ->- (\b' -> Syntax.ClassDef a b' c d e) <$>+ (\b' -> Syntax.ClassDef (Ann a) b' c d e) <$> traverse fromIR_decorator b <*> traverseOf (traverse._2.traverse.traverse) fromIR_arg f <*> fromIR_suite g With a b asyncWs c d e ->- Syntax.With a b asyncWs c <$>+ Syntax.With (Ann a) b asyncWs c <$> traverse fromIR_withItem d <*> fromIR_suite e @@ -960,40 +961,40 @@ => Expr a -> Validation (NonEmpty e) (Syntax.ListItem '[] a) fromIR_listItem (StarExpr a b c) =- Syntax.ListUnpack a [] b <$> fromIR_expr c+ Syntax.ListUnpack (Ann a) [] b <$> fromIR_expr c fromIR_listItem (Parens a b c d) = (\case Syntax.ListUnpack w x y z -> Syntax.ListUnpack w ((b, d) : x) y z- Syntax.ListItem x y -> Syntax.ListItem a (Syntax.Parens x b y d)) <$>+ Syntax.ListItem x y -> Syntax.ListItem (Ann a) (Syntax.Parens x b y d)) <$> fromIR_listItem c-fromIR_listItem e = (\x -> Syntax.ListItem (x ^. Syntax.exprAnn) x) <$> fromIR_expr e+fromIR_listItem e = (\x -> Syntax.ListItem (x ^. annot) x) <$> fromIR_expr e fromIR_tupleItem :: AsIRError e a => Expr a -> Validation (NonEmpty e) (Syntax.TupleItem '[] a) fromIR_tupleItem (StarExpr a b c) =- Syntax.TupleUnpack a [] b <$> fromIR_expr c+ Syntax.TupleUnpack (Ann a) [] b <$> fromIR_expr c fromIR_tupleItem (Parens a b c d) = (\case Syntax.TupleUnpack w x y z -> Syntax.TupleUnpack w ((b, d) : x) y z- Syntax.TupleItem x y -> Syntax.TupleItem a (Syntax.Parens x b y d)) <$>+ Syntax.TupleItem x y -> Syntax.TupleItem (Ann a) (Syntax.Parens x b y d)) <$> fromIR_tupleItem c fromIR_tupleItem e =- (\x -> Syntax.TupleItem (x ^. Syntax.exprAnn) x) <$> fromIR_expr e+ (\x -> Syntax.TupleItem (x ^. annot) x) <$> fromIR_expr e fromIR_setItem :: AsIRError e a => Expr a -> Validation (NonEmpty e) (Syntax.SetItem '[] a) fromIR_setItem (StarExpr a b c) =- Syntax.SetUnpack a [] b <$> fromIR_expr c+ Syntax.SetUnpack (Ann a) [] b <$> fromIR_expr c fromIR_setItem (Parens a b c d) = (\case Syntax.SetUnpack w x y z -> Syntax.SetUnpack w ((b, d) : x) y z- Syntax.SetItem x y -> Syntax.SetItem a (Syntax.Parens x b y d)) <$>+ Syntax.SetItem x y -> Syntax.SetItem (Ann a) (Syntax.Parens x b y d)) <$> fromIR_setItem c-fromIR_setItem e = (\x -> Syntax.SetItem (x ^. Syntax.exprAnn) x) <$> fromIR_expr e+fromIR_setItem e = (\x -> Syntax.SetItem (x ^. annot) x) <$> fromIR_expr e fromIR :: AsIRError e a
src/Language/Python/Internal/Token.hs view
@@ -13,9 +13,11 @@ module Language.Python.Internal.Token where +import Control.Lens.Getter ((^.)) import Data.Deriving (deriveEq1, deriveOrd1) import Data.Functor.Classes (liftCompare, liftEq) +import Language.Python.Syntax.Ann import Language.Python.Syntax.Comment (Comment(..)) import Language.Python.Syntax.Numbers import Language.Python.Syntax.Strings@@ -177,9 +179,9 @@ TkElif a -> a TkWhile a -> a TkAssert a -> a- TkInt a -> _intLiteralAnn a- TkFloat a -> _floatLiteralAnn a- TkImag a -> _imagLiteralAnn a+ TkInt a -> a ^. annot_+ TkFloat a -> a ^. annot_+ TkImag a -> a ^. annot_ TkIdent _ a -> a TkString _ _ _ _ a -> a TkBytes _ _ _ _ a -> a@@ -206,7 +208,7 @@ TkSemicolon a -> a TkComma a -> a TkDot a -> a- TkComment a -> _commentAnn a+ TkComment a -> a ^. annot_ TkStar a -> a TkDoubleStar a -> a TkSlash a -> a
src/Language/Python/Optics.hs view
@@ -20,6 +20,8 @@ module Language.Python.Optics ( module Language.Python.Optics.Validated+ -- * Identifiers+ , module Language.Python.Optics.Idents -- * Indentation , module Language.Python.Optics.Indents -- * Newlines@@ -75,11 +77,13 @@ import Control.Lens.Getter ((^.), view) import Control.Lens.Iso (Iso', iso, from) import Control.Lens.Traversal (Traversal)-import Control.Lens.Prism (Prism, prism)+import Control.Lens.Prism (Choice, Prism, prism) +import Language.Python.Optics.Idents import Language.Python.Optics.Indents import Language.Python.Optics.Newlines import Language.Python.Optics.Validated+import Language.Python.Syntax.Ann import Language.Python.Syntax.Expr import Language.Python.Syntax.Ident import Language.Python.Syntax.Statement@@ -375,12 +379,21 @@ instance HasWith Statement where _With = _CompoundStatement._With -_Ident :: Prism (Expr v a) (Expr '[] a) (Ident v a) (Ident '[] a)+-- |+-- A faux-Prism for matching on the @Ident@ constructor of an 'Expr'.+--+-- It's not a Prism because:+--+-- When 'Control.Lens.Fold.preview'ing, it discards the 'Expr'\'s annotation, and when+-- 'Control.Lens.Review.review'ing, it re-constructs an annotation from the supplied 'Language.Python.Syntax.Ident.Ident'+--+-- @'_Ident' :: 'Prism' ('Expr' v a) ('Expr' '[] a) ('Ident' v a) ('Ident' '[] a)@+_Ident :: (Choice p, Applicative f) => p (Ident v a) (f (Ident '[] a)) -> p (Expr v a) (f (Expr '[] a)) _Ident = prism- Ident+ (\i -> Ident (i ^. annot) i) (\case- Ident a -> Right a+ Ident _ a -> Right a a -> Left $ a ^. unvalidated) -- | 'Traversal' targeting the variables that would modified as a result of an assignment@@ -421,7 +434,7 @@ case e of List a b c d -> (\c' -> List a b c' d) <$> (traverse.traverse._Exprs.assignTargets) f c Parens a b c d -> (\c' -> Parens a b c' d) <$> assignTargets f c- Ident a -> Ident <$> f a+ Ident a b -> Ident a <$> f b Tuple a b c d -> (\b' d' -> Tuple a b' c d') <$> (_Exprs.assignTargets) f b <*>
+ src/Language/Python/Optics/Idents.hs view
@@ -0,0 +1,162 @@+{-# language BangPatterns #-}+{-# language DataKinds #-}+{-# language DefaultSignatures #-}+{-# language FlexibleContexts #-}+{-# language FlexibleInstances #-}+{-# language MultiParamTypeClasses #-}+{-# language TypeFamilies #-}+{-# language TypeOperators #-}+{-# language ScopedTypeVariables, TypeApplications #-}++{-|+Module : Language.Python.Optics.Idents+Copyright : (C) CSIRO 2017-2019+License : BSD3+Maintainer : Isaac Elliott <isaace71295@gmail.com>+Stability : experimental+Portability : non-portable+-}++module Language.Python.Optics.Idents (HasIdents(..)) where++import Control.Lens.Iso (iso)+import Control.Lens.Traversal (Traversal)+import Data.List.NonEmpty (NonEmpty)+import GHC.Generics++import Language.Python.Syntax.Ann+import Language.Python.Syntax.AugAssign+import Language.Python.Syntax.CommaSep+import Language.Python.Syntax.Comment+import Language.Python.Syntax.Expr+import Language.Python.Syntax.Ident+import Language.Python.Syntax.Import+import Language.Python.Syntax.Module+import Language.Python.Syntax.ModuleNames+import Language.Python.Syntax.Numbers+import Language.Python.Syntax.Operator.Binary+import Language.Python.Syntax.Operator.Unary+import Language.Python.Syntax.Punctuation+import Language.Python.Syntax.Statement+import Language.Python.Syntax.Strings+import Language.Python.Syntax.Whitespace++-- | 'Traversal' that targets all the 'Ident's in a structure+class HasIdents s where+ _Idents :: Traversal (s v a) (s '[] a) (Ident v a) (Ident '[] a)+ default _Idents+ :: forall v a l m+ . ( Generic (s v a)+ , Generic (s '[] a)+ , Rep (s v a) ~ l+ , Rep (s '[] a) ~ m+ , GHasIdents l m v a+ )+ => Traversal (s v a) (s '[] a) (Ident v a) (Ident '[] a)+ _Idents = iso from to . gidents @l @m @v @a++class HasIdents' s t v a where+ _Idents' :: Traversal s t (Ident v a) (Ident '[] a)++instance HasIdents s => HasIdents' (s v a) (s '[] a) v a where+ _Idents' = _Idents++instance HasIdents CompFor+instance HasIdents CompIf+instance HasIdents DictItem+instance HasIdents SetItem+instance HasIdents e => HasIdents (Comprehension e)+instance HasIdents TupleItem+instance HasIdents ListItem+instance HasIdents Param+instance HasIdents Subscript+instance HasIdents Arg+instance HasIdents Ident where+ _Idents = id+instance HasIdents n => HasIdents (ImportAs n)+instance HasIdents Expr+instance HasIdents ImportTargets+instance HasIdents RelativeModuleName+instance HasIdents ModuleName+instance HasIdents SimpleStatement+instance HasIdents SmallStatement+instance HasIdents Decorator+instance HasIdents Block+instance HasIdents Suite+instance HasIdents ExceptAs+instance HasIdents WithItem+instance HasIdents CompoundStatement+instance HasIdents Statement+instance HasIdents Module++class GHasIdents s t v a where+ gidents :: Traversal (s x) (t x) (Ident v a) (Ident '[] a)++instance (GHasIdents a c v x, GHasIdents b d v x) => GHasIdents (a :+: b) (c :+: d) v x where+ gidents f (L1 a) = L1 <$> gidents f a+ gidents f (R1 a) = R1 <$> gidents f a++instance (GHasIdents a c v x, GHasIdents b d v x) => GHasIdents (a :*: b) (c :*: d) v x where+ gidents f (a :*: b) = (:*:) <$> gidents f a <*> gidents f b++instance GHasIdents U1 U1 v x where+ gidents _ U1 = pure U1++instance GHasIdents V1 V1 v x where+ gidents _ !_ = undefined++instance GHasIdents a b v x => GHasIdents (M1 i t a) (M1 i' t' b) v x where+ gidents f (M1 a) = M1 <$> gidents f a++instance {-# overlapping #-} HasIdents s => GHasIdents (K1 i (s v a)) (K1 i (s '[] a)) v a where+ gidents f (K1 a) = K1 <$> _Idents f a++instance {-# overlappable #-} HasIdents' a b v x => GHasIdents (K1 i a) (K1 i b) v x where+ gidents f (K1 a) = K1 <$> _Idents' f a++-- redundant instances++instance HasIdents' (Ann a) (Ann a) v a where; _Idents' _ = pure+instance HasIdents' (BinOp a) (BinOp a) v a where; _Idents' _ = pure+instance HasIdents' (IntLiteral a) (IntLiteral a) v a where; _Idents' _ = pure+instance HasIdents' (FloatLiteral a) (FloatLiteral a) v a where; _Idents' _ = pure+instance HasIdents' (ImagLiteral a) (ImagLiteral a) v a where; _Idents' _ = pure+instance HasIdents' (StringLiteral a) (StringLiteral a) v a where; _Idents' _ = pure+instance HasIdents' (UnOp a) (UnOp a) v a where; _Idents' _ = pure+instance HasIdents' (AugAssign a) (AugAssign a) v a where; _Idents' _ = pure+instance HasIdents' Whitespace Whitespace v a where; _Idents' _ = pure+instance HasIdents' Newline Newline v a where; _Idents' _ = pure+instance HasIdents' (Blank a) (Blank a) v a where; _Idents' _ = pure+instance HasIdents' Colon Colon v a where; _Idents' _ = pure+instance HasIdents' At At v a where; _Idents' _ = pure+instance HasIdents' (Semicolon a) (Semicolon a) v a where; _Idents' _ = pure+instance HasIdents' (Comment a) (Comment a) v a where; _Idents' _ = pure+instance HasIdents' (Indents a) (Indents a) v a where; _Idents' _ = pure+instance HasIdents' Dot Dot v a where; _Idents' _ = pure+instance HasIdents' Equals Equals v a where; _Idents' _ = pure+instance HasIdents' Comma Comma v a where; _Idents' _ = pure+instance HasIdents' Bool Bool v a where; _Idents' _ = pure+instance HasIdents' a b v x => HasIdents' [a] [b] v x where; _Idents' = traverse._Idents'+instance HasIdents' a b v x => HasIdents' (NonEmpty a) (NonEmpty b) v x where; _Idents' = traverse._Idents'+instance HasIdents' a b v x => HasIdents' (Maybe a) (Maybe b) v x where; _Idents' = traverse._Idents'+instance HasIdents' a b v x => HasIdents' (CommaSep a) (CommaSep b) v x where; _Idents' = traverse._Idents'+instance HasIdents' a b v x => HasIdents' (CommaSep1 a) (CommaSep1 b) v x where; _Idents' = traverse._Idents'+instance HasIdents' a b v x => HasIdents' (CommaSep1' a) (CommaSep1' b) v x where; _Idents' = traverse._Idents'+instance (HasIdents' a b v x, HasIdents' c d v x) => HasIdents' (a, c) (b, d) v x where+ _Idents' f (a, b) = (,) <$> _Idents' f a <*> _Idents' f b+instance (HasIdents' a b v x, HasIdents' c d v x, HasIdents' e f v x) => HasIdents' (a, c, e) (b, d, f) v x where+ _Idents' f (a, b, c) =+ (,,) <$>+ _Idents' f a <*>+ _Idents' f b <*>+ _Idents' f c+instance (HasIdents' a b v x, HasIdents' c d v x, HasIdents' e f v x, HasIdents' g h v x) => HasIdents' (a, c, e, g) (b, d, f, h) v x where+ _Idents' f (a, b, c, d) =+ (,,,) <$>+ _Idents' f a <*>+ _Idents' f b <*>+ _Idents' f c <*>+ _Idents' f d+instance (HasIdents' a b v x, HasIdents' c d v x) => HasIdents' (Either a c) (Either b d) v x where+ _Idents' f (Left a) = Left <$> _Idents' f a+ _Idents' f (Right a) = Right <$>_Idents' f a
src/Language/Python/Optics/Newlines.hs view
@@ -46,18 +46,18 @@ _Newlines f c <*> _Newlines f d -instance HasNewlines (e a) => HasNewlines (ImportAs e v a) where+instance HasNewlines (e v a) => HasNewlines (ImportAs e v a) where _Newlines f (ImportAs a b c) = ImportAs a <$> _Newlines f b <*> _Newlines f c instance HasNewlines (RelativeModuleName v a) where- _Newlines f (RelativeWithName a b) =- RelativeWithName <$>+ _Newlines f (RelativeWithName ann a b) =+ RelativeWithName ann <$> _Newlines f a <*> _Newlines f b- _Newlines f (Relative a) = Relative <$> _Newlines f a+ _Newlines f (Relative ann a) = Relative ann <$> _Newlines f a instance (HasNewlines a, HasNewlines b) => HasNewlines (Either a b) where _Newlines f (Left a) = Left <$> _Newlines f a@@ -389,7 +389,7 @@ _Newlines fun b <*> go c <*> _Newlines fun d- Ident a -> Ident <$> _Newlines fun a+ Ident a b -> Ident a <$> _Newlines fun b Int a b c -> Int a b <$> _Newlines fun c Float a b c -> Float a b <$> _Newlines fun c Imag a b c -> Imag a b <$> _Newlines fun c
src/Language/Python/Parse.hs view
@@ -12,12 +12,19 @@ -} module Language.Python.Parse- ( module Language.Python.Parse.Error+ ( module Data.Validation+ , module Language.Python.Parse.Error , Parser+ -- * Parsing some 'Text' , parseModule , parseStatement , parseExpr , parseExprList+ -- * Parsing from a file+ , readModule+ , readStatement+ , readExpr+ , readExprList -- * Source Information , SrcInfo(..), initialSrcInfo )@@ -27,9 +34,11 @@ import Data.Bifunctor (first) import Data.List.NonEmpty (NonEmpty) import Data.Text (Text)-import Data.Validation (Validation, bindValidation, fromEither)+import Data.Validation import Text.Megaparsec (eof) +import qualified Data.Text.IO as Text+ import Language.Python.Internal.Lexer ( SrcInfo(..), initialSrcInfo, withSrcInfo , tokenize, insertTabs@@ -41,6 +50,7 @@ ) import Language.Python.Internal.Syntax.IR (AsIRError) import Language.Python.Parse.Error+import Language.Python.Syntax.Ann import Language.Python.Syntax.Expr (Expr) import Language.Python.Syntax.Module (Module) import Language.Python.Syntax.Statement (Statement)@@ -94,7 +104,7 @@ in fromEither (first pure ir) `bindValidation` IR.fromIR_statement where- tlIndent = level <|> withSrcInfo (pure $ Indents [])+ tlIndent = level <|> withSrcInfo (pure $ Indents [] . Ann) -- | Parse an expression list (unparenthesised tuple) --@@ -141,3 +151,59 @@ runParser fp (expr space <* eof) tabbed in fromEither (first pure ir) `bindValidation` IR.fromIR_expr++-- | Parse a module from a file+--+-- https://docs.python.org/3/reference/toplevel_components.html#file-input+readModule+ :: ( AsLexicalError e Char+ , AsTabError e SrcInfo+ , AsIncorrectDedent e SrcInfo+ , AsParseError e (PyToken SrcInfo)+ , AsIRError e SrcInfo+ )+ => FilePath -- ^ File to read+ -> IO (Validation (NonEmpty e) (Module '[] SrcInfo))+readModule fp = parseModule fp <$> Text.readFile fp++-- | Parse a statement from a file+--+-- https://docs.python.org/3/reference/compound_stmts.html#grammar-token-statement+readStatement+ :: ( AsLexicalError e Char+ , AsTabError e SrcInfo+ , AsIncorrectDedent e SrcInfo+ , AsParseError e (PyToken SrcInfo)+ , AsIRError e SrcInfo+ )+ => FilePath -- ^ File to read+ -> IO (Validation (NonEmpty e) (Statement '[] SrcInfo))+readStatement fp = parseStatement fp <$> Text.readFile fp++-- | Parse an expression from a file+--+-- https://docs.python.org/3.5/reference/expressions.html#grammar-token-expression+readExpr+ :: ( AsLexicalError e Char+ , AsTabError e SrcInfo+ , AsIncorrectDedent e SrcInfo+ , AsParseError e (PyToken SrcInfo)+ , AsIRError e SrcInfo+ )+ => FilePath -- ^ File to read+ -> IO (Validation (NonEmpty e) (Expr '[] SrcInfo))+readExpr fp = parseExpr fp <$> Text.readFile fp++-- | Parse an expression list (unparenthesised tuple) from a file+--+-- https://docs.python.org/3.5/reference/expressions.html#grammar-token-expression_list+readExprList+ :: ( AsLexicalError e Char+ , AsTabError e SrcInfo+ , AsIncorrectDedent e SrcInfo+ , AsParseError e (PyToken SrcInfo)+ , AsIRError e SrcInfo+ )+ => FilePath -- ^ File to read+ -> IO (Validation (NonEmpty e) (Expr '[] SrcInfo))+readExprList fp = parseExprList fp <$> Text.readFile fp
src/Language/Python/Syntax.hs view
@@ -12,7 +12,8 @@ -} module Language.Python.Syntax- ( module Language.Python.Syntax.AugAssign+ ( module Language.Python.Syntax.Ann+ , module Language.Python.Syntax.AugAssign , module Language.Python.Syntax.CommaSep , module Language.Python.Syntax.Comment , module Language.Python.Syntax.Expr@@ -31,6 +32,7 @@ ) where +import Language.Python.Syntax.Ann import Language.Python.Syntax.AugAssign import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Comment
+ src/Language/Python/Syntax/Ann.hs view
@@ -0,0 +1,44 @@+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language GeneralizedNewtypeDeriving #-}+{-# language ScopedTypeVariables, TypeApplications #-}+{-# language FlexibleInstances, MultiParamTypeClasses, TemplateHaskell, TypeFamilies #-}++{-|+Module : Language.Python.Syntax.Ann+Copyright : (C) CSIRO 2017-2019+License : BSD3+Maintainer : Isaac Elliott <isaace71295@gmail.com>+Stability : experimental+Portability : non-portable+-}++module Language.Python.Syntax.Ann+ ( Ann(..)+ , annot_+ , HasAnn(..)+ )+where++import Control.Lens.Lens (Lens')+import Control.Lens.TH (makeWrapped)+import Control.Lens.Wrapped (_Wrapped)+import Data.Deriving (deriveEq1, deriveOrd1, deriveShow1)+import Data.Semigroup (Semigroup)+import Data.Monoid (Monoid)++-- | Used to mark annotations in data structures, which helps with generic deriving+newtype Ann a = Ann { getAnn :: a }+ deriving (Eq, Ord, Show, Functor, Foldable, Traversable, Semigroup, Monoid)++-- | Classy 'Lens'' for things that are annotated+class HasAnn s where+ annot :: Lens' (s a) (Ann a)++-- | Get an annotation and forget the wrapper+annot_ :: HasAnn s => Lens' (s a) a+annot_ = annot._Wrapped++makeWrapped ''Ann+deriveEq1 ''Ann+deriveOrd1 ''Ann+deriveShow1 ''Ann
src/Language/Python/Syntax/AugAssign.hs view
@@ -1,4 +1,5 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-| Module : Language.Python.Syntax.AugAssign@@ -11,8 +12,11 @@ module Language.Python.Syntax.AugAssign where -import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens)+import Data.Generics.Product.Typed (typed)+import GHC.Generics +import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace -- | Augmented assignments (PEP 203), such as:@@ -31,11 +35,15 @@ -- optional annotation, which can simply be @()@ if no annotation is desired. data AugAssign a = MkAugAssign- { _augAssignType :: AugAssignOp- , _augAssignAnn :: a+ { _augAssignAnn :: Ann a+ , _augAssignType :: AugAssignOp , _augAssignWhitespace :: [Whitespace] }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic)++instance HasAnn AugAssign where+ annot :: forall a. Lens' (AugAssign a) (Ann a)+ annot = typed @(Ann a) instance HasTrailingWhitespace (AugAssign a) where trailingWhitespace =
src/Language/Python/Syntax/CommaSep.hs view
@@ -1,5 +1,5 @@ {-# language LambdaCase #-}-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-| Module : Language.Python.Syntax.CommaSep@@ -32,6 +32,7 @@ import Data.List.NonEmpty (NonEmpty(..)) import Data.Maybe (fromMaybe) import Data.Semigroup (Semigroup(..))+import GHC.Generics (Generic) import Language.Python.Syntax.Punctuation import Language.Python.Syntax.Whitespace (Whitespace (Space), HasTrailingWhitespace (..))@@ -41,7 +42,7 @@ = CommaSepNone | CommaSepOne a | CommaSepMany a Comma (CommaSep a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -- | 'Traversal' targeting the trailing whitespace in a comma separated list. --@@ -91,7 +92,7 @@ data CommaSep1 a = CommaSepOne1 a | CommaSepMany1 a Comma (CommaSep1 a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -- | Get the first element of a 'CommaSep1' commaSep1Head :: CommaSep1 a -> a@@ -139,7 +140,7 @@ data CommaSep1' a = CommaSepOne1' a (Maybe Comma) | CommaSepMany1' a Comma (CommaSep1' a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -- | Iso to unpack a 'CommaSep' _CommaSep
src/Language/Python/Syntax/Comment.hs view
@@ -1,4 +1,5 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language TemplateHaskell #-} {-|@@ -12,8 +13,13 @@ module Language.Python.Syntax.Comment where +import Control.Lens.Lens (Lens')+import Data.Generics.Product.Typed (typed) import Data.Deriving (deriveEq1, deriveOrd1)+import GHC.Generics (Generic) +import Language.Python.Syntax.Ann+ -- | A Python single-line comment, such as on the following line: -- -- @@@ -35,10 +41,14 @@ -- string expressions (since that's what they are). data Comment a = MkComment- { _commentAnn :: a+ { _commentAnn :: Ann a , _commentValue :: String }- deriving (Eq, Ord, Show, Functor, Foldable, Traversable)+ deriving (Eq, Ord, Show, Functor, Foldable, Traversable, Generic)++instance HasAnn Comment where+ annot :: forall a. Lens' (Comment a) (Ann a)+ annot = typed @(Ann a) deriveEq1 ''Comment deriveOrd1 ''Comment
src/Language/Python/Syntax/Expr.hs view
@@ -1,9 +1,10 @@ {-# language LambdaCase #-} {-# language DataKinds, KindSignatures #-}-{-# language ScopedTypeVariables #-}-{-# language MultiParamTypeClasses, FlexibleInstances #-} {-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language ExistentialQuantification #-}+{-# language InstanceSigs, TypeApplications #-}+{-# language MultiParamTypeClasses, FlexibleInstances #-}+{-# language ScopedTypeVariables #-} {-| Module : Language.Python.Syntax.Expr@@ -16,7 +17,7 @@ module Language.Python.Syntax.Expr ( -- * Expressions- Expr(..), HasExprs(..), exprAnn, shouldGroupLeft, shouldGroupRight+ Expr(..), HasExprs(..), shouldGroupLeft, shouldGroupRight -- * Parameters and arguments , Param(..), paramAnn, paramType_, paramType, paramName , Arg(..), argExpr@@ -34,7 +35,7 @@ import Control.Lens.Fold ((^?), (^?!)) import Control.Lens.Getter ((^.), getting, to, view) import Control.Lens.Lens (Lens, Lens', lens)-import Control.Lens.Plated (Plated(..), gplate)+import Control.Lens.Plated (Plated(..)) import Control.Lens.Prism (_Just, _Left, _Right) import Control.Lens.Setter ((.~), mapped, over) import Control.Lens.Traversal (Traversal, failing, traverseOf)@@ -45,6 +46,7 @@ import Data.Coerce (coerce) import Data.Digit.Integral (integralDecDigits) import Data.Function ((&))+import Data.Generics.Product.Typed (typed) import Data.List.NonEmpty (NonEmpty) import Data.Maybe (isNothing) import Data.Monoid ((<>))@@ -53,6 +55,7 @@ import Unsafe.Coerce (unsafeCoerce) import Language.Python.Optics.Validated (Validated(..))+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Ident import Language.Python.Syntax.Numbers@@ -89,13 +92,13 @@ data Param (v :: [*]) a -- | @def foo(a):@ = PositionalParam- { _paramAnn :: a+ { _paramAnn :: Ann a , _paramName :: Ident v a , _paramType :: Maybe (Colon, Expr v a) } -- | @def foo(bar=None):@ | KeywordParam- { _paramAnn :: a+ { _paramAnn :: Ann a , _paramName :: Ident v a -- ':' spaces <expr> , _paramType :: Maybe (Colon, Expr v a)@@ -105,7 +108,7 @@ } -- | @def foo(*xs):@ | StarParam- { _paramAnn :: a+ { _paramAnn :: Ann a -- '*' spaces , _unsafeStarParamWhitespace :: [Whitespace] , _unsafeStarParamName :: Ident v a@@ -114,23 +117,27 @@ } -- | @def foo(*):@ | UnnamedStarParam- { _paramAnn :: a+ { _paramAnn :: Ann a -- '*' spaces , _unsafeUnnamedStarParamWhitespace :: [Whitespace] } -- | @def foo(**dict):@ | DoubleStarParam- { _paramAnn :: a+ { _paramAnn :: Ann a -- '**' spaces , _unsafeDoubleStarParamWhitespace :: [Whitespace] , _paramName :: Ident v a -- ':' spaces <expr> , _paramType :: Maybe (Colon, Expr v a) }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (Param v) where+ annot :: forall a. Lens' (Param v a) (Ann a)+ annot = typed @(Ann a)+ instance IsString (Param '[] ()) where- fromString a = PositionalParam () (fromString a) Nothing+ fromString a = PositionalParam (Ann ()) (fromString a) Nothing instance HasTrailingWhitespace (Param v a) where trailingWhitespace =@@ -170,7 +177,7 @@ -- | Lens on the syntrax tree annotation on a parameter paramAnn :: Lens' (Param v a) a-paramAnn = lens _paramAnn (\s a -> s { _paramAnn = a})+paramAnn = lens (getAnn . _paramAnn) (\s a -> s { _paramAnn = Ann a}) -- | A faux-lens on the optional Python type annotation which may follow a parameter --@@ -261,29 +268,34 @@ -- @ data Arg (v :: [*]) a = PositionalArg- { _argAnn :: a+ { _argAnn :: Ann a , _argExpr :: Expr v a } | KeywordArg- { _argAnn :: a+ { _argAnn :: Ann a , _unsafeKeywordArgName :: Ident v a , _unsafeKeywordArgWhitespaceRight :: [Whitespace] , _argExpr :: Expr v a } | StarArg- { _argAnn :: a+ { _argAnn :: Ann a , _unsafeStarArgWhitespace :: [Whitespace] , _argExpr :: Expr v a } | DoubleStarArg- { _argAnn :: a+ { _argAnn :: Ann a , _unsafeDoubleStarArgWhitespace :: [Whitespace] , _argExpr :: Expr v a }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -instance IsString (Arg '[] ()) where; fromString = PositionalArg () . fromString+instance HasAnn (Arg v) where+ annot :: forall a. Lens' (Arg v a) (Ann a)+ annot = typed @(Ann a) +instance IsString (Arg '[] ()) where+ fromString = PositionalArg (Ann ()) . fromString+ -- | Lens on the Python expression which is passed as the argument argExpr :: Lens (Arg v a) (Arg '[] a) (Expr v a) (Expr '[] a) argExpr = lens _argExpr (\s a -> (s ^. unvalidated) { _argExpr = a })@@ -300,9 +312,17 @@ -- x for y in z -- @ data Comprehension e (v :: [*]) a- = Comprehension a (e v a) (CompFor v a) [Either (CompFor v a) (CompIf v a)] -- ^ <expr> <comp_for> (comp_for | comp_if)*- deriving (Eq, Show)+ = Comprehension+ (Ann a)+ (e v a)+ (CompFor v a)+ [Either (CompFor v a) (CompIf v a)] -- ^ <expr> <comp_for> (comp_for | comp_if)*+ deriving (Eq, Show, Generic) +instance HasAnn (Comprehension e v) where+ annot :: forall a. Lens' (Comprehension e v a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (Comprehension e v a) where trailingWhitespace = lens@@ -320,25 +340,29 @@ instance Functor (e v) => Functor (Comprehension e v) where fmap f (Comprehension a b c d) =- Comprehension (f a) (fmap f b) (fmap f c) (fmap (bimap (fmap f) (fmap f)) d)+ Comprehension (f <$> a) (fmap f b) (fmap f c) (fmap (bimap (fmap f) (fmap f)) d) instance Foldable (e v) => Foldable (Comprehension e v) where foldMap f (Comprehension a b c d) =- f a <> foldMap f b <> foldMap f c <> foldMap (bifoldMap (foldMap f) (foldMap f)) d+ foldMap f a <> foldMap f b <> foldMap f c <> foldMap (bifoldMap (foldMap f) (foldMap f)) d instance Traversable (e v) => Traversable (Comprehension e v) where traverse f (Comprehension a b c d) = Comprehension <$>- f a <*>+ traverse f a <*> traverse f b <*> traverse f c <*> traverse (bitraverse (traverse f) (traverse f)) d -- | A condition inside a comprehension, e.g. @[x for x in xs if even(x)]@ data CompIf (v :: [*]) a- = CompIf a [Whitespace] (Expr v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ = CompIf (Ann a) [Whitespace] (Expr v a)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (CompIf v) where+ annot :: forall a. Lens' (CompIf v a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (CompIf v a) where trailingWhitespace = lens@@ -347,9 +371,13 @@ -- | A nested comprehesion, e.g. @[(x, y) for x in xs for y in ys]@ data CompFor (v :: [*]) a- = CompFor a [Whitespace] (Expr v a) [Whitespace] (Expr v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ = CompFor (Ann a) [Whitespace] (Expr v a) [Whitespace] (Expr v a)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (CompFor v) where+ annot :: forall a. Lens' (CompFor v a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (CompFor v a) where trailingWhitespace = lens@@ -363,17 +391,21 @@ -- https://docs.python.org/3/reference/expressions.html#dictionary-displays data DictItem (v :: [*]) a = DictItem- { _dictItemAnn :: a+ { _dictItemAnn :: Ann a , _unsafeDictItemKey :: Expr v a , _unsafeDictItemColon :: Colon , _unsafeDictItemValue :: Expr v a } | DictUnpack- { _dictItemAnn :: a+ { _dictItemAnn :: Ann a , _unsafeDictItemUnpackWhitespace :: [Whitespace] , _unsafeDictItemUnpackValue :: Expr v a- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (DictItem v) where+ annot :: forall a. Lens' (DictItem v a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (DictItem v a) where trailingWhitespace = lens@@ -408,7 +440,7 @@ (Maybe (Expr v a)) -- [':' [expr]] (Maybe (Colon, Maybe (Expr v a)))- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) instance HasTrailingWhitespace (Subscript v a) where trailingWhitespace =@@ -447,16 +479,20 @@ -- https://docs.python.org/3/reference/expressions.html#list-displays data ListItem (v :: [*]) a = ListItem- { _listItemAnn :: a+ { _listItemAnn :: Ann a , _unsafeListItemValue :: Expr v a } | ListUnpack- { _listItemAnn :: a+ { _listItemAnn :: Ann a , _unsafeListUnpackParens :: [([Whitespace], [Whitespace])] , _unsafeListUnpackWhitespace :: [Whitespace] , _unsafeListUnpackValue :: Expr v a- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (ListItem v) where+ annot :: forall a. Lens' (ListItem v a) (Ann a)+ annot = typed @(Ann a)+ instance HasExprs ListItem where _Exprs f (ListItem a b) = ListItem a <$> f b _Exprs f (ListUnpack a b c d) = ListUnpack a b c <$> f d@@ -481,16 +517,20 @@ -- https://docs.python.org/3/reference/expressions.html#set-displays data SetItem (v :: [*]) a = SetItem- { _setItemAnn :: a+ { _setItemAnn :: Ann a , _unsafeSetItemValue :: Expr v a } | SetUnpack- { _setItemAnn :: a+ { _setItemAnn :: Ann a , _unsafeSetUnpackParens :: [([Whitespace], [Whitespace])] , _unsafeSetUnpackWhitespace :: [Whitespace] , _unsafeSetUnpackValue :: Expr v a- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (SetItem v) where+ annot :: forall a. Lens' (SetItem v a) (Ann a)+ annot = typed @(Ann a)+ instance HasExprs SetItem where _Exprs f (SetItem a b) = SetItem a <$> f b _Exprs f (SetUnpack a b c d) = SetUnpack a b c <$> f d@@ -513,16 +553,20 @@ -- Used to construct tuples, e.g. @(1, 'x', **c)@ data TupleItem (v :: [*]) a = TupleItem- { _tupleItemAnn :: a+ { _tupleItemAnn :: Ann a , _unsafeTupleItemValue :: Expr v a } | TupleUnpack- { _tupleItemAnn :: a+ { _tupleItemAnn :: Ann a , _unsafeTupleUnpackParens :: [([Whitespace], [Whitespace])] , _unsafeTupleUnpackWhitespace :: [Whitespace] , _unsafeTupleUnpackValue :: Expr v a- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (TupleItem v) where+ annot :: forall a. Lens' (TupleItem v a) (Ann a)+ annot = typed @(Ann a)+ instance HasExprs TupleItem where _Exprs f (TupleItem a b) = TupleItem a <$> f b _Exprs f (TupleUnpack a b c d) = TupleUnpack a b c <$> f d@@ -546,7 +590,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#parenthesized-forms = Unit- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeUnitWhitespaceInner :: [Whitespace] , _unsafeUnitWhitespaceRight :: [Whitespace] }@@ -554,7 +598,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#lambda | Lambda- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeLambdaWhitespace :: [Whitespace] , _unsafeLambdaArgs :: CommaSep (Param v a) , _unsafeLambdaColon :: Colon@@ -568,7 +612,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#yield-expressions | Yield- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeYieldWhitespace :: [Whitespace] , _unsafeYieldValue :: CommaSep (Expr v a) }@@ -576,7 +620,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#yield-expressions | YieldFrom- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeYieldWhitespace :: [Whitespace] , _unsafeFromWhitespace :: [Whitespace] , _unsafeYieldFromValue :: Expr v a@@ -585,7 +629,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#conditional-expressions | Ternary- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- expr , _unsafeTernaryValue :: Expr v a -- 'if' spaces@@ -601,7 +645,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#list-displays | ListComp- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- [ spaces , _unsafeListCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -613,7 +657,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#list-displays | List- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- [ spaces , _unsafeListWhitespaceLeft :: [Whitespace] -- exprs@@ -625,7 +669,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays | DictComp- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- { spaces , _unsafeDictCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -639,7 +683,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#dictionary-displays | Dict- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeDictWhitespaceLeft :: [Whitespace] , _unsafeDictValues :: Maybe (CommaSep1' (DictItem v a)) , _unsafeDictWhitespaceRight :: [Whitespace]@@ -648,7 +692,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#set-displays | SetComp- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- { spaces , _unsafeSetCompWhitespaceLeft :: [Whitespace] -- comprehension@@ -660,7 +704,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#set-displays | Set- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeSetWhitespaceLeft :: [Whitespace] , _unsafeSetValues :: CommaSep1' (SetItem v a) , _unsafeSetWhitespaceRight :: [Whitespace]@@ -669,7 +713,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#attribute-references | Deref- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- expr , _unsafeDerefValueLeft :: Expr v a -- . spaces@@ -687,7 +731,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#subscriptions | Subscript- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- expr , _unsafeSubscriptValueLeft :: Expr v a -- [ spaces@@ -701,7 +745,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#calls | Call- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a -- expr , _unsafeCallFunction :: Expr v a -- ( spaces@@ -715,14 +759,14 @@ -- -- https://docs.python.org/3/library/constants.html#None | None- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeNoneWhitespace :: [Whitespace] } -- | @...@ -- -- https://docs.python.org/3/library/constants.html#Ellipsis | Ellipsis- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeEllipsisWhitespace :: [Whitespace] } -- | @a + b@@@ -743,7 +787,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#boolean-operations | BinOp- { _unsafeExprAnn :: a+ { _unsafeExprAnn :: Ann a , _unsafeBinOpExprLeft :: Expr v a , _unsafeBinOpOp :: BinOp a , _unsafeBinOpExprRight :: Expr v a@@ -756,12 +800,12 @@ -- -- https://docs.python.org/3/reference/expressions.html#unary-arithmetic-and-bitwise-operations | UnOp- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeUnOpOp :: UnOp a , _unsafeUnOpValue :: Expr v a } | Parens- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a -- ( spaces , _unsafeParensWhitespaceLeft :: [Whitespace] -- expr@@ -773,7 +817,8 @@ -- -- https://docs.python.org/3/reference/expressions.html#atom-identifiers | Ident- { _unsafeIdentValue :: Ident v a+ { _exprAnn :: Ann a+ , _unsafeIdentValue :: Ident v a } -- | @1@ --@@ -785,7 +830,7 @@ -- -- https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-integer | Int- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeIntValue :: IntLiteral a , _unsafeIntWhitespace :: [Whitespace] }@@ -797,7 +842,7 @@ -- -- https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals | Float- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeFloatValue :: FloatLiteral a , _unsafeFloatWhitespace :: [Whitespace] }@@ -807,7 +852,7 @@ -- -- https://docs.python.org/3/reference/lexical_analysis.html#floating-point-literals | Imag- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeImagValue :: ImagLiteral a , _unsafeImagWhitespace :: [Whitespace] }@@ -819,7 +864,7 @@ -- -- https://docs.python.org/3/library/constants.html#False | Bool- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeBoolValue :: Bool , _unsafeBoolWhitespace :: [Whitespace] }@@ -833,7 +878,7 @@ -- -- https://docs.python.org/3/reference/lexical_analysis.html#grammar-token-stringliteral | String- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeStringValue :: NonEmpty (StringLiteral a) } -- | @a, b, c@@@ -844,7 +889,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#expression-lists | Tuple- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a -- expr , _unsafeTupleHead :: TupleItem v a -- , spaces@@ -856,7 +901,7 @@ -- -- https://docs.python.org/3/reference/expressions.html#boolean-operations | Not- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeNotWhitespace :: [Whitespace] , _unsafeNotValue :: Expr v a }@@ -864,84 +909,22 @@ -- -- https://docs.python.org/3/reference/expressions.html#generator-expressions | Generator- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _generatorValue :: Comprehension Expr v a } -- | @await a@ -- -- https://docs.python.org/3/reference/expressions.html#await | Await- { _unsafeExprAnn :: a+ { _exprAnn :: Ann a , _unsafeAwaitWhitespace :: [Whitespace] , _unsafeAwaitValue :: Expr v a } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) --- | Lens on the top-level annotation in an expression-exprAnn :: Lens' (Expr v a) a-exprAnn =- lens- (\case- Unit a _ _ -> a- Lambda a _ _ _ _ -> a- Yield a _ _ -> a- YieldFrom a _ _ _ -> a- Ternary a _ _ _ _ _ -> a- None a _ -> a- Ellipsis a _ -> a- List a _ _ _ -> a- ListComp a _ _ _ -> a- Deref a _ _ _ -> a- Subscript a _ _ _ _ -> a- Call a _ _ _ _ -> a- BinOp a _ _ _ -> a- UnOp a _ _ -> a- Parens a _ _ _ -> a- Ident a -> a ^. identAnn- Int a _ _ -> a- Float a _ _ -> a- Imag a _ _ -> a- Bool a _ _ -> a- String a _ -> a- Not a _ _ -> a- Tuple a _ _ _ -> a- DictComp a _ _ _ -> a- Dict a _ _ _ -> a- SetComp a _ _ _ -> a- Set a _ _ _ -> a- Generator a _ -> a- Await a _ _ -> a)- (\e ann ->- case e of- Unit _ a b -> Unit ann a b- Lambda _ a b c d -> Lambda ann a b c d- Yield _ a b -> Yield ann a b- YieldFrom ann a b c -> YieldFrom ann a b c- Ternary ann a b c d e -> Ternary ann a b c d e- None _ a -> None ann a- Ellipsis _ a -> Ellipsis ann a- List _ a b c -> List ann a b c- ListComp _ a b c -> ListComp ann a b c- Deref _ a b c -> Deref ann a b c- Subscript _ a b c d -> Subscript ann a b c d- Call _ a b c d -> Call ann a b c d- BinOp _ a b c -> BinOp ann a b c- UnOp _ a b -> UnOp ann a b- Parens _ a b c -> Parens ann a b c- Ident a -> Ident $ a & identAnn .~ ann- Int _ a b -> Int ann a b- Float _ a b -> Float ann a b- Imag _ a b -> Imag ann a b- Bool _ a b -> Bool ann a b- String _ a -> String ann a- Not _ a b -> Not ann a b- Tuple _ a b c -> Tuple ann a b c- DictComp _ a b c -> DictComp ann a b c- Dict _ a b c -> Dict ann a b c- SetComp _ a b c -> SetComp ann a b c- Set _ a b c -> Set ann a b c- Generator _ a -> Generator ann a- Await _ a b -> Not ann a b)+instance HasAnn (Expr v) where+ annot :: forall a. Lens' (Expr v a) (Ann a)+ annot = typed @(Ann a) instance HasTrailingWhitespace (Expr v a) where trailingWhitespace =@@ -963,7 +946,7 @@ BinOp _ _ _ e -> e ^. trailingWhitespace UnOp _ _ e -> e ^. trailingWhitespace Parens _ _ _ ws -> ws- Ident a -> a ^. getting trailingWhitespace+ Ident _ a -> a ^. getting trailingWhitespace Int _ _ ws -> ws Float _ _ ws -> ws Imag _ _ ws -> ws@@ -996,7 +979,7 @@ BinOp a b c e -> BinOp a (coerce b) c (e & trailingWhitespace .~ ws) UnOp a b c -> UnOp a b (c & trailingWhitespace .~ ws) Parens a b c _ -> Parens a b (coerce c) ws- Ident a -> Ident $ a & trailingWhitespace .~ ws+ Ident a b -> Ident a $ b & trailingWhitespace .~ ws Int a b _ -> Int a b ws Float a b _ -> Float a b ws Imag a b _ -> Imag a b ws@@ -1014,26 +997,174 @@ Await a b c -> Await a b (c & trailingWhitespace .~ ws)) instance IsString (Expr '[] ()) where- fromString s = Ident $ MkIdent () s []+ fromString s = Ident (Ann ()) $ MkIdent (Ann ()) s [] instance Num (Expr '[] ()) where fromInteger n- | n >= 0 = Int () (IntLiteralDec () $ integralDecDigits n ^?! _Right) []+ | n >= 0 = Int (Ann ()) (IntLiteralDec (Ann ()) $ integralDecDigits n ^?! _Right) [] | otherwise = UnOp- ()- (Negate () [])- (Int () (IntLiteralDec () $ integralDecDigits (-n) ^?! _Right) [])+ (Ann ())+ (Negate (Ann ()) [])+ (Int (Ann ()) (IntLiteralDec (Ann ()) $ integralDecDigits (-n) ^?! _Right) []) - negate = UnOp () (Negate () [])+ negate = UnOp (Ann ()) (Negate (Ann ()) []) - (+) a = BinOp () (a & trailingWhitespace .~ [Space]) (Plus () [Space])- (*) a = BinOp () (a & trailingWhitespace .~ [Space]) (Multiply () [Space])- (-) a = BinOp () (a & trailingWhitespace .~ [Space]) (Minus () [Space])+ (+) a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (Plus (Ann ()) [Space])+ (*) a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (Multiply (Ann ()) [Space])+ (-) a = BinOp (Ann ()) (a & trailingWhitespace .~ [Space]) (Minus (Ann ()) [Space]) signum = undefined abs = undefined -instance Plated (Expr '[] a) where; plate = gplate+instance Plated (Expr '[] a) where+ plate fun e =+ case e of+ Unit{} -> pure e+ Lambda a b c d e ->+ (\c' -> Lambda a b c' d) <$>+ (traverse.paramExpr) fun c <*>+ fun e+ Yield a b c ->+ Yield a b <$> traverse fun c+ YieldFrom a b c d ->+ YieldFrom a b c <$> fun d+ Ternary a b c d e f ->+ (\b' d' -> Ternary a b' c d' e) <$>+ fun b <*>+ fun d <*>+ fun f+ None{} -> pure e+ Ellipsis{} -> pure e+ List a b c d ->+ (\c' -> List a b c' d) <$>+ (traverse.traverse.listItemExpr) fun c+ ListComp a b c d ->+ (\c' -> ListComp a b c' d) <$>+ compExpr fun c+ Deref a b c d ->+ (\b' -> Deref a b' c d) <$>+ fun b+ Subscript a b c d e ->+ (\b' d' -> Subscript a b' c d' e) <$>+ fun b <*>+ (traverse.subscriptExpr) fun d+ Call a b c d e ->+ (\b' d' -> Call a b' c d' e) <$>+ fun b <*>+ (traverse.traverse.argExpr) fun d+ BinOp a b c d ->+ (\b' -> BinOp a b' c) <$>+ fun b <*>+ fun d+ UnOp a b c ->+ UnOp a b <$> fun c+ Parens a b c d ->+ (\c' -> Parens a b c' d) <$>+ fun c+ Ident{} -> pure e+ Int{} -> pure e+ Float{} -> pure e+ Imag{} -> pure e+ Bool{} -> pure e+ String{} -> pure e+ Not a b c -> Not a b <$> fun c+ Tuple a b c d ->+ (\b' -> Tuple a b' c) <$>+ tupleItemExpr fun b <*>+ (traverse.traverse.tupleItemExpr) fun d+ DictComp a b c d ->+ (\c' -> DictComp a b c' d) <$>+ dictCompExpr fun c+ Dict a b c d ->+ (\c' -> Dict a b c' d) <$>+ (traverse.traverse.dictItemExpr) fun c+ SetComp a b c d ->+ (\c' -> SetComp a b c' d) <$>+ setCompExpr fun c+ Set a b c d ->+ (\c' -> Set a b c' d) <$>+ (traverse.setItemExpr) fun c+ Generator a b -> Generator a <$> compExpr fun b+ Await a b c -> Await a b <$> fun c+ where+ paramExpr fun' p =+ case p of+ PositionalParam a b c ->+ PositionalParam a b <$>+ (traverse._2) fun' c+ KeywordParam a b c d e ->+ (\c' -> KeywordParam a b c' d) <$>+ (traverse._2) fun' c <*>+ fun' e+ UnnamedStarParam{} -> pure p+ StarParam a b c d ->+ StarParam a b c <$> (traverse._2) fun' d+ DoubleStarParam a b c d ->+ DoubleStarParam a b c <$> (traverse._2) fun' d++ listItemExpr fun' li =+ case li of+ ListItem a b -> ListItem a <$> fun' b+ ListUnpack a b c d -> ListUnpack a b c <$> fun' d++ tupleItemExpr fun' ti =+ case ti of+ TupleItem a b -> TupleItem a <$> fun' b+ TupleUnpack a b c d -> TupleUnpack a b c <$> fun' d++ setItemExpr fun' si =+ case si of+ SetItem a b -> SetItem a <$> fun' b+ SetUnpack a b c d -> SetUnpack a b c <$> fun' d++ dictItemExpr fun' di =+ case di of+ DictItem a b c d ->+ (\b' -> DictItem a b' c) <$>+ fun' b <*>+ fun' d+ DictUnpack a b c -> DictUnpack a b <$> fun' c++ compIfExpr fun' (CompIf a b c) = CompIf a b <$> fun' c++ compForExpr fun' (CompFor a b c d e) =+ (\c' -> CompFor a b c' d) <$>+ fun' c <*>+ fun' e++ compExpr fun' (Comprehension a b c d) =+ Comprehension a <$>+ fun' b <*>+ compForExpr fun' c <*>+ traverse (bitraverse (compForExpr fun') (compIfExpr fun')) d++ dictCompExpr fun' (Comprehension a b c d) =+ Comprehension a <$>+ dictItemExpr fun' b <*>+ compForExpr fun' c <*>+ traverse (bitraverse (compForExpr fun') (compIfExpr fun')) d++ setCompExpr fun' (Comprehension a b c d) =+ Comprehension a <$>+ setItemExpr fun' b <*>+ compForExpr fun' c <*>+ traverse (bitraverse (compForExpr fun') (compIfExpr fun')) d++ subscriptExpr fun' ss =+ case ss of+ SubscriptExpr a -> SubscriptExpr <$> fun' a+ SubscriptSlice a b c d ->+ (\a' -> SubscriptSlice a' b) <$>+ traverse fun' a <*>+ traverse fun' c <*>+ (traverse._2.traverse) fun' d++ argExpr fun' arg =+ case arg of+ PositionalArg a b -> PositionalArg a <$> fun' b+ KeywordArg a b c d -> KeywordArg a b c <$> fun' d+ StarArg a b c -> StarArg a b <$> fun' c+ DoubleStarArg a b c -> DoubleStarArg a b <$> fun' c instance HasExprs Expr where _Exprs = id
src/Language/Python/Syntax/Ident.hs view
@@ -1,6 +1,7 @@ {-# language DataKinds, KindSignatures #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language FlexibleInstances #-}-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-| Module : Language.Python.Syntax.Ident@@ -23,11 +24,14 @@ ) where -import Control.Lens.Lens (Lens, lens)+import Control.Lens.Lens (Lens, Lens', lens) import Data.Char (isDigit, isLetter)+import Data.Generics.Product.Typed (typed) import Data.String (IsString(..))+import GHC.Generics (Generic) import Language.Python.Optics.Validated (Validated)+import Language.Python.Syntax.Ann import Language.Python.Syntax.Raw import Language.Python.Syntax.Whitespace @@ -39,11 +43,15 @@ -- See <https://docs.python.org/3.5/reference/lexical_analysis.html#identifiers> data Ident (v :: [*]) a = MkIdent- { _identAnn :: a+ { _identAnn :: Ann a , _identValue :: String , _identWhitespace :: [Whitespace]- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (Ident v) where+ annot :: forall a. Lens' (Ident v a) (Ann a)+ annot = typed @(Ann a)+ -- | Determine whether this character could start a valid identifier isIdentifierStart :: Char -> Bool isIdentifierStart = do@@ -59,13 +67,13 @@ pure $ a || b instance IsString (Raw Ident) where- fromString s = MkIdent () s []+ fromString s = MkIdent (Ann ()) s [] identValue :: Lens (Ident v a) (Ident '[] a) String String identValue = lens _identValue (\s a -> s { _identValue = a }) identAnn :: Lens (Ident v a) (Ident v a) a a-identAnn = lens _identAnn (\s a -> s { _identAnn = a })+identAnn = annot_ identWhitespace :: Lens (Ident v a) (Ident v a) [Whitespace] [Whitespace] identWhitespace = lens _identWhitespace (\s ws -> s { _identWhitespace = ws })
src/Language/Python/Syntax/Import.hs view
@@ -1,5 +1,6 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language DataKinds #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language LambdaCase #-} {-|@@ -25,15 +26,19 @@ ) where -import Control.Lens.Getter ((^.), getting)+import Control.Lens.Getter ((^.), getting, to) import Control.Lens.Lens (Lens, Lens', lens) import Control.Lens.Prism (_Just) import Control.Lens.Setter ((.~)) import Control.Lens.Tuple (_2) import Data.Function ((&)) import Data.List.NonEmpty (NonEmpty)+import Data.Generics.Product.Typed (typed)+import GHC.Generics (Generic)+import Unsafe.Coerce (unsafeCoerce) import Language.Python.Optics.Validated+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Ident import Language.Python.Syntax.Whitespace@@ -49,29 +54,35 @@ -- @from a import (b as c, d as e)@ data ImportAs e v a = ImportAs- { _importAsAnn :: a- , _importAsName :: e a+ { _importAsAnn :: Ann a+ , _importAsName :: e v a , _importAsQual :: Maybe (NonEmpty Whitespace, Ident v a) }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -instance Validated (ImportAs e)+instance HasAnn (ImportAs e v) where+ annot :: forall a. Lens' (ImportAs e v a) (Ann a)+ annot = typed @(Ann a) +instance Validated e => Validated (ImportAs e) where+ unvalidated = to unsafeCoerce+ importAsAnn :: Lens' (ImportAs e v a) a-importAsAnn = lens _importAsAnn (\s a -> s { _importAsAnn = a })+importAsAnn = annot_ -importAsName :: Lens (ImportAs e v a) (ImportAs e' '[] a) (e a) (e' a)+importAsName :: Validated e => Lens (ImportAs e v a) (ImportAs e' '[] a) (e v a) (e' '[] a) importAsName = lens _importAsName (\s a -> (s ^. unvalidated) { _importAsName = a }) importAsQual- :: Lens+ :: Validated e+ => Lens (ImportAs e v a) (ImportAs e '[] a) (Maybe (NonEmpty Whitespace, Ident v a)) (Maybe (NonEmpty Whitespace, Ident '[] a)) importAsQual = lens _importAsQual (\s a -> (s ^. unvalidated) { _importAsQual = a }) -instance HasTrailingWhitespace (e a) => HasTrailingWhitespace (ImportAs e v a) where+instance HasTrailingWhitespace (e v a) => HasTrailingWhitespace (ImportAs e v a) where trailingWhitespace = lens (\(ImportAs _ a b) ->@@ -85,19 +96,23 @@ -- | The targets of a @from ... import ...@ statement data ImportTargets v a -- | @from x import *@- = ImportAll a [Whitespace]+ = ImportAll (Ann a) [Whitespace] -- | @from x import a, b, c@- | ImportSome a (CommaSep1 (ImportAs (Ident v) v a))+ | ImportSome (Ann a) (CommaSep1 (ImportAs Ident v a)) -- | @from x import (a, b, c)@ | ImportSomeParens- a+ (Ann a) -- ( spaces [Whitespace] -- imports as- (CommaSep1' (ImportAs (Ident v) v a))+ (CommaSep1' (ImportAs Ident v a)) -- ) spaces [Whitespace]- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic)++instance HasAnn (ImportTargets v) where+ annot :: forall a. Lens' (ImportTargets v a) (Ann a)+ annot = typed @(Ann a) instance HasTrailingWhitespace (ImportTargets v a) where trailingWhitespace =
src/Language/Python/Syntax/Module.hs view
@@ -1,4 +1,4 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-| Module : Language.Python.Syntax.Module@@ -14,6 +14,9 @@ ) where +import GHC.Generics (Generic)++import Language.Python.Syntax.Expr import Language.Python.Syntax.Statement import Language.Python.Syntax.Whitespace @@ -24,7 +27,7 @@ | ModuleBlankFinal (Blank a) | ModuleBlank (Blank a) Newline (Module v a) | ModuleStatement (Statement v a) (Module v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) instance HasStatements Module where _Statements f = go@@ -33,3 +36,6 @@ go (ModuleBlankFinal a) = pure $ ModuleBlankFinal a go (ModuleBlank a b c) = ModuleBlank a b <$> go c go (ModuleStatement a b) = ModuleStatement <$> f a <*> go b++instance HasExprs Module where+ _Exprs = _Statements._Exprs
src/Language/Python/Syntax/ModuleNames.hs view
@@ -1,5 +1,6 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language DataKinds, FlexibleInstances, MultiParamTypeClasses #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language LambdaCase #-} {-|@@ -16,23 +17,26 @@ -} module Language.Python.Syntax.ModuleNames- ( ModuleName (..)- , RelativeModuleName (..)+ ( ModuleName(..)+ , RelativeModuleName(..) , makeModuleName- , _moduleNameAnn ) where import Control.Lens.Cons (_last) import Control.Lens.Fold ((^?!)) import Control.Lens.Getter ((^.))-import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens) import Control.Lens.Setter ((.~)) import Data.Coerce (coerce) import Data.Function ((&))+import Data.Generics.Product.Typed (typed) import Data.List.NonEmpty (NonEmpty(..))+import GHC.Generics (Generic)+ import qualified Data.List.NonEmpty as NonEmpty +import Language.Python.Syntax.Ann import Language.Python.Syntax.Ident import Language.Python.Syntax.Punctuation import Language.Python.Syntax.Whitespace@@ -45,20 +49,24 @@ -- --See <https://docs.python.org/3.5/tutorial/modules.html#intra-package-references> data RelativeModuleName v a- = RelativeWithName [Dot] (ModuleName v a)- | Relative (NonEmpty Dot)- deriving (Eq, Show, Functor, Foldable, Traversable)+ = RelativeWithName (Ann a) [Dot] (ModuleName v a)+ | Relative (Ann a) (NonEmpty Dot)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (RelativeModuleName v) where+ annot :: forall a. Lens' (RelativeModuleName v a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (RelativeModuleName v a) where trailingWhitespace = lens (\case- RelativeWithName _ mn -> mn ^. trailingWhitespace- Relative (a :| as) -> (a : as) ^?! _last.trailingWhitespace)+ RelativeWithName _ _ mn -> mn ^. trailingWhitespace+ Relative _ (a :| as) -> (a : as) ^?! _last.trailingWhitespace) (\a ws -> case a of- RelativeWithName x mn -> RelativeWithName x (mn & trailingWhitespace .~ ws)- Relative (a :| as) ->- Relative .+ RelativeWithName ann x mn -> RelativeWithName ann x (mn & trailingWhitespace .~ ws)+ Relative ann (a :| as) ->+ Relative ann . NonEmpty.fromList $ (a : as) & _last.trailingWhitespace .~ ws) @@ -69,14 +77,13 @@ -- -- @a.b@ data ModuleName v a- = ModuleNameOne a (Ident v a)- | ModuleNameMany a (Ident v a) Dot (ModuleName v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ = ModuleNameOne (Ann a) (Ident v a)+ | ModuleNameMany (Ann a) (Ident v a) Dot (ModuleName v a)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) --- | Get the annotation from a 'ModuleName'-_moduleNameAnn :: ModuleName v a -> a-_moduleNameAnn (ModuleNameOne a _) = a-_moduleNameAnn (ModuleNameMany a _ _ _) = a+instance HasAnn (ModuleName v) where+ annot :: forall a. Lens' (ModuleName v a) (Ann a)+ annot = typed @(Ann a) -- | Convenience constructor for 'ModuleName' makeModuleName :: Ident v a -> [([Whitespace], Ident v a)] -> ModuleName v a
src/Language/Python/Syntax/Numbers.hs view
@@ -1,4 +1,5 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language LambdaCase #-} {-# language TemplateHaskell #-} @@ -30,6 +31,7 @@ ) where +import Control.Lens.Lens (Lens') import Control.Lens.Review ((#)) import Data.Deriving (deriveEq1, deriveOrd1) import Data.Digit.Binary (BinDigit)@@ -37,14 +39,18 @@ import Data.Digit.Octal (OctDigit) import Data.Digit.Decimal (DecDigit) import Data.Digit.Hexadecimal.MixedCase (HeXDigit)+import Data.Generics.Product.Typed (typed) import Data.List.NonEmpty (NonEmpty) import Data.Semigroup ((<>)) import Data.Text (Text) import Data.These (These(..))+import GHC.Generics (Generic) import qualified Data.List.NonEmpty as NonEmpty import qualified Data.Text as Text +import Language.Python.Syntax.Ann+ -- | An integer literal value. -- -- @5@ is an integer literal.@@ -59,14 +65,14 @@ -- -- @1234@ = IntLiteralDec- { _intLiteralAnn :: a+ { _intLiteralAnn :: Ann a , _unsafeIntLiteralDecValue :: NonEmpty DecDigit } -- | Binary -- -- @0b10110@ | IntLiteralBin- { _intLiteralAnn :: a+ { _intLiteralAnn :: Ann a , _unsafeIntLiteralBinUppercase :: Bool , _unsafeIntLiteralBinValue :: NonEmpty BinDigit }@@ -74,7 +80,7 @@ -- -- @0o1367@ | IntLiteralOct- { _intLiteralAnn :: a+ { _intLiteralAnn :: Ann a , _unsafeIntLiteralOctUppercase :: Bool , _unsafeIntLiteralOctValue :: NonEmpty OctDigit }@@ -82,26 +88,30 @@ -- -- @0x18B4f@ | IntLiteralHex- { _intLiteralAnn :: a+ { _intLiteralAnn :: Ann a , _unsafeIntLiteralHexUppercase :: Bool , _unsafeIntLiteralHexValue :: NonEmpty HeXDigit }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) deriveEq1 ''IntLiteral deriveOrd1 ''IntLiteral +instance HasAnn IntLiteral where+ annot :: forall a. Lens' (IntLiteral a) (Ann a)+ annot = typed @(Ann a)+ -- | Positive or negative, as in @-7@-data Sign = Pos | Neg deriving (Eq, Ord, Show)+data Sign = Pos | Neg deriving (Eq, Ord, Show, Generic) -- | When a floating point literal is in scientific notation, it includes the character -- @e@, which can be lower or upper case.-data E = Ee | EE deriving (Eq, Ord, Show)+data E = Ee | EE deriving (Eq, Ord, Show, Generic) -- | The exponent of a floating point literal. -- -- An @e@, followed by an optional 'Sign', followed by at least one digit. data FloatExponent = FloatExponent E (Maybe Sign) (NonEmpty DecDigit)- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | A literal floating point value. --@@ -119,7 +129,7 @@ -- -- @12.34e56@ = FloatLiteralFull- { _floatLiteralAnn :: a+ { _floatLiteralAnn :: Ann a , _floatLiteralFullLeft :: NonEmpty DecDigit , _floatLiteralFullRight :: Maybe (These (NonEmpty DecDigit) FloatExponent)@@ -130,7 +140,7 @@ -- -- @.12e34@ | FloatLiteralPoint- { _floatLiteralAnn :: a+ { _floatLiteralAnn :: Ann a -- . [0-9]+ , _floatLiteralPointRight :: NonEmpty DecDigit -- [ 'e' ['-' | '+'] [0-9]+ ]@@ -140,16 +150,20 @@ -- -- @12e34@ | FloatLiteralWhole- { _floatLiteralAnn :: a+ { _floatLiteralAnn :: Ann a -- [0-9]+ , _floatLiteralWholeRight :: NonEmpty DecDigit -- [ 'e' ['-' | '+'] [0-9]+ ] , _floatLiteralWholeExponent :: FloatExponent }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) deriveEq1 ''FloatLiteral deriveOrd1 ''FloatLiteral +instance HasAnn FloatLiteral where+ annot :: forall a. Lens' (FloatLiteral a) (Ann a)+ annot = typed @(Ann a)+ -- | Imaginary number literals -- -- See <https://docs.python.org/3.5/reference/lexical_analysis.html#imaginary-literals>@@ -158,7 +172,7 @@ -- -- @12j@ = ImagLiteralInt- { _imagLiteralAnn :: a+ { _imagLiteralAnn :: Ann a , _unsafeImagLiteralIntValue :: NonEmpty DecDigit , _imagLiteralUppercase :: Bool }@@ -170,13 +184,17 @@ -- -- @.3j@ | ImagLiteralFloat- { _imagLiteralAnn :: a+ { _imagLiteralAnn :: Ann a , _unsafeImagLiteralFloatValue :: FloatLiteral a , _imagLiteralUppercase :: Bool }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) deriveEq1 ''ImagLiteral deriveOrd1 ''ImagLiteral++instance HasAnn ImagLiteral where+ annot :: forall a. Lens' (ImagLiteral a) (Ann a)+ annot = typed @(Ann a) showIntLiteral :: IntLiteral a -> Text showIntLiteral (IntLiteralDec _ n) =
src/Language/Python/Syntax/Operator/Binary.hs view
@@ -1,6 +1,7 @@+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language LambdaCase #-} {-# language MultiParamTypeClasses, FlexibleInstances #-}-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language TemplateHaskell #-} {-|@@ -19,69 +20,74 @@ module Language.Python.Syntax.Operator.Binary where import Control.Lens.Getter ((^.))-import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens) import Control.Lens.TH (makeLenses) import Data.Functor (($>))+import Data.Generics.Product.Typed (typed) import Data.Semigroup ((<>))+import GHC.Generics (Generic) +import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace -- | A Python binary operator, such as @+@, along with its trailing 'Whitespace'------ The type variable allows annotations, but it can simply be made @()@ for an unannotated @BinOp@. data BinOp a -- | @a is b@- = Is a [Whitespace]+ = Is (Ann a) [Whitespace] -- | @a is not b@- | IsNot a [Whitespace] [Whitespace]+ | IsNot (Ann a) [Whitespace] [Whitespace] -- | @a in b@- | In a [Whitespace]+ | In (Ann a) [Whitespace] -- | @a not in b@- | NotIn a [Whitespace] [Whitespace]+ | NotIn (Ann a) [Whitespace] [Whitespace] -- | @a - b@- | Minus a [Whitespace]+ | Minus (Ann a) [Whitespace] -- | @a ** b@- | Exp a [Whitespace]+ | Exp (Ann a) [Whitespace] -- | @a and b@- | BoolAnd a [Whitespace]+ | BoolAnd (Ann a) [Whitespace] -- | @a or b@- | BoolOr a [Whitespace]+ | BoolOr (Ann a) [Whitespace] -- | @a == b@- | Eq a [Whitespace]+ | Eq (Ann a) [Whitespace] -- | @a < b@- | Lt a [Whitespace]+ | Lt (Ann a) [Whitespace] -- | @a <= b@- | LtEq a [Whitespace]+ | LtEq (Ann a) [Whitespace] -- | @a > b@- | Gt a [Whitespace]+ | Gt (Ann a) [Whitespace] -- | @a >= b@- | GtEq a [Whitespace]+ | GtEq (Ann a) [Whitespace] -- | @a != b@- | NotEq a [Whitespace]+ | NotEq (Ann a) [Whitespace] -- | @a * b@- | Multiply a [Whitespace]+ | Multiply (Ann a) [Whitespace] -- | @a / b@- | Divide a [Whitespace]+ | Divide (Ann a) [Whitespace] -- | @a // b@- | FloorDivide a [Whitespace]+ | FloorDivide (Ann a) [Whitespace] -- | @a % b@- | Percent a [Whitespace]+ | Percent (Ann a) [Whitespace] -- | @a + b@- | Plus a [Whitespace]+ | Plus (Ann a) [Whitespace] -- | @a | b@- | BitOr a [Whitespace]+ | BitOr (Ann a) [Whitespace] -- | @a ^ b@- | BitXor a [Whitespace]+ | BitXor (Ann a) [Whitespace] -- | @a & b@- | BitAnd a [Whitespace]+ | BitAnd (Ann a) [Whitespace] -- | @a << b@- | ShiftLeft a [Whitespace]+ | ShiftLeft (Ann a) [Whitespace] -- | @a >> b@- | ShiftRight a [Whitespace]+ | ShiftRight (Ann a) [Whitespace] -- | @a @ b@- | At a [Whitespace]- deriving (Eq, Show, Functor, Foldable, Traversable)+ | At (Ann a) [Whitespace]+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn BinOp where+ annot :: forall a. Lens' (BinOp a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (BinOp a) where trailingWhitespace = lens@@ -193,8 +199,8 @@ , entry Exp 30 R ] where- entry a = OpEntry (a () [])- entry1 a = OpEntry (a () [] [])+ entry a = OpEntry (a (Ann ()) [])+ entry1 a = OpEntry (a (Ann ()) [] []) -- | Compare two 'BinOp's to determine whether they represent the same operator, ignoring annotations and trailing whitespace. sameOperator :: BinOp a -> BinOp a' -> Bool
src/Language/Python/Syntax/Operator/Unary.hs view
@@ -1,4 +1,5 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language LambdaCase #-} {-|@@ -14,19 +15,27 @@ module Language.Python.Syntax.Operator.Unary where -import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens)+import Data.Generics.Product.Typed (typed)+import GHC.Generics (Generic)++import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace -- | An 'UnOp' is a unary operator in Python, such as @-@ for negation. -- An operator is stored with an annotation and its trailing whitespace. data UnOp a -- | @-a@- = Negate a [Whitespace]+ = Negate (Ann a) [Whitespace] -- | @+a@- | Positive a [Whitespace]+ | Positive (Ann a) [Whitespace] -- | @~a@- | Complement a [Whitespace]- deriving (Eq, Show, Functor, Foldable, Traversable)+ | Complement (Ann a) [Whitespace]+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic)++instance HasAnn UnOp where+ annot :: forall a. Lens' (UnOp a) (Ann a)+ annot = typed @(Ann a) instance HasTrailingWhitespace (UnOp a) where trailingWhitespace =
src/Language/Python/Syntax/Punctuation.hs view
@@ -1,4 +1,6 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-}+ {-| Module : Language.Python.Syntax.Punctuation Copyright : (C) CSIRO 2017-2019@@ -12,12 +14,15 @@ module Language.Python.Syntax.Punctuation where -import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens)+import Data.Generics.Product.Typed (typed)+import GHC.Generics (Generic) +import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace -- | A period character, possibly followed by some whitespace.-data Dot = MkDot [Whitespace]+newtype Dot = MkDot [Whitespace] deriving (Eq, Show) instance HasTrailingWhitespace Dot where@@ -26,21 +31,25 @@ -- | The venerable comma separator newtype Comma = MkComma [Whitespace]- deriving (Eq, Show)+ deriving (Eq, Show, Generic) instance HasTrailingWhitespace Comma where trailingWhitespace = lens (\(MkComma ws) -> ws) (\_ ws -> MkComma ws) newtype Colon = MkColon [Whitespace]- deriving (Eq, Show)+ deriving (Eq, Show, Generic) instance HasTrailingWhitespace Colon where trailingWhitespace = lens (\(MkColon ws) -> ws) (\_ ws -> MkColon ws) -data Semicolon a = MkSemicolon a [Whitespace]- deriving (Eq, Show, Functor, Foldable, Traversable)+data Semicolon a = MkSemicolon (Ann a) [Whitespace]+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic)++instance HasAnn Semicolon where+ annot :: forall a. Lens' (Semicolon a) (Ann a)+ annot = typed @(Ann a) instance HasTrailingWhitespace (Semicolon a) where trailingWhitespace =
src/Language/Python/Syntax/Statement.hs view
@@ -2,6 +2,7 @@ {-# language DataKinds, KindSignatures #-} {-# language MultiParamTypeClasses, FlexibleInstances #-} {-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language TypeFamilies #-} {-# language LambdaCase #-} {-# language UndecidableInstances #-}@@ -56,6 +57,7 @@ import Control.Lens.Cons (_last) import Control.Lens.Fold (foldMapOf, folded) import Control.Lens.Getter ((^.), to, view)+import Control.Lens.Lens (Lens') import Control.Lens.Plated (Plated(..), gplate) import Control.Lens.Prism (_Right) import Control.Lens.Setter ((.~), over, mapped)@@ -66,6 +68,7 @@ import Data.Bifunctor (bimap) import Data.Bitraversable (bitraverse) import Data.Coerce (coerce)+import Data.Generics.Product.Typed (typed) import Data.List.NonEmpty (NonEmpty) import Data.Maybe (isNothing) import Data.Monoid ((<>))@@ -75,6 +78,7 @@ import qualified Data.List.NonEmpty as NonEmpty import Language.Python.Optics.Validated+import Language.Python.Syntax.Ann import Language.Python.Syntax.AugAssign import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Comment@@ -107,7 +111,7 @@ { _blockBlankLines :: [(Blank a, Newline)] -- ^ Blank lines at the beginning of the block , _blockHead :: Statement v a -- ^ The first statement of the block , _blockTail :: [Either (Blank a, Newline) (Statement v a)] -- ^ The remaining items of the block, which may be statements or blank lines- } deriving (Eq, Show)+ } deriving (Eq, Show, Generic) instance Functor (Block v) where fmap f (Block a b c) =@@ -195,7 +199,7 @@ (Maybe (Semicolon a)) (Maybe (Comment a)) (Maybe Newline)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) -- | A 'Statement' is either a 'SmallStatement' or a 'CompoundStatement' --@@ -203,8 +207,11 @@ data Statement (v :: [*]) a = SmallStatement (Indents a) (SmallStatement v a) | CompoundStatement (CompoundStatement v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasStatements Statement where+ _Statements = id+ instance HasExprs SmallStatement where _Exprs f (MkSmallStatement s ss a b c) = MkSmallStatement <$>@@ -267,55 +274,55 @@ -- | @\'return\' \<spaces\> [\<expr\>]@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-return-statement- = Return a [Whitespace] (Maybe (Expr v a))+ = Return (Ann a) [Whitespace] (Maybe (Expr v a)) -- | @\<expr\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#expression-statements- | Expr a (Expr v a)+ | Expr (Ann a) (Expr v a) -- | @\<expr\> (\'=\' \<spaces\> \<expr\>)+@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#assignment-statements- | Assign a (Expr v a) (NonEmpty (Equals, Expr v a))+ | Assign (Ann a) (Expr v a) (NonEmpty (Equals, Expr v a)) -- | @\<expr\> \<augassign\> \<expr\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#augmented-assignment-statements- | AugAssign a (Expr v a) (AugAssign a) (Expr v a)+ | AugAssign (Ann a) (Expr v a) (AugAssign a) (Expr v a) -- | @\'pass\' \<spaces\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-pass-statement- | Pass a [Whitespace]+ | Pass (Ann a) [Whitespace] -- | @\'break\' \<spaces\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-break-statement- | Break a [Whitespace]+ | Break (Ann a) [Whitespace] -- | @\'continue\' \<spaces\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-continue-statement- | Continue a [Whitespace]+ | Continue (Ann a) [Whitespace] -- | @\'global\' \<spaces\> \<idents\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-global-statement- | Global a (NonEmpty Whitespace) (CommaSep1 (Ident v a))+ | Global (Ann a) (NonEmpty Whitespace) (CommaSep1 (Ident v a)) -- | @\'nonlocal\' \<spaces\> \<idents\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-nonlocal-statement- | Nonlocal a (NonEmpty Whitespace) (CommaSep1 (Ident v a))+ | Nonlocal (Ann a) (NonEmpty Whitespace) (CommaSep1 (Ident v a)) -- | @\'del\' \<spaces\> \<exprs\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-del-statement- | Del a [Whitespace] (CommaSep1' (Expr v a))+ | Del (Ann a) [Whitespace] (CommaSep1' (Expr v a)) -- | @\'import\' \<spaces\> \<modulenames\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-import-statement | Import- a+ (Ann a) (NonEmpty Whitespace)- (CommaSep1 (ImportAs (ModuleName v) v a))+ (CommaSep1 (ImportAs ModuleName v a)) -- | @\'from\' \<spaces\> \<relative_module_name\> \'import\' \<spaces\> \<import_targets\>@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-import-statement | From- a+ (Ann a) [Whitespace] (RelativeModuleName v a) [Whitespace]@@ -323,18 +330,22 @@ -- | @\'raise\' \<spaces\> [\<expr\> [\'as\' \<spaces\> \<expr\>]]@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-raise-statement- | Raise a+ | Raise (Ann a) [Whitespace] (Maybe (Expr v a, Maybe ([Whitespace], Expr v a))) -- | @\'assert\' \<spaces\> \<expr\> [\',\' \<spaces\> \<expr\>]@ -- -- https://docs.python.org/3.5/reference/simple_stmts.html#the-assert-statement- | Assert a+ | Assert (Ann a) [Whitespace] (Expr v a) (Maybe (Comma, Expr v a)) deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (SimpleStatement v) where+ annot :: forall a. Lens' (SimpleStatement v a) (Ann a)+ annot = typed @(Ann a)+ instance Plated (SimpleStatement '[] a) where; plate = gplate instance HasExprs SimpleStatement where@@ -360,33 +371,45 @@ -- | See <https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement> data ExceptAs (v :: [*]) a = ExceptAs- { _exceptAsAnn :: a+ { _exceptAsAnn :: Ann a , _exceptAsExpr :: Expr v a -- ^ @\<expr\>@ , _exceptAsName :: Maybe ([Whitespace], Ident v a) -- ^ @[\'as\' \<ident\>]@ }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (ExceptAs v) where+ annot :: forall a. Lens' (ExceptAs v a) (Ann a)+ annot = typed @(Ann a)+ -- | A compound statement consists of one or more clauses. -- A clause consists of a header and a suite. data Suite (v :: [*]) a -- ':' <space> smallStatement- = SuiteOne a Colon (SmallStatement v a)- | SuiteMany a+ = SuiteOne (Ann a) Colon (SmallStatement v a)+ | SuiteMany (Ann a) -- ':' <spaces> [comment] <newline> Colon (Maybe (Comment a)) Newline -- <block> (Block v a)- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (Suite v) where+ annot :: forall a. Lens' (Suite v a) (Ann a)+ annot = typed @(Ann a)+ -- | See <https://docs.python.org/3.5/reference/compound_stmts.html#the-with-statement> data WithItem (v :: [*]) a = WithItem- { _withItemAnn :: a+ { _withItemAnn :: Ann a , _withItemValue :: Expr v a -- ^ @\<expr\>@ , _withItemBinder :: Maybe ([Whitespace], Expr v a) -- ^ @[\'as\' \<spaces\> \<expr\>]@ }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (WithItem v) where+ annot :: forall a. Lens' (WithItem v a) (Ann a)+ annot = typed @(Ann a)+ -- | Decorators on function definitions -- -- <https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions>@@ -394,7 +417,7 @@ -- <https://docs.python.org/3.5/glossary.html#term-decorator> data Decorator (v :: [*]) a = Decorator- { _decoratorAnn :: a+ { _decoratorAnn :: Ann a , _decoratorIndents :: Indents a -- ^ Preceding indentation , _decoratorAt :: At -- ^ @\'\@\' \<spaces\>@ , _decoratorExpr :: Expr v a -- ^ @\<expr\>@@@ -402,15 +425,19 @@ , _decoratorNewline :: Newline -- ^ Trailing newline , _decoratorBlankLines :: [(Blank a, Newline)] -- ^ Trailing blank lines }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (Decorator v) where+ annot :: forall a. Lens' (Decorator v a) (Ann a)+ annot = typed @(Ann a)+ -- | See <https://docs.python.org/3.5/reference/compound_stmts.html> data CompoundStatement (v :: [*]) a -- | https://docs.python.org/3.5/reference/compound_stmts.html#function-definitions -- -- https://docs.python.org/3.5/reference/compound_stmts.html#coroutine-function-definition = Fundef- { _csAnn :: a+ { _csAnn :: Ann a , _unsafeCsFundefDecorators :: [Decorator v a] -- ^ Preceding 'Decorator's , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsFundefAsync :: Maybe (NonEmpty Whitespace) -- ^ @[\'async\' \<spaces\>]@@@ -424,7 +451,7 @@ } -- | https://docs.python.org/3.5/reference/compound_stmts.html#the-if-statement | If- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsIfIf :: [Whitespace] -- ^ @\'if\' \<spaces\>@ , _unsafeCsIfCond :: Expr v a -- ^ @\<expr\>@@@ -434,7 +461,7 @@ } -- | https://docs.python.org/3.5/reference/compound_stmts.html#the-while-statement | While- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsWhileWhile :: [Whitespace] -- ^ @\'while\' \<spaces\>@ , _unsafeCsWhileCond :: Expr v a -- ^ @\<expr\>@@@ -444,7 +471,7 @@ } -- | https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement | TryExcept- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsTryExceptTry :: [Whitespace] -- ^ @\'try\' \<spaces\>@ , _unsafeCsTryExceptBody :: Suite v a -- ^ @\<suite\>@@@ -454,7 +481,7 @@ } -- | https://docs.python.org/3.5/reference/compound_stmts.html#the-try-statement | TryFinally- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsTryFinallyTry :: [Whitespace] -- ^ @\'try\' \<spaces\>@ , _unsafeCsTryFinallyTryBody :: Suite v a -- ^ @\<suite\>@@@ -466,7 +493,7 @@ -- -- https://docs.python.org/3.5/reference/compound_stmts.html#the-async-for-statement | For- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsForAsync :: Maybe (NonEmpty Whitespace) -- ^ @[\'async\' \<spaces\>]@ , _unsafeCsForFor :: [Whitespace] -- ^ @\'for\' \<spaces\>@@@ -478,7 +505,7 @@ } -- | https://docs.python.org/3.5/reference/compound_stmts.html#class-definitions | ClassDef- { _csAnn :: a+ { _csAnn :: Ann a , _unsafeCsClassDefDecorators :: [Decorator v a] -- ^ Preceding 'Decorator's , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsClassDefClass :: NonEmpty Whitespace -- ^ @\'class\' \<spaces\>@@@ -490,15 +517,19 @@ -- -- https://docs.python.org/3.5/reference/compound_stmts.html#the-async-with-statement | With- { _csAnn :: a+ { _csAnn :: Ann a , _csIndents :: Indents a -- ^ Preceding indentation , _unsafeCsWithAsync :: Maybe (NonEmpty Whitespace) -- ^ @[\'async\' \<spaces\>]@ , _unsafeCsWithWith :: [Whitespace] -- ^ @\'with\' \<spaces\>@ , _unsafeCsWithItems :: CommaSep1 (WithItem v a) -- ^ @\<with_items\>@ , _unsafeCsWithBody :: Suite v a -- ^ @\<suite\>@ }- deriving (Eq, Show, Functor, Foldable, Traversable)+ deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn (CompoundStatement v) where+ annot :: forall a. Lens' (CompoundStatement v a) (Ann a)+ annot = typed @(Ann a)+ instance HasExprs ExceptAs where _Exprs f (ExceptAs ann e a) = ExceptAs ann <$> f e <*> pure (coerce a) @@ -552,8 +583,8 @@ _Exprs fun (TryFinally idnt a b c d e f) = TryFinally idnt a b <$> _Exprs fun c <*> pure d <*> pure e <*> _Exprs fun f- _Exprs fun (For idnt a asyncWs b c d e f g) =- For idnt a asyncWs b <$> fun c <*> pure d <*> traverse fun e <*>+ _Exprs fun (For a idnt asyncWs b c d e f g) =+ For a idnt asyncWs b <$> fun c <*> pure d <*> traverse fun e <*> _Exprs fun f <*> (traverse._3._Exprs) fun g _Exprs fun (ClassDef a decos idnt b c d e) =
src/Language/Python/Syntax/Strings.hs view
@@ -1,4 +1,5 @@-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language OverloadedStrings #-} {-# language LambdaCase #-} {-# language TemplateHaskell #-}@@ -48,13 +49,16 @@ ) where -import Control.Lens.Lens (lens)+import Control.Lens.Lens (Lens', lens) import Control.Lens.TH (makeLensesFor) import Data.Digit.Octal (OctDigit) import Data.Digit.Hexadecimal.MixedCase (HeXDigit(..))+import Data.Generics.Product.Typed (typed) import Data.Maybe (isJust) import Data.Text (Text)+import GHC.Generics (Generic) +import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace -- | Double or single quotation marks?@@ -68,7 +72,7 @@ data QuoteType = SingleQuote | DoubleQuote- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | Three pairs of quotations or one? --@@ -81,7 +85,7 @@ data StringType = ShortString | LongString- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | In Python 3.5, a prefix of @u@ or @U@ is allowed, but doesn't have any -- meaning. They exist for backwards compatibility with Python 2.@@ -90,19 +94,19 @@ data StringPrefix = Prefix_u | Prefix_U- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | Raw strings are prefixed with either @r@ or @R@. data RawStringPrefix = Prefix_r | Prefix_R- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | This prefix indicates it's a bytes literal rather than a string literal. data BytesPrefix = Prefix_b | Prefix_B- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | A string of raw bytes can be indicated by a number of prefixes data RawBytesPrefix@@ -114,7 +118,7 @@ | Prefix_rB | Prefix_Rb | Prefix_RB- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | Most types of 'StringLiteral' have prefixes. Plain old strings may have -- an optional prefix, but it is meaningless.@@ -131,7 +135,7 @@ -- trailing whitespace. data StringLiteral a = RawStringLiteral- { _stringLiteralAnn :: a+ { _stringLiteralAnn :: Ann a , _unsafeRawStringLiteralPrefix :: RawStringPrefix , _stringLiteralStringType :: StringType , _stringLiteralQuoteType :: QuoteType@@ -139,7 +143,7 @@ , _stringLiteralWhitespace :: [Whitespace] } | StringLiteral- { _stringLiteralAnn :: a+ { _stringLiteralAnn :: Ann a , _unsafeStringLiteralPrefix :: Maybe StringPrefix , _stringLiteralStringType :: StringType , _stringLiteralQuoteType :: QuoteType@@ -147,7 +151,7 @@ , _stringLiteralWhitespace :: [Whitespace] } | RawBytesLiteral- { _stringLiteralAnn :: a+ { _stringLiteralAnn :: Ann a , _unsafeRawBytesLiteralPrefix :: RawBytesPrefix , _stringLiteralStringType :: StringType , _stringLiteralQuoteType :: QuoteType@@ -155,15 +159,19 @@ , _stringLiteralWhitespace :: [Whitespace] } | BytesLiteral- { _stringLiteralAnn :: a+ { _stringLiteralAnn :: Ann a , _unsafeBytesLiteralPrefix :: BytesPrefix , _stringLiteralStringType :: StringType , _stringLiteralQuoteType :: QuoteType , _stringLiteralValue :: [PyChar] , _stringLiteralWhitespace :: [Whitespace] }- deriving (Eq, Ord, Show, Functor, Foldable, Traversable)+ deriving (Eq, Ord, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn StringLiteral where+ annot :: forall a. Lens' (StringLiteral a) (Ann a)+ annot = typed @(Ann a)+ instance HasTrailingWhitespace (StringLiteral a) where trailingWhitespace = lens@@ -229,7 +237,7 @@ | Char_esc_v -- | Any character | Char_lit Char- deriving (Eq, Ord, Show)+ deriving (Eq, Ord, Show, Generic) -- | Determine whether a 'PyChar' is an escape character or not. isEscape :: PyChar -> Bool
src/Language/Python/Syntax/Types.hs view
@@ -1,4 +1,6 @@ {-# language DataKinds #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-# language KindSignatures #-} {-# language TemplateHaskell #-} @@ -197,9 +199,13 @@ ) where +import Control.Lens.Lens (Lens') import Control.Lens.TH (makeLenses)+import Data.Generics.Product.Typed (typed) import Data.List.NonEmpty (NonEmpty)+import GHC.Generics (Generic) +import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep (Comma, CommaSep, CommaSep1, CommaSep1') import Language.Python.Syntax.Expr (Arg, Expr, ListItem, Param, TupleItem) import Language.Python.Syntax.Ident (Ident)@@ -209,7 +215,7 @@ data Fundef v a = MkFundef- { _fdAnn :: a+ { _fdAnn :: Ann a , _fdDecorators :: [Decorator v a] , _fdIndents :: Indents a , _fdAsync :: Maybe (NonEmpty Whitespace)@@ -220,96 +226,128 @@ , _fdRightParenSpaces :: [Whitespace] , _fdReturnType :: Maybe ([Whitespace], Expr v a) , _fdBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Fundef +instance HasAnn (Fundef v) where+ annot :: forall a. Lens' (Fundef v a) (Ann a)+ annot = typed @(Ann a)+ data Else v a = MkElse { _elseIndents :: Indents a , _elseElse :: [Whitespace] , _elseBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Else data While v a = MkWhile- { _whileAnn :: a+ { _whileAnn :: Ann a , _whileIndents :: Indents a , _whileWhile :: [Whitespace] , _whileCond :: Expr v a , _whileBody :: Suite v a , _whileElse :: Maybe (Else v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''While +instance HasAnn (While v) where+ annot :: forall a. Lens' (While v a) (Ann a)+ annot = typed @(Ann a)+ data KeywordParam v a = MkKeywordParam- { _kpAnn :: a+ { _kpAnn :: Ann a , _kpName :: Ident v a , _kpType :: Maybe (Colon, Expr v a) , _kpEquals :: [Whitespace] , _kpExpr :: Expr v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''KeywordParam +instance HasAnn (KeywordParam v) where+ annot :: forall a. Lens' (KeywordParam v a) (Ann a)+ annot = typed @(Ann a)+ data PositionalParam v a = MkPositionalParam- { _ppAnn :: a+ { _ppAnn :: Ann a , _ppName :: Ident v a , _ppType :: Maybe (Colon, Expr v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''PositionalParam +instance HasAnn (PositionalParam v) where+ annot :: forall a. Lens' (PositionalParam v a) (Ann a)+ annot = typed @(Ann a)+ data StarParam v a = MkStarParam- { _spAnn :: a+ { _spAnn :: Ann a , _spWhitespace :: [Whitespace] , _spName :: Ident v a , _spType :: Maybe (Colon, Expr v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''StarParam +instance HasAnn (StarParam v) where+ annot :: forall a. Lens' (StarParam v a) (Ann a)+ annot = typed @(Ann a)+ data UnnamedStarParam (v :: [*]) a = MkUnnamedStarParam- { _uspAnn :: a+ { _uspAnn :: Ann a , _uspWhitespace :: [Whitespace]- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''UnnamedStarParam +instance HasAnn (UnnamedStarParam v) where+ annot :: forall a. Lens' (UnnamedStarParam v a) (Ann a)+ annot = typed @(Ann a)+ data Call v a = MkCall- { _callAnn :: a+ { _callAnn :: Ann a , _callFunction :: Expr v a , _callLeftParen :: [Whitespace] , _callArguments :: Maybe (CommaSep1' (Arg v a)) , _callRightParen :: [Whitespace]- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Call +instance HasAnn (Call v) where+ annot :: forall a. Lens' (Call v a) (Ann a)+ annot = typed @(Ann a)+ data Elif v a = MkElif { _elifIndents :: Indents a , _elifElif :: [Whitespace] , _elifCond :: Expr v a , _elifBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Elif data If v a = MkIf- { _ifAnn :: a+ { _ifAnn :: Ann a , _ifIndents :: Indents a , _ifIf :: [Whitespace] , _ifCond :: Expr v a , _ifBody :: Suite v a , _ifElifs :: [Elif v a] , _ifElse :: Maybe (Else v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''If +instance HasAnn (If v) where+ annot :: forall a. Lens' (If v a) (Ann a)+ annot = typed @(Ann a)+ data For v a = MkFor- { _forAnn :: a+ { _forAnn :: Ann a , _forIndents :: Indents a , _forAsync :: Maybe (NonEmpty Whitespace) , _forFor :: [Whitespace]@@ -318,15 +356,19 @@ , _forCollection :: CommaSep1' (Expr v a) , _forBody :: Suite v a , _forElse :: Maybe (Else v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''For +instance HasAnn (For v) where+ annot :: forall a. Lens' (For v a) (Ann a)+ annot = typed @(Ann a)+ data Finally v a = MkFinally { _finallyIndents :: Indents a , _finallyFinally :: [Whitespace] , _finallyBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Finally data Except v a@@ -335,93 +377,129 @@ , _exceptExcept :: [Whitespace] , _exceptExceptAs :: Maybe (ExceptAs v a) , _exceptBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Except data TryExcept v a = MkTryExcept- { _teAnn :: a+ { _teAnn :: Ann a , _teIndents :: Indents a , _teTry :: [Whitespace] , _teBody :: Suite v a , _teExcepts :: NonEmpty (Except v a) , _teElse :: Maybe (Else v a) , _teFinally :: Maybe (Finally v a)- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''TryExcept +instance HasAnn (TryExcept v) where+ annot :: forall a. Lens' (TryExcept v a) (Ann a)+ annot = typed @(Ann a)+ data TryFinally v a = MkTryFinally- { _tfAnn :: a+ { _tfAnn :: Ann a , _tfIndents :: Indents a , _tfTry :: [Whitespace] , _tfBody :: Suite v a , _tfFinally :: Finally v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''TryFinally +instance HasAnn (TryFinally v) where+ annot :: forall a. Lens' (TryFinally v a) (Ann a)+ annot = typed @(Ann a)+ data ClassDef v a = MkClassDef- { _cdAnn :: a+ { _cdAnn :: Ann a , _cdDecorators :: [Decorator v a] , _cdIndents :: Indents a , _cdClass :: NonEmpty Whitespace , _cdName :: Ident v a , _cdArguments :: Maybe ([Whitespace], Maybe (CommaSep1' (Arg v a)), [Whitespace]) , _cdBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''ClassDef +instance HasAnn (ClassDef v) where+ annot :: forall a. Lens' (ClassDef v a) (Ann a)+ annot = typed @(Ann a)+ data With v a = MkWith- { _withAnn :: a+ { _withAnn :: Ann a , _withIndents :: Indents a , _withAsync :: Maybe (NonEmpty Whitespace) , _withWith :: [Whitespace] , _withItems :: CommaSep1 (WithItem v a) , _withBody :: Suite v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''With +instance HasAnn (With v) where+ annot :: forall a. Lens' (With v a) (Ann a)+ annot = typed @(Ann a)+ data Tuple v a = MkTuple- { _tupleAnn :: a+ { _tupleAnn :: Ann a , _tupleHead :: TupleItem v a , _tupleComma :: Comma , _tupleTail :: Maybe (CommaSep1' (TupleItem v a))- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''Tuple +instance HasAnn (Tuple v) where+ annot :: forall a. Lens' (Tuple v a) (Ann a)+ annot = typed @(Ann a)+ data List v a = MkList- { _listAnn :: a+ { _listAnn :: Ann a , _listWhitespaceLeft :: [Whitespace] , _listBody :: Maybe (CommaSep1' (ListItem v a)) , _listWhitespaceRight :: [Whitespace]- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''List +instance HasAnn (List v) where+ annot :: forall a. Lens' (List v a) (Ann a)+ annot = typed @(Ann a)+ data ListUnpack v a = MkListUnpack- { _listUnpackAnn :: a+ { _listUnpackAnn :: Ann a , _listUnpackParens :: [([Whitespace], [Whitespace])] , _listUnpackWhitespace :: [Whitespace] , _listUnpackValue :: Expr v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''ListUnpack +instance HasAnn (ListUnpack v) where+ annot :: forall a. Lens' (ListUnpack v a) (Ann a)+ annot = typed @(Ann a)+ data None (v :: [*]) a = MkNone- { _noneAnn :: a+ { _noneAnn :: Ann a , _noneWhitespace :: [Whitespace]- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''None +instance HasAnn (None v) where+ annot :: forall a. Lens' (None v a) (Ann a)+ annot = typed @(Ann a)+ data TupleUnpack v a = MkTupleUnpack- { _tupleUnpackAnn :: a+ { _tupleUnpackAnn :: Ann a , _tupleUnpackParens :: [([Whitespace], [Whitespace])] , _tupleUnpackWhitespace :: [Whitespace] , _tupleUnpackValue :: Expr v a- } deriving (Eq, Show)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) makeLenses ''TupleUnpack++instance HasAnn (TupleUnpack v) where+ annot :: forall a. Lens' (TupleUnpack v a) (Ann a)+ annot = typed @(Ann a)
src/Language/Python/Syntax/Whitespace.hs view
@@ -1,8 +1,9 @@ {-# language DataKinds #-} {-# language GeneralizedNewtypeDeriving, MultiParamTypeClasses, BangPatterns #-} {-# language TypeFamilies #-}-{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable #-}+{-# language DeriveFunctor, DeriveFoldable, DeriveTraversable, DeriveGeneric #-} {-# language TemplateHaskell #-}+{-# language InstanceSigs, ScopedTypeVariables, TypeApplications #-} {-| Module : Language.Python.Syntax.Whitespace@@ -34,6 +35,7 @@ import Control.Lens.TH (makeLenses) import Control.Lens.Traversal (Traversal') import Data.Deriving (deriveEq1, deriveOrd1)+import Data.Generics.Product.Typed (typed) import Data.Foldable (toList) import Data.Function ((&)) import Data.FingerTree (FingerTree, Measured(..), fromList)@@ -42,10 +44,12 @@ import Data.Monoid (Monoid, Endo(..), Dual(..)) import Data.Semigroup (Semigroup, (<>)) import GHC.Exts (IsList(..))+import GHC.Generics (Generic) import qualified Data.List.NonEmpty as NonEmpty -import Language.Python.Syntax.Comment (Comment)+import Language.Python.Syntax.Ann+import Language.Python.Syntax.Comment -- | A newline is either a carriage return, a line feed, or a carriage return -- followed by a line feed.@@ -117,11 +121,15 @@ -- whitespace and/or a comment. data Blank a = Blank- { _blankAnn :: a+ { _blankAnn :: Ann a , _blankWhitespaces :: [Whitespace] , _blankComment :: Maybe (Comment a)- } deriving (Eq, Show, Functor, Foldable, Traversable)+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) +instance HasAnn Blank where+ annot :: forall a. Lens' (Blank a) (Ann a)+ annot = typed @(Ann a)+ -- | Python has rules regarding the expansion of tabs into spaces and how to -- go about computing indentation after this is done. --@@ -194,11 +202,15 @@ data Indents a = Indents { _indentsValue :: [Indent]- , _indentsAnn :: a- } deriving (Eq, Show, Functor, Foldable, Traversable)+ , _indentsAnn :: Ann a+ } deriving (Eq, Show, Functor, Foldable, Traversable, Generic) instance Semigroup a => Semigroup (Indents a) where Indents a b <> Indents c d = Indents (a <> c) (b <> d)++instance HasAnn Indents where+ annot :: forall a. Lens' (Indents a) (Ann a)+ annot = typed @(Ann a) makeLenses ''Indents deriveEq1 ''Indents
src/Language/Python/Validate/Indentation.hs view
@@ -57,6 +57,7 @@ import Language.Python.Optics import Language.Python.Optics.Validated (unvalidated)+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Module import Language.Python.Syntax.Expr@@ -104,20 +105,20 @@ GreaterThan -> case (absolute1Comparison, absolute8Comparison) of (GT, GT) -> pure i- (GT, _) -> errorVM $ pure (_TabError # a)- (_, GT) -> errorVM $ pure (_TabError # a)+ (GT, _) -> errorVM $ pure (_TabError # getAnn a)+ (_, GT) -> errorVM $ pure (_TabError # getAnn a) (EQ, EQ) -> errorVM $ pure (_ExpectedGreaterThan # (i', i))- (_, EQ) -> errorVM $ pure (_TabError # a)- (EQ, _) -> errorVM $ pure (_TabError # a)+ (_, EQ) -> errorVM $ pure (_TabError # getAnn a)+ (EQ, _) -> errorVM $ pure (_TabError # getAnn a) (LT, LT) -> errorVM $ pure (_ExpectedGreaterThan # (i', i)) EqualTo -> case (absolute1Comparison, absolute8Comparison) of (EQ, EQ) -> pure i- (EQ, _) -> errorVM $ pure (_TabError # a)- (_, EQ) -> errorVM $ pure (_TabError # a)+ (EQ, _) -> errorVM $ pure (_TabError # getAnn a)+ (_, EQ) -> errorVM $ pure (_TabError # getAnn a) (GT, GT) -> errorVM $ pure (_ExpectedEqualTo # (i', i))- (_, GT) -> errorVM $ pure (_TabError # a)- (GT, _) -> errorVM $ pure (_TabError # a)+ (_, GT) -> errorVM $ pure (_TabError # getAnn a)+ (GT, _) -> errorVM $ pure (_TabError # getAnn a) (LT, LT) -> errorVM $ pure (_ExpectedEqualTo # (i', i)) setNextIndent :: NextIndent -> [Indent] -> ValidateIndentation e ()@@ -147,7 +148,7 @@ -> ValidateIndentation e (Blank a) validateBlankIndentation (Blank a ws cmt) = if any (\case; Continued{} -> True; _ -> False) ws- then errorVM1 $ _EmptyContinuedLine # a+ then errorVM1 $ _EmptyContinuedLine # getAnn a else pure $ Blank a ws cmt validateBlockIndentation
src/Language/Python/Validate/Scope.hs view
@@ -60,7 +60,7 @@ import Control.Applicative ((<|>)) import Control.Lens.Cons (snoc) import Control.Lens.Fold ((^..), toListOf, folded)-import Control.Lens.Getter ((^.), to, getting, use)+import Control.Lens.Getter ((^.), view, to, getting, use) import Control.Lens.Lens (Lens') import Control.Lens.Plated (cosmos) import Control.Lens.Prism (_Right, _Just)@@ -87,6 +87,7 @@ import Language.Python.Optics import Language.Python.Optics.Validated (unvalidated)+import Language.Python.Syntax.Ann import Language.Python.Syntax.Statement import Language.Python.Syntax.Expr import Language.Python.Syntax.Ident@@ -216,11 +217,11 @@ traverseOf (traverse._2) validateExprScope mty <*> locallyExtendOver scGlobalScope- ((_identAnn &&& _identValue) name :- toListOf (folded.getting paramName.to (_identAnn &&& _identValue)) params)+ ((view annot_ &&& _identValue) name :+ toListOf (folded.getting paramName.to (view annot_ &&& _identValue)) params) (validateSuiteScope s)) <*- extendScope scLocalScope [(_identAnn &&& _identValue) name] <*- extendScope scImmediateScope [(_identAnn &&& _identValue) name]+ extendScope scLocalScope [(view annot_ &&& _identValue) name] <*+ extendScope scImmediateScope [(view annot_ &&& _identValue) name] validateCompoundStatementScope (If idnts a ws1 e b elifs melse) = use scLocalScope `bindVM` (\ls -> use scImmediateScope `bindVM` (\is ->@@ -258,7 +259,7 @@ traverse validateExceptAsScope g <*> locallyExtendOver scGlobalScope- (toListOf (folded.exceptAsName._Just._2.to (_identAnn &&& _identValue)) g)+ (toListOf (folded.exceptAsName._Just._2.to (view annot_ &&& _identValue)) g) (validateSuiteScope h)) f <*> traverseOf (traverse._3) validateSuiteScope k <*>@@ -288,7 +289,7 @@ pure d <*> traverse validateExprScope e <*> (let- ls = c ^.. unvalidated.cosmos._Ident.to (_identAnn &&& _identValue)+ ls = c ^.. unvalidated.cosmos._Ident.to (view annot_ &&& _identValue) in extendScope scLocalScope ls *> extendScope scImmediateScope ls *>@@ -299,13 +300,13 @@ traverse validateDecoratorScope decos <*> traverseOf (traverse._2.traverse.traverse) validateArgScope d <*> validateSuiteScope g <*- extendScope scImmediateScope [c ^. to (_identAnn &&& _identValue)]+ extendScope scImmediateScope [c ^. to (view annot_ &&& _identValue)] validateCompoundStatementScope (With a b asyncWs c d e) = let names = d ^.. folded.unvalidated.to _withItemBinder.folded._2.- assignTargets.to (_identAnn &&& _identValue)+ assignTargets.to (view annot_ &&& _identValue) in With @(Nub (Scope ': v)) a b asyncWs c <$> traverse@@ -340,7 +341,7 @@ let ls = (l : (snd <$> NonEmpty.init rs)) ^..- folded.unvalidated.assignTargets.to (_identAnn &&& _identValue)+ folded.unvalidated.assignTargets.to (view annot_ &&& _identValue) in Assign a <$> validateAssignExprScope l <*>@@ -353,12 +354,12 @@ (\l' -> AugAssign a l' aa) <$> validateExprScope l <*> validateExprScope r-validateSimpleStatementScope (Global a _ _) = errorVM1 (_FoundGlobal # a)-validateSimpleStatementScope (Nonlocal a _ _) = errorVM1 (_FoundNonlocal # a)+validateSimpleStatementScope (Global a _ _) = errorVM1 (_FoundGlobal # getAnn a)+validateSimpleStatementScope (Nonlocal a _ _) = errorVM1 (_FoundNonlocal # getAnn a) validateSimpleStatementScope (Del a ws cs) = Del a ws <$ traverse_- (\case; Ident a -> errorVM1 (_DeletedIdent # (a ^. identAnn)); _ -> pure ())+ (\case; Ident a _ -> errorVM1 (_DeletedIdent # getAnn a); _ -> pure ()) cs <*> traverse validateExprScope cs validateSimpleStatementScope s@Pass{} = pure $ unsafeCoerce s@@ -460,7 +461,7 @@ validateAssignExprScope c <*> validateExprScope e <* extendScope scGlobalScope- (c ^.. unvalidated.assignTargets.to (_identAnn &&& _identValue))+ (c ^.. unvalidated.assignTargets.to (view annot_ &&& _identValue)) validateCompIfScope :: AsScopeError e a@@ -627,7 +628,7 @@ Parens a ws1 <$> validateExprScope e <*> pure ws2-validateExprScope (Ident i) = Ident <$> validateIdentScope i+validateExprScope (Ident a i) = Ident a <$> validateIdentScope i validateExprScope (Tuple a b ws d) = Tuple a <$> validateTupleItemScope b <*>
src/Language/Python/Validate/Syntax.hs view
@@ -2,6 +2,7 @@ {-# language GeneralizedNewtypeDeriving #-} {-# language FlexibleContexts #-} {-# language PolyKinds #-}+{-# language TypeApplications #-} {-# language TypeOperators #-} {-# language TypeSynonymInstances, FlexibleInstances #-} {-# language TemplateHaskell, TypeFamilies, MultiParamTypeClasses #-}@@ -77,7 +78,6 @@ import Control.Monad.State (State, put, modify, get, evalState) import Control.Monad.Reader (ReaderT, local, ask, runReaderT) import Data.Char (isAscii, ord)-import Data.Coerce (coerce) import Data.Foldable (toList, traverse_) import Data.Bitraversable (bitraverse) import Data.Functor.Compose (Compose(..))@@ -93,11 +93,13 @@ import Language.Python.Optics import Language.Python.Optics.Validated (unvalidated)+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Expr import Language.Python.Syntax.Ident import Language.Python.Syntax.Import import Language.Python.Syntax.Module+import Language.Python.Syntax.ModuleNames import Language.Python.Syntax.Punctuation import Language.Python.Syntax.Statement import Language.Python.Syntax.Strings@@ -207,8 +209,8 @@ => Ident v a -> ValidateSyntax e (Ident (Nub (Syntax ': v)) a) validateIdentSyntax (MkIdent a name ws)- | not (all isAscii name) = errorVM1 (_BadCharacter # (a, name))- | null name = errorVM1 (_EmptyIdentifier # a)+ | not (all isAscii name) = errorVM1 (_BadCharacter # (getAnn a, name))+ | null name = errorVM1 (_EmptyIdentifier # getAnn a) | otherwise = bindVM (view inFunction) $ \fi -> let@@ -219,7 +221,7 @@ else [] in if (name `elem` reserved)- then errorVM1 (_IdentifierReservedWord # (a, name))+ then errorVM1 (_IdentifierReservedWord # (getAnn a, name)) else pure $ MkIdent a name ws validateWhitespace@@ -267,6 +269,13 @@ -> ValidateSyntax e Comma validateComma a (MkComma ws) = MkComma <$> validateWhitespace a ws +validateDot+ :: (AsSyntaxError e a)+ => a+ -> Dot+ -> ValidateSyntax e Dot+validateDot a (MkDot ws) = MkDot <$> validateWhitespace a ws+ validateColon :: (AsSyntaxError e a) => a@@ -278,7 +287,8 @@ :: AsSyntaxError e a => Semicolon a -> ValidateSyntax e (Semicolon a)-validateSemicolon (MkSemicolon a ws) = MkSemicolon a <$> validateWhitespace a ws+validateSemicolon (MkSemicolon a ws) =+ MkSemicolon a <$> validateWhitespace (getAnn a) ws validateEquals :: AsSyntaxError e a@@ -312,7 +322,7 @@ -> ValidateSyntax e (CompFor (Nub (Syntax ': v)) a) validateCompForSyntax (CompFor a b c d e) = (\c' -> CompFor a b c' d) <$>- liftVM1 (local $ inGenerator .~ True) (validateAssignmentSyntax a c) <*>+ liftVM1 (local $ inGenerator .~ True) (validateAssignmentSyntax (getAnn a) c) <*> validateExprSyntax e validateCompIfSyntax@@ -369,18 +379,18 @@ -> ValidateSyntax e (StringLiteral a) validateStringLiteralSyntax (StringLiteral a b c d e f) = StringLiteral a b c d <$>- traverse (validateStringPyChar a) e <*>- validateWhitespace a f+ traverse (validateStringPyChar $ getAnn a) e <*>+ validateWhitespace (getAnn a) f validateStringLiteralSyntax (BytesLiteral a b c d e f) = BytesLiteral a b c d <$>- traverse (validateBytesPyChar a) e <*>- validateWhitespace a f+ traverse (validateBytesPyChar $ getAnn a) e <*>+ validateWhitespace (getAnn a) f validateStringLiteralSyntax (RawStringLiteral a b c d e f) = RawStringLiteral a b c d e <$>- validateWhitespace a f+ validateWhitespace (getAnn a) f validateStringLiteralSyntax (RawBytesLiteral a b c d e f) = RawBytesLiteral a b c d e <$>- validateWhitespace a f+ validateWhitespace (getAnn a) f validateDictItemSyntax :: ( AsSyntaxError e a@@ -394,7 +404,7 @@ validateExprSyntax d validateDictItemSyntax (DictUnpack a b c) = DictUnpack a <$>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateExprSyntax c validateSubscriptSyntax@@ -419,8 +429,8 @@ validateListItemSyntax (ListItem a b) = ListItem a <$> validateExprSyntax b validateListItemSyntax (ListUnpack a b c d) = ListUnpack a <$>- traverseOf (traverse._2) (validateWhitespace a) b <*>- validateWhitespace a c <*>+ traverseOf (traverse._2) (validateWhitespace $ getAnn a) b <*>+ validateWhitespace (getAnn a) c <*> validateExprSyntax d validateSetItemSyntax@@ -432,8 +442,8 @@ validateSetItemSyntax (SetItem a b) = SetItem a <$> validateExprSyntax b validateSetItemSyntax (SetUnpack a b c d) = SetUnpack a <$>- traverseOf (traverse._2) (validateWhitespace a) b <*>- validateWhitespace a c <*>+ traverseOf (traverse._2) (validateWhitespace $ getAnn a) b <*>+ validateWhitespace (getAnn a) c <*> validateExprSyntax d validateTupleItemSyntax@@ -445,8 +455,8 @@ validateTupleItemSyntax (TupleItem a b) = TupleItem a <$> validateExprSyntax b validateTupleItemSyntax (TupleUnpack a b c d) = TupleUnpack a <$>- traverseOf (traverse._2) (validateWhitespace a) b <*>- validateWhitespace a c <*>+ traverseOf (traverse._2) (validateWhitespace $ getAnn a) b <*>+ validateWhitespace (getAnn a) c <*> validateExprSyntax d validateExprSyntax@@ -457,16 +467,16 @@ -> ValidateSyntax e (Expr (Nub (Syntax ': v)) a) validateExprSyntax (Unit a b c) = Unit a <$>- liftVM1 (local $ inParens .~ True) (validateWhitespace a b) <*>- validateWhitespace a c+ liftVM1 (local $ inParens .~ True) (validateWhitespace (getAnn a) b) <*>+ validateWhitespace (getAnn a) c validateExprSyntax (Lambda a b c d e) = let paramIdents = c ^.. folded.unvalidated.paramName.identValue in Lambda a <$>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateParamsSyntax True c <*>- validateColon a d <*>+ validateColon (getAnn a) d <*> liftVM1 (local $ \ctxt ->@@ -481,29 +491,29 @@ (validateExprSyntax e) validateExprSyntax (Yield a b c) = Yield a <$>- validateWhitespace a b <*+ validateWhitespace (getAnn a) b <* (ask `bindVM` \ctxt -> case _inFunction ctxt of Nothing | _inGenerator ctxt -> pure ()- | otherwise -> errorVM1 (_YieldOutsideGenerator # a)+ | otherwise -> errorVM1 (_YieldOutsideGenerator # getAnn a) Just info -> if info^.asyncFunction- then errorVM1 $ _YieldInsideCoroutine # a+ then errorVM1 $ _YieldInsideCoroutine # getAnn a else pure ()) <*> traverse validateExprSyntax c validateExprSyntax (YieldFrom a b c d) = YieldFrom a <$>- validateWhitespace a b <*>- validateWhitespace a c <*+ validateWhitespace (getAnn a) b <*>+ validateWhitespace (getAnn a) c <* (ask `bindVM` \ctxt -> case _inFunction ctxt of Nothing | _inGenerator ctxt -> pure ()- | otherwise -> errorVM1 (_YieldOutsideGenerator # a)+ | otherwise -> errorVM1 (_YieldOutsideGenerator # getAnn a) Just fi -> if fi ^. asyncFunction- then errorVM1 (_YieldFromInsideCoroutine # a)+ then errorVM1 (_YieldFromInsideCoroutine # getAnn a) else pure ()) <*> validateExprSyntax d validateExprSyntax (Ternary a b c d e f) =@@ -517,12 +527,12 @@ traverse validateSubscriptSyntax d validateExprSyntax (Not a ws e) = Not a <$>- validateWhitespace a ws <*>+ validateWhitespace (getAnn a) ws <*> validateExprSyntax e validateExprSyntax (Parens a ws1 e ws2) = Parens a ws1 <$> liftVM1 (local $ inParens .~ True) (validateExprSyntax e) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 validateExprSyntax (Bool a b ws) = pure $ Bool a b ws validateExprSyntax (UnOp a op expr) = UnOp a op <$> validateExprSyntax expr@@ -544,49 +554,49 @@ then String a <$> traverse validateStringLiteralSyntax strLits else- errorVM1 (_Can'tJoinStringAndBytes # a)+ errorVM1 (_Can'tJoinStringAndBytes # getAnn a) validateExprSyntax (Int a n ws) = pure $ Int a n ws validateExprSyntax (Float a n ws) = pure $ Float a n ws validateExprSyntax (Imag a n ws) = pure $ Imag a n ws-validateExprSyntax (Ident name) = Ident <$> validateIdentSyntax name+validateExprSyntax (Ident a name) = Ident a <$> validateIdentSyntax name validateExprSyntax (List a ws1 exprs ws2) = List a ws1 <$> liftVM1 (local $ inParens .~ True) (traverseOf (traverse.traverse) validateListItemSyntax exprs) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 validateExprSyntax (ListComp a ws1 comp ws2) = liftVM1 (local $ inParens .~ True) (ListComp a ws1 <$> validateComprehensionSyntax validateExprSyntax comp) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 validateExprSyntax (Generator a comp) = Generator a <$> validateComprehensionSyntax validateExprSyntax comp validateExprSyntax (Await a ws expr) = bindVM ask $ \ctxt -> Await a <$>- validateWhitespace a ws <*+ validateWhitespace (getAnn a) ws <* (if not $ fromMaybe False (ctxt ^? inFunction._Just.asyncFunction)- then errorVM1 $ _AwaitOutsideCoroutine # a+ then errorVM1 $ _AwaitOutsideCoroutine # getAnn a else pure () *> if ctxt^.inGenerator- then errorVM1 $ _AwaitInsideComprehension # a+ then errorVM1 $ _AwaitInsideComprehension # getAnn a else pure ()) <*> validateExprSyntax expr validateExprSyntax (Deref a expr ws1 name) = Deref a <$> validateExprSyntax expr <*>- validateWhitespace a ws1 <*>+ validateWhitespace (getAnn a) ws1 <*> validateIdentSyntax name validateExprSyntax (Call a expr ws args ws2) = Call a <$> validateExprSyntax expr <*>- liftVM1 (local $ inParens .~ True) (validateWhitespace a ws) <*>+ liftVM1 (local $ inParens .~ True) (validateWhitespace (getAnn a) ws) <*> liftVM1 (local $ inParens .~ True) (traverse validateArgsSyntax args) <*>- validateWhitespace a ws2-validateExprSyntax (None a ws) = None a <$> validateWhitespace a ws-validateExprSyntax (Ellipsis a ws) = Ellipsis a <$> validateWhitespace a ws+ validateWhitespace (getAnn a) ws2+validateExprSyntax (None a ws) = None a <$> validateWhitespace (getAnn a) ws+validateExprSyntax (Ellipsis a ws) = Ellipsis a <$> validateWhitespace (getAnn a) ws validateExprSyntax (BinOp a e1 op e2) = BinOp a <$> validateExprSyntax e1 <*>@@ -595,38 +605,38 @@ validateExprSyntax (Tuple a b comma d) = Tuple a <$> validateTupleItemSyntax b <*>- validateComma a comma <*>+ validateComma (getAnn a) comma <*> traverseOf (traverse.traverse) validateTupleItemSyntax d validateExprSyntax (DictComp a ws1 comp ws2) = liftVM1 (local $ inParens .~ True) (DictComp a ws1 <$> validateComprehensionSyntax dictItem comp) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 where- dictItem (DictUnpack a _ _) = errorVM1 (_InvalidDictUnpacking # a)+ dictItem (DictUnpack a _ _) = errorVM1 (_InvalidDictUnpacking # getAnn a) dictItem a = validateDictItemSyntax a validateExprSyntax (Dict a b c d) = Dict a b <$> liftVM1 (local $ inParens .~ True) (traverseOf (traverse.traverse) validateDictItemSyntax c) <*>- validateWhitespace a d+ validateWhitespace (getAnn a) d validateExprSyntax (SetComp a ws1 comp ws2) = liftVM1 (local $ inParens .~ True) (SetComp a ws1 <$> validateComprehensionSyntax setItem comp) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 where- setItem (SetUnpack a _ _ _) = errorVM1 (_InvalidSetUnpacking # a)+ setItem (SetUnpack a _ _ _) = errorVM1 (_InvalidSetUnpacking # getAnn a) setItem a = validateSetItemSyntax a validateExprSyntax (Set a b c d) = Set a b <$> liftVM1 (local $ inParens .~ True) (traverse validateSetItemSyntax c) <*>- validateWhitespace a d+ validateWhitespace (getAnn a) d validateBlockSyntax :: ( AsSyntaxError e a@@ -647,11 +657,11 @@ -> ValidateSyntax e (Suite (Nub (Syntax ': v)) a) validateSuiteSyntax (SuiteMany a b c d e) = (\b' -> SuiteMany a b' c d) <$>- validateColon a b <*>+ validateColon (getAnn a) b <*> validateBlockSyntax e validateSuiteSyntax (SuiteOne a b c) = SuiteOne a <$>- validateColon a b <*>+ validateColon (getAnn a) b <*> validateSmallStatementSyntax c validateDecoratorSyntax@@ -662,7 +672,7 @@ -> ValidateSyntax e (Decorator (Nub (Syntax ': v)) a) validateDecoratorSyntax (Decorator a b c d e f g) = (\c' d' -> Decorator a b c' d' e f) <$>- validateAt a c <*>+ validateAt (getAnn a) c <*> isDecoratorValue d <*> traverseOf (traverse._1) validateBlankSyntax g where@@ -672,12 +682,12 @@ isDecoratorValue e@(Call _ a _ _ _) | someDerefs a = pure $ unsafeCoerce e isDecoratorValue e | someDerefs e = pure $ unsafeCoerce e- isDecoratorValue _ = errorVM1 (_MalformedDecorator # a)+ isDecoratorValue _ = errorVM1 (_MalformedDecorator # getAnn a) validateBlankSyntax :: AsSyntaxError e a => Blank a -> ValidateSyntax e (Blank a) validateBlankSyntax (Blank a ws cmt) = (\ws' -> Blank a ws' cmt) <$>- validateWhitespace a ws+ validateWhitespace (getAnn a) ws validateCompoundStatementSyntax :: forall e v a@@ -692,13 +702,13 @@ in (\decos' -> Fundef a decos' idnts) <$> traverse validateDecoratorSyntax decos <*>- traverse (validateWhitespace a) asyncWs <*>- validateWhitespace a ws1 <*>+ traverse (validateWhitespace $ getAnn a) asyncWs <*>+ validateWhitespace (getAnn a) ws1 <*> validateIdentSyntax name <*> pure ws2 <*> liftVM1 (local $ inParens .~ True) (validateParamsSyntax False params) <*> pure ws3 <*>- traverse (bitraverse (validateWhitespace a) validateExprSyntax) mty <*>+ traverse (bitraverse (validateWhitespace $ getAnn a) validateExprSyntax) mty <*> localNonlocals id (liftVM1 (local $@@ -715,7 +725,7 @@ (validateSuiteSyntax body)) validateCompoundStatementSyntax (If a idnts ws1 expr body elifs body') = If a idnts <$>- validateWhitespace a ws1 <*>+ validateWhitespace (getAnn a) ws1 <*> validateExprSyntax expr <*> validateSuiteSyntax body <*> traverse@@ -727,56 +737,56 @@ traverseOf (traverse._3) validateSuiteSyntax body' validateCompoundStatementSyntax (While a idnts ws1 expr body els) = While a idnts <$>- validateWhitespace a ws1 <*>+ validateWhitespace (getAnn a) ws1 <*> validateExprSyntax expr <*> liftVM1 (local $ (inFinally .~ False) . (inLoop .~ True)) (validateSuiteSyntax body) <*> traverseOf (traverse._3) validateSuiteSyntax els validateCompoundStatementSyntax (TryExcept a idnts b e f k l) = TryExcept a idnts <$>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateSuiteSyntax e <*> traverse (\(idnts, f, g, j) -> (,,,) idnts <$>- validateWhitespace a f <*>+ validateWhitespace (getAnn a) f <*> traverse validateExceptAsSyntax g <*> validateSuiteSyntax j) f <* (if anyOf (_init.folded._3) isNothing $ NonEmpty.toList f- then errorVM1 $ _DefaultExceptMustBeLast # a+ then errorVM1 $ _DefaultExceptMustBeLast # getAnn a else pure ()) <*> traverse (\(idnts, x, w) -> (,,) idnts <$>- validateWhitespace a x <*>+ validateWhitespace (getAnn a) x <*> validateSuiteSyntax w) k <*> traverse (\(idnts, x, w) -> (,,) idnts <$>- validateWhitespace a x <*>+ validateWhitespace (getAnn a) x <*> liftVM1 (local $ inFinally .~ True) (validateSuiteSyntax w)) l validateCompoundStatementSyntax (TryFinally a idnts b e idnts2 f i) = TryFinally a idnts <$>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateSuiteSyntax e <*> pure idnts2 <*>- validateWhitespace a f <*>+ validateWhitespace (getAnn a) f <*> liftVM1 (local $ inFinally .~ True) (validateSuiteSyntax i) validateCompoundStatementSyntax (ClassDef a decos idnts b c d g) = liftVM1 (local $ inLoop .~ False) $ (\decos' -> ClassDef a decos' idnts) <$> traverse validateDecoratorSyntax decos <*>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateIdentSyntax c <*> traverse (\(x, y, z) -> (,,) <$>- validateWhitespace a x <*>+ validateWhitespace (getAnn a) x <*> traverse (liftVM1 (local $ inParens .~ True) . validateArgsSyntax) y <*>- validateWhitespace a z)+ validateWhitespace (getAnn a) z) d <*> liftVM1 (local $ (inClass .~ True) . (inFunction .~ Nothing))@@ -785,12 +795,12 @@ bindVM ask $ \ctxt -> For a idnts <$ (if isJust asyncWs && not (fromMaybe False $ ctxt ^? inFunction._Just.asyncFunction)- then errorVM1 (_AsyncForOutsideCoroutine # a)+ then errorVM1 (_AsyncForOutsideCoroutine # getAnn a) else pure ()) <*>- traverse (validateWhitespace a) asyncWs <*>- validateWhitespace a b <*>- validateAssignmentSyntax a c <*>- validateWhitespace a d <*>+ traverse (validateWhitespace $ getAnn a) asyncWs <*>+ validateWhitespace (getAnn a) b <*>+ validateAssignmentSyntax (getAnn a) c <*>+ validateWhitespace (getAnn a) d <*> traverse validateExprSyntax e <*> liftVM1 (local $ (inFinally .~ False) . (inLoop .~ True))@@ -798,23 +808,26 @@ traverse (\(idnts, x, w) -> (,,) idnts <$>- validateWhitespace a x <*>+ validateWhitespace (getAnn a) x <*> validateSuiteSyntax w) i validateCompoundStatementSyntax (With a b asyncWs c d e) = bindVM ask $ \ctxt -> With a b <$ (if isJust asyncWs && not (fromMaybe False $ ctxt ^? inFunction._Just.asyncFunction)- then errorVM1 (_AsyncWithOutsideCoroutine # a)+ then errorVM1 (_AsyncWithOutsideCoroutine # getAnn a) else pure ()) <*>- traverse (validateWhitespace a) asyncWs <*>- validateWhitespace a c <*>+ traverse (validateWhitespace $ getAnn a) asyncWs <*>+ validateWhitespace (getAnn a) c <*> traverse (\(WithItem a b c) -> WithItem a <$> validateExprSyntax b <*> traverse- (\(ws, b) -> (,) <$> validateWhitespace a ws <*> validateAssignmentSyntax a b)+ (\(ws, b) ->+ (,) <$>+ validateWhitespace (getAnn a) ws <*>+ validateAssignmentSyntax (getAnn a) b) c) d <*> validateSuiteSyntax e@@ -828,13 +841,18 @@ validateExceptAsSyntax (ExceptAs ann e f) = ExceptAs ann <$> validateExprSyntax e <*>- traverse (\(a, b) -> (,) <$> validateWhitespace ann a <*> validateIdentSyntax b) f+ traverse+ (\(a, b) ->+ (,) <$>+ validateWhitespace (getAnn ann) a <*>+ validateIdentSyntax b)+ f validateImportAsSyntax :: ( AsSyntaxError e a , Member Indentation v )- => (t a -> ValidateSyntax e (t' a))+ => (t v a -> ValidateSyntax e (t' (Nub (Syntax ': v)) a)) -> ImportAs t v a -> ValidateSyntax e (ImportAs t' (Nub (Syntax ': v)) a) validateImportAsSyntax v (ImportAs x a b) =@@ -843,7 +861,7 @@ traverse (\(c, d) -> (,) <$>- (c <$ validateWhitespace x (NonEmpty.toList c)) <*>+ (c <$ validateWhitespace (getAnn x) (NonEmpty.toList c)) <*> validateIdentSyntax d) b @@ -856,32 +874,63 @@ validateImportTargetsSyntax (ImportAll a ws) = bindVM ask $ \ctxt -> if ctxt ^. inClass || has (inFunction._Just) ctxt- then errorVM1 $ _WildcardImportInDefinition # a- else ImportAll a <$> validateWhitespace a ws+ then errorVM1 $ _WildcardImportInDefinition # getAnn a+ else ImportAll a <$> validateWhitespace (getAnn a) ws validateImportTargetsSyntax (ImportSome a cs) = ImportSome a <$> traverse (validateImportAsSyntax validateIdentSyntax) cs validateImportTargetsSyntax (ImportSomeParens a ws1 cs ws2) = liftVM1 (local $ inParens .~ True) (ImportSomeParens a <$>- validateWhitespace a ws1 <*>+ validateWhitespace (getAnn a) ws1 <*> traverse (validateImportAsSyntax validateIdentSyntax) cs) <*>- validateWhitespace a ws2+ validateWhitespace (getAnn a) ws2 +validateModuleNameSyntax+ :: forall e a v+ . ( AsSyntaxError e a+ , Member Indentation v+ )+ => ModuleName v a+ -> ValidateSyntax e (ModuleName (Nub (Syntax ': v)) a)+validateModuleNameSyntax (ModuleNameOne a b) =+ ModuleNameOne a <$> validateIdentSyntax b+validateModuleNameSyntax (ModuleNameMany a b c d) =+ ModuleNameMany a <$>+ validateIdentSyntax b <*>+ validateDot (getAnn a) c <*>+ validateModuleNameSyntax d++validateRelativeModuleNameSyntax+ :: forall e a v+ . ( AsSyntaxError e a+ , Member Indentation v+ )+ => RelativeModuleName v a+ -> ValidateSyntax e (RelativeModuleName (Nub (Syntax ': v)) a)+validateRelativeModuleNameSyntax (RelativeWithName ann dots mn) =+ RelativeWithName ann <$>+ traverse (validateDot $ getAnn ann) dots <*>+ validateModuleNameSyntax mn+validateRelativeModuleNameSyntax (Relative ann dots) =+ Relative ann <$>+ traverse (validateDot $ getAnn ann) dots+ validateSimpleStatementSyntax- :: ( AsSyntaxError e a+ :: forall e a v+ . ( AsSyntaxError e a , Member Indentation v ) => SimpleStatement v a -> ValidateSyntax e (SimpleStatement (Nub (Syntax ': v)) a) validateSimpleStatementSyntax (Assert a b c d) = Assert a <$>- validateWhitespace a b <*>+ validateWhitespace (getAnn a) b <*> validateExprSyntax c <*> traverseOf (traverse._2) validateExprSyntax d validateSimpleStatementSyntax (Raise a ws f) = Raise a <$>- validateWhitespace a ws <*>+ validateWhitespace (getAnn a) ws <*> traverse (\(b, c) -> (,) <$>@@ -889,7 +938,7 @@ traverse (\(d, e) -> (,) <$>- validateWhitespace a d <*>+ validateWhitespace (getAnn a) d <*> validateExprSyntax e) c) f@@ -898,9 +947,9 @@ case _inFunction sctxt of Just{} -> Return a <$>- validateWhitespace a ws <*>+ validateWhitespace (getAnn a) ws <*> traverse validateExprSyntax expr- _ -> errorVM1 (_ReturnOutsideFunction # a)+ _ -> errorVM1 (_ReturnOutsideFunction # getAnn a) validateSimpleStatementSyntax (Expr a expr) = Expr a <$> validateExprSyntax expr@@ -915,15 +964,15 @@ else [] in Assign a <$>- validateAssignmentSyntax a lvalue <*>+ validateAssignmentSyntax (getAnn a) lvalue <*> ((\a b -> case a of; [] -> pure b; a : as -> a :| (snoc as b)) <$> traverse (\(ws, b) -> (,) <$>- validateEquals a ws <*>- validateAssignmentSyntax a b)+ validateEquals (getAnn a) ws <*>+ validateAssignmentSyntax (getAnn a) b) (NonEmpty.init rs) <*>- (\(ws, b) -> (,) <$> validateEquals a ws <*> validateExprSyntax b)+ (\(ws, b) -> (,) <$> validateEquals (getAnn a) ws <*> validateExprSyntax b) (NonEmpty.last rs)) <* liftVM0 (modify (assigns ++)) validateSimpleStatementSyntax (AugAssign a lvalue aa rvalue) =@@ -933,29 +982,29 @@ Ident{} -> validateExprSyntax lvalue Deref{} -> validateExprSyntax lvalue Subscript{} -> validateExprSyntax lvalue- _ -> errorVM1 (_CannotAugAssignTo # (a, lvalue ^. unvalidated))- else errorVM1 (_CannotAssignTo # (a, lvalue ^. unvalidated))) <*>+ _ -> errorVM1 (_CannotAugAssignTo # (getAnn a, lvalue ^. unvalidated))+ else errorVM1 (_CannotAssignTo # (getAnn a, lvalue ^. unvalidated))) <*> pure aa <*> validateExprSyntax rvalue validateSimpleStatementSyntax (Pass a ws) =- Pass a <$> validateWhitespace a ws+ Pass a <$> validateWhitespace (getAnn a) ws validateSimpleStatementSyntax (Break a ws) = Break a <$ (ask `bindVM` \sctxt -> if _inLoop sctxt then pure ()- else errorVM1 (_BreakOutsideLoop # a)) <*>- validateWhitespace a ws+ else errorVM1 (_BreakOutsideLoop # getAnn a)) <*>+ validateWhitespace (getAnn a) ws validateSimpleStatementSyntax (Continue a ws) = Continue a <$ (ask `bindVM` \sctxt -> (if _inLoop sctxt then pure ()- else errorVM1 (_ContinueOutsideLoop # a)) *>+ else errorVM1 (_ContinueOutsideLoop # getAnn a)) *> (if _inFinally sctxt- then errorVM1 (_ContinueInsideFinally # a)+ then errorVM1 (_ContinueInsideFinally # getAnn a) else pure ())) <*>- validateWhitespace a ws+ validateWhitespace (getAnn a) ws validateSimpleStatementSyntax (Global a ws ids) = ask `bindVM` \ctx -> let@@ -968,7 +1017,7 @@ ival = i ^. getting identValue in (if ival `elem` params- then errorVM1 $ _ParameterMarkedGlobal # (a, ival)+ then errorVM1 $ _ParameterMarkedGlobal # (getAnn a, ival) else pure ()) *> validateIdentSyntax i) ids@@ -979,11 +1028,11 @@ [] -> pure () ids -> traverse_ (\e -> errorVM1 (_NoBindingNonlocal # e)) ids) *> case sctxt ^? inFunction._Just.functionParams of- Nothing -> errorVM1 (_NonlocalOutsideFunction # a)+ Nothing -> errorVM1 (_NonlocalOutsideFunction # getAnn a) Just params -> case intersect params (ids ^.. folded.unvalidated.identValue) of [] -> Nonlocal a ws <$> traverse validateIdentSyntax ids- bad -> errorVM1 (_ParametersNonlocal # (a, bad))+ bad -> errorVM1 (_ParametersNonlocal # (getAnn a, bad)) validateSimpleStatementSyntax (Del a ws ids) = Del a ws <$> traverse@@ -991,13 +1040,15 @@ validateExprSyntax x <* if canDelete x then pure ()- else errorVM1 $ _CannotDelete # (a, x ^. unvalidated))+ else errorVM1 $ _CannotDelete # (getAnn a, x ^. unvalidated)) ids validateSimpleStatementSyntax (Import a ws mns) =- Import a ws <$> traverse (pure . coerce) mns+ Import @(Nub (Syntax ': v)) a ws <$>+ traverse (validateImportAsSyntax validateModuleNameSyntax) mns validateSimpleStatementSyntax (From a ws1 mn ws2 ts) =- From a ws1 (coerce mn) <$>- validateWhitespace a ws2 <*>+ From a ws1 <$>+ validateRelativeModuleNameSyntax mn <*>+ validateWhitespace (getAnn a) ws2 <*> validateImportTargetsSyntax ts canDelete :: Expr v a -> Bool@@ -1116,20 +1167,20 @@ (PositionalArg a <$> validateExprSyntax expr) (go names False False args) go names seenKeyword seenUnpack (PositionalArg a expr : args) =- when seenKeyword (errorVM1 (_PositionalAfterKeywordArg # (a, expr ^. unvalidated))) *>- when seenUnpack (errorVM1 (_PositionalAfterKeywordUnpacking # (a, expr ^. unvalidated))) *>+ when seenKeyword (errorVM1 (_PositionalAfterKeywordArg # (getAnn a, expr ^. unvalidated))) *>+ when seenUnpack (errorVM1 (_PositionalAfterKeywordUnpacking # (getAnn a, expr ^. unvalidated))) *> go names seenKeyword seenUnpack args go names seenKeyword False (StarArg a ws expr : args) = liftA2 (:)- (StarArg a <$> validateWhitespace a ws <*> validateExprSyntax expr)+ (StarArg a <$> validateWhitespace (getAnn a) ws <*> validateExprSyntax expr) (go names seenKeyword False args) go names seenKeyword seenUnpack (StarArg a _ expr : args) =- when seenKeyword (errorVM1 (_PositionalAfterKeywordArg # (a, expr ^. unvalidated))) *>- when seenUnpack (errorVM1 (_PositionalAfterKeywordUnpacking # (a, expr ^. unvalidated))) *>+ when seenKeyword (errorVM1 (_PositionalAfterKeywordArg # (getAnn a, expr ^. unvalidated))) *>+ when seenUnpack (errorVM1 (_PositionalAfterKeywordUnpacking # (getAnn a, expr ^. unvalidated))) *> go names seenKeyword seenUnpack args go names _ seenUnpack (KeywordArg a name ws2 expr : args) | _identValue name `elem` names =- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*> validateIdentSyntax name <*> go names True seenUnpack args | otherwise =@@ -1142,7 +1193,7 @@ go names seenKeyword _ (DoubleStarArg a ws expr : args) = liftA2 (:) (DoubleStarArg a <$>- validateWhitespace a ws <*>+ validateWhitespace (getAnn a) ws <*> validateExprSyntax expr) (go names seenKeyword True args) @@ -1189,25 +1240,25 @@ Just b' -> errorVM1 $ _NoKeywordsAfterEmptyStarArg # b' go names bsa besa bkw@(HaveSeenKeywordArg False) (PositionalParam a name mty : params) | _identValue name `elem` names =- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*> validateIdentSyntax name <*>- checkTy a mty <*>+ checkTy (getAnn a) mty <*> go (_identValue name:names) bsa besa bkw params | otherwise = liftA2 (:) (PositionalParam a <$> validateIdentSyntax name <*>- checkTy a mty)+ checkTy (getAnn a) mty) (go (_identValue name:names) bsa besa bkw params) go names (HaveSeenStarArg b) besa bkw (StarParam a _ name mty : params) | _identValue name `elem` names = if b then- errorVM1 (_ManyStarredParams # a) <*>- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>+ errorVM1 (_ManyStarredParams # getAnn a) <*>+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*> validateIdentSyntax name <*>- checkTy a mty <*>+ checkTy (getAnn a) mty <*> go (_identValue name:names) (HaveSeenStarArg True)@@ -1215,9 +1266,9 @@ bkw params else- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*> validateIdentSyntax name <*>- checkTy a mty <*>+ checkTy (getAnn a) mty <*> go (_identValue name:names) (HaveSeenStarArg True)@@ -1227,9 +1278,9 @@ | otherwise = if b then- errorVM1 (_ManyStarredParams # a) <*>+ errorVM1 (_ManyStarredParams # getAnn a) <*> validateIdentSyntax name *>- checkTy a mty *>+ checkTy (getAnn a) mty *> go (_identValue name:names) (HaveSeenStarArg True)@@ -1238,7 +1289,7 @@ params else validateIdentSyntax name *>- checkTy a mty *>+ checkTy (getAnn a) mty *> go (_identValue name:names) (HaveSeenStarArg True)@@ -1248,18 +1299,18 @@ go names (HaveSeenStarArg b) _ bkw (UnnamedStarParam a _ : params) = if b then- errorVM1 (_ManyStarredParams # a) <*>+ errorVM1 (_ManyStarredParams # getAnn a) <*> go names (HaveSeenStarArg True)- (HaveSeenEmptyStarArg $ Just a)+ (HaveSeenEmptyStarArg $ Just $ getAnn a) bkw params else go names (HaveSeenStarArg True)- (HaveSeenEmptyStarArg $ Just a)+ (HaveSeenEmptyStarArg $ Just $ getAnn a) bkw params go names bsa besa bkw@(HaveSeenKeywordArg True) (PositionalParam a name mty : params) =@@ -1267,22 +1318,22 @@ name' = _identValue name errs = foldr (<|)- (_PositionalAfterKeywordParam # (a, name') :| [])- [_DuplicateArgument # (a, name') | name' `elem` names]+ (_PositionalAfterKeywordParam # (getAnn a, name') :| [])+ [_DuplicateArgument # (getAnn a, name') | name' `elem` names] in errorVM errs <*>- checkTy a mty <*>+ checkTy (getAnn a) mty <*> go (name':names) bsa besa bkw params go names bsa _ _ (KeywordParam a name mty ws2 expr : params) | _identValue name `elem` names =- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>- checkTy a mty <*>+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*>+ checkTy (getAnn a) mty <*> go names bsa (HaveSeenEmptyStarArg Nothing) (HaveSeenKeywordArg True) params | otherwise = liftA2 (:) (KeywordParam a <$> validateIdentSyntax name <*>- checkTy a mty <*>+ checkTy (getAnn a) mty <*> pure ws2 <*> validateExprSyntax expr) (go@@ -1293,21 +1344,21 @@ params) go names bsa besa bkw [DoubleStarParam a ws name mty] | _identValue name `elem` names =- errorVM1 (_DuplicateArgument # (a, _identValue name)) <*>- checkTy a mty <*+ errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) <*>+ checkTy (getAnn a) mty <* go names bsa besa bkw [] | otherwise = fmap pure $ DoubleStarParam a ws <$> validateIdentSyntax name <*>- checkTy a mty <*+ checkTy (getAnn a) mty <* go names bsa besa bkw [] go names bsa besa bkw (DoubleStarParam a _ name mty : _) = (if _identValue name `elem` names- then errorVM1 (_DuplicateArgument # (a, _identValue name))+ then errorVM1 (_DuplicateArgument # (getAnn a, _identValue name)) else pure ()) *>- errorVM1 (_UnexpectedDoubleStarParam # (a, _identValue name)) <*>- checkTy a mty <*+ errorVM1 (_UnexpectedDoubleStarParam # (getAnn a, _identValue name)) <*>+ checkTy (getAnn a) mty <* go names bsa besa bkw [] validateModuleSyntax
test/DSL.hs view
@@ -10,6 +10,7 @@ import Language.Python.DSL import Language.Python.Optics import Language.Python.Render (showExpr)+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep (CommaSep(..)) import Language.Python.Syntax.Punctuation (Comma(..)) import Language.Python.Syntax.Whitespace (Whitespace(..), Indents(..))@@ -254,7 +255,7 @@ let st = def_ "a" [] [line_ pass_] - st ^? _Fundef.fdIndents === Just (Indents [] ())+ st ^? _Fundef.fdIndents === Just (Indents [] (Ann ())) over (_Fundef.body_) id st === st prop_body_2 :: Property
test/LexerParser.hs view
@@ -9,6 +9,7 @@ import Language.Python.DSL import Language.Python.Render import Language.Python.Parse (parseModule, parseStatement, parseExpr, parseExprList)+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep (CommaSep(..), Comma(..)) import Language.Python.Syntax.Expr (Expr(..)) import Language.Python.Syntax.Strings@@ -288,9 +289,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawBytesLiteral ()+ RawBytesLiteral (Ann ()) Prefix_br LongString SingleQuote@@ -306,9 +307,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r LongString SingleQuote@@ -324,9 +325,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r ShortString DoubleQuote@@ -342,9 +343,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r ShortString DoubleQuote@@ -360,9 +361,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r ShortString DoubleQuote@@ -385,9 +386,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r LongString DoubleQuote@@ -403,9 +404,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r LongString DoubleQuote@@ -421,9 +422,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r LongString DoubleQuote@@ -439,9 +440,9 @@ withTests 1 . property $ do let str = showExpr $- String ()+ String (Ann ()) (pure $- RawStringLiteral ()+ RawStringLiteral (Ann ()) Prefix_r LongString DoubleQuote@@ -460,8 +461,8 @@ withTests 1 . property $ do let str = showExpr $- String ()- (RawStringLiteral ()+ String (Ann ())+ (RawStringLiteral (Ann ()) Prefix_r LongString SingleQuote@@ -484,8 +485,8 @@ withTests 1 . property $ do let str = showExpr $- String ()- (RawStringLiteral ()+ String (Ann ())+ (RawStringLiteral (Ann ()) Prefix_r LongString SingleQuote@@ -530,10 +531,10 @@ let e = Yield- { _unsafeExprAnn = ()+ { _unsafeExprAnn = Ann () , _unsafeYieldWhitespace = [Space] , _unsafeYieldValue =- CommaSepMany (Ident (MkIdent () "a" [])) (MkComma [Space]) $+ CommaSepMany (Ident (Ann ()) (MkIdent (Ann ()) "a" [])) (MkComma [Space]) $ CommaSepMany (tuple_ [ti_ $ var_ "b"]) (MkComma []) $ CommaSepNone }
test/Optics.hs view
@@ -4,15 +4,16 @@ import Hedgehog import Control.Lens.Plated (transformOn)-import Control.Lens.Setter ((.~))+import Control.Lens.Setter ((.~), (<>~)) import Control.Monad.IO.Class (liftIO)+import Data.Function ((&))+ import qualified Data.Text.IO as Text import Language.Python.Parse (parseModule) import Language.Python.Render (showModule)-import Language.Python.Syntax.Statement (_Statements)-import Language.Python.Syntax.Whitespace (Whitespace (..))-import Language.Python.Optics (_Indent)+import Language.Python.Syntax+import Language.Python.Optics import Helpers (shouldBeParseSuccess) @@ -41,3 +42,24 @@ str' <- liftIO $ Text.readFile "test/files/indent_optics_out2.py" showModule (transformOn _Statements (_Indent .~ [Space, Space, Space, Space]) tree) === str'++prop_optics_3 :: Property+prop_optics_3 =+ withTests 1 . property $ do+ str <- liftIO $ Text.readFile "test/files/exprs_optics_in1.py"++ tree <- shouldBeParseSuccess parseModule str++ str' <- liftIO $ Text.readFile "test/files/exprs_optics_out1.py"+ showModule+ (transformOn (_Statements._Exprs) (_Ident.identValue <>~ "_") tree) === str'++prop_optics_4 :: Property+prop_optics_4 =+ withTests 1 . property $ do+ str <- liftIO $ Text.readFile "test/files/idents_optics_in1.py"++ tree <- shouldBeParseSuccess parseModule str++ str' <- liftIO $ Text.readFile "test/files/idents_optics_out1.py"+ showModule (tree & _Idents.identValue .~ "b") === str'
test/Scope.hs view
@@ -12,6 +12,7 @@ import Language.Python.Validate import Language.Python.DSL import Language.Python.Optics+import Language.Python.Syntax.Ann import Language.Python.Syntax.Whitespace scopeTests :: Group@@ -46,7 +47,7 @@ , line_ . return_ $ var_ "a" .+ var_ "b" .+ var_ "c" ] res <- fullyValidate expr- res === Failure (FoundDynamic () (MkIdent () "c" []) :| [])+ res === Failure (FoundDynamic () (MkIdent (Ann ()) "c" []) :| []) prop_scope_2 :: Property prop_scope_2 =@@ -73,7 +74,7 @@ [ line_ . return_ $ var_ "a" .+ var_ "b" .+ var_ "c" ] res <- fullyValidate expr annotateShow res- res === Failure (NotInScope (MkIdent () "c" []) :| [])+ res === Failure (NotInScope (MkIdent (Ann ()) "c" []) :| []) prop_scope_4 :: Property prop_scope_4 =@@ -86,7 +87,7 @@ , line_ $ call_ (var_ "g") [] ] res <- fullyValidate expr- res === Failure (NotInScope (MkIdent () "g" []) :| [])+ res === Failure (NotInScope (MkIdent (Ann ()) "g" []) :| []) prop_scope_5 :: Property prop_scope_5 =@@ -99,7 +100,7 @@ ] res <- fullyValidate expr annotateShow res- res === Failure (NotInScope (MkIdent () "c" []) :| [])+ res === Failure (NotInScope (MkIdent (Ann ()) "c" []) :| []) prop_scope_6 :: Property prop_scope_6 =@@ -115,7 +116,7 @@ ] res <- fullyValidate expr annotateShow res- res === Failure (FoundDynamic () (MkIdent () "x" []) :| [])+ res === Failure (FoundDynamic () (MkIdent (Ann ()) "x" []) :| []) prop_scope_7 :: Property prop_scope_7 =@@ -131,7 +132,7 @@ ] res <- fullyValidate expr annotateShow res- res === Failure (FoundDynamic () (MkIdent () "x" []) :| [])+ res === Failure (FoundDynamic () (MkIdent (Ann ()) "x" []) :| []) prop_scope_8 :: Property prop_scope_8 =@@ -162,7 +163,7 @@ ] res <- fullyValidate expr annotateShow res- res === Failure (FoundDynamic () (MkIdent () "x" []) :| [])+ res === Failure (FoundDynamic () (MkIdent (Ann ()) "x" []) :| []) prop_scope_10 :: Property prop_scope_10 =@@ -189,4 +190,4 @@ ] res <- fullyValidate st annotateShow res- res === Failure (BadShadowing (MkIdent () "x" [Space]) :| [])+ res === Failure (BadShadowing (MkIdent (Ann ()) "x" [Space]) :| [])
test/Syntax.hs view
@@ -13,6 +13,7 @@ import Language.Python.Optics import Language.Python.Parse (parseModule, parseStatement, parseExpr) import Language.Python.Render (showStatement, showExpr)+import Language.Python.Syntax.Ann import Language.Python.Syntax.CommaSep import Language.Python.Syntax.Expr import Language.Python.Syntax.Punctuation@@ -34,11 +35,11 @@ let e = -- lambda *: None- Lambda ()+ Lambda (Ann ()) [Space]- (CommaSepMany (UnnamedStarParam () []) (MkComma []) CommaSepNone)+ (CommaSepMany (UnnamedStarParam (Ann ()) []) (MkComma []) CommaSepNone) (MkColon [Space])- (None () [])+ (None (Ann ()) []) res <- syntaxValidateExpr e shouldBeFailure res @@ -50,18 +51,18 @@ e :: Statement '[] () e = CompoundStatement .- Fundef () []- (Indents mempty ())+ Fundef (Ann ()) []+ (Indents mempty (Ann ())) Nothing (pure Space) "test" [] CommaSepNone [] Nothing .- SuiteMany () (MkColon []) Nothing LF $+ SuiteMany (Ann ()) (MkColon []) Nothing LF $ Block []- (SmallStatement (Indents [i] ()) $- MkSmallStatement (Pass () []) [] Nothing Nothing Nothing)- [Right . SmallStatement (Indents [i] ()) $- MkSmallStatement (Pass () []) [] Nothing Nothing Nothing]+ (SmallStatement (Indents [i] (Ann ())) $+ MkSmallStatement (Pass (Ann ()) []) [] Nothing Nothing Nothing)+ [Right . SmallStatement (Indents [i] (Ann ())) $+ MkSmallStatement (Pass (Ann ()) []) [] Nothing Nothing Nothing] res <- shouldBeParseSuccess parseStatement (showStatement e) res' <- shouldBeParseSuccess parseStatement (showStatement res) void res === void res'@@ -80,8 +81,8 @@ let e :: Expr '[] () e =- String () . pure $- StringLiteral ()+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing ShortString SingleQuote [Char_lit '\\', Char_lit 'u']@@ -96,8 +97,8 @@ let e :: Expr '[] () e =- String () . pure $- StringLiteral ()+ String (Ann ()) . pure $+ StringLiteral (Ann ()) Nothing ShortString SingleQuote [Char_lit '\\', Char_lit 'x']
+ test/files/exprs_optics_in1.py view
@@ -0,0 +1,3 @@+for a, b in c:+ a += 1+ b += 2
+ test/files/exprs_optics_out1.py view
@@ -0,0 +1,3 @@+for a_, b_ in c_:+ a_ += 1+ b_ += 2
+ test/files/idents_optics_in1.py view
@@ -0,0 +1,3 @@+def a(a, a, *a, **a):+ a += a[a(a,a), a]+ return a
+ test/files/idents_optics_out1.py view
@@ -0,0 +1,3 @@+def b(b, b, *b, **b):+ b += b[b(b,b), b]+ return b