From 7bf9c6de9cbccb5daf794415b6ab0fcabcae2782 Mon Sep 17 00:00:00 2001 From: Rick Winfrey Date: Tue, 21 Nov 2017 12:15:48 -0800 Subject: [PATCH] Rearranging --- src/Data/Syntax/Type.hs | 7 ++++ src/Language/Go/Assignment.hs | 24 +++++------ src/Language/Go/Syntax.hs | 75 ++++++++++++++++------------------- 3 files changed, 53 insertions(+), 53 deletions(-) diff --git a/src/Data/Syntax/Type.hs b/src/Data/Syntax/Type.hs index b6fb31ad9..5582008d4 100644 --- a/src/Data/Syntax/Type.hs +++ b/src/Data/Syntax/Type.hs @@ -65,6 +65,13 @@ instance Eq1 Map where liftEq = genericLiftEq instance Ord1 Map where liftCompare = genericLiftCompare instance Show1 Map where liftShowsPrec = genericLiftShowsPrec +newtype Parenthesized a = Parenthesized { parenthesizedType :: a } + deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) + +instance Eq1 Parenthesized where liftEq = genericLiftEq +instance Ord1 Parenthesized where liftCompare = genericLiftCompare +instance Show1 Parenthesized where liftShowsPrec = genericLiftShowsPrec + newtype Pointer a = Pointer { pointerType :: a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) diff --git a/src/Language/Go/Assignment.hs b/src/Language/Go/Assignment.hs index 710a60f3c..a3bd369ce 100644 --- a/src/Language/Go/Assignment.hs +++ b/src/Language/Go/Assignment.hs @@ -46,9 +46,8 @@ type Syntax = , Go.Syntax.Field , Go.Syntax.Go , Go.Syntax.Label - , Go.Syntax.ParenthesizedType , Go.Syntax.Receive - , Go.Syntax.RuneLiteral + , Go.Syntax.Rune , Go.Syntax.Select , Go.Syntax.Send , Go.Syntax.Slice @@ -91,6 +90,7 @@ type Syntax = , Type.Function , Type.Interface , Type.Map + , Type.Parenthesized , Type.Pointer , Type.ReceiveChannel , Type.SendChannel @@ -152,8 +152,8 @@ expressionChoices = , interpretedStringLiteral , intLiteral , keyedElement - , labelName' - , labeledStatement' + , labelName + , labeledStatement , literalValue , methodDeclaration , methodSpec @@ -248,13 +248,13 @@ packageIdentifier :: Assignment packageIdentifier = makeTerm <$> symbol PackageIdentifier <*> (Syntax.Identifier <$> source) parenthesizedType :: Assignment -parenthesizedType = makeTerm <$> symbol Grammar.ParenthesizedType <*> children (Go.Syntax.ParenthesizedType <$> expression) +parenthesizedType = makeTerm <$> symbol Grammar.ParenthesizedType <*> children (Type.Parenthesized <$> expression) rawStringLiteral :: Assignment rawStringLiteral = makeTerm <$> symbol RawStringLiteral <*> (Literal.TextElement <$> source) runeLiteral :: Assignment -runeLiteral = makeTerm <$> symbol Grammar.RuneLiteral <*> (Go.Syntax.RuneLiteral <$> source) +runeLiteral = makeTerm <$> symbol Grammar.RuneLiteral <*> (Go.Syntax.Rune <$> source) typeIdentifier :: Assignment typeIdentifier = makeTerm <$> symbol TypeIdentifier <*> (Syntax.Identifier <$> source) @@ -535,7 +535,7 @@ assignment' = makeTerm' <$> symbol AssignmentStatement <*> children (infixTerm invert cons a b = Expression.Not (makeTerm1 (cons a b)) breakStatement :: Assignment -breakStatement = makeTerm <$> symbol BreakStatement <*> children (Statement.Break <$> (labelName' <|> emptyTerm)) +breakStatement = makeTerm <$> symbol BreakStatement <*> children (Statement.Break <$> (labelName <|> emptyTerm)) communicationClause :: Assignment communicationClause = makeTerm <$> symbol CommunicationClause <*> children (Statement.Pattern <$> (communicationCase <|> defaultCase) <*> expressions) @@ -543,7 +543,7 @@ communicationClause = makeTerm <$> symbol CommunicationClause <*> children (Stat communicationCase = symbol CommunicationCase *> children expression continueStatement :: Assignment -continueStatement = makeTerm <$> symbol ContinueStatement <*> children (Statement.Continue <$> (labelName' <|> emptyTerm)) +continueStatement = makeTerm <$> symbol ContinueStatement <*> children (Statement.Continue <$> (labelName <|> emptyTerm)) decStatement :: Assignment decStatement = makeTerm <$> symbol DecStatement <*> children (Statement.PostDecrement <$> expression) @@ -590,11 +590,11 @@ incStatement = makeTerm <$> symbol IncStatement <*> children (Statement.PostIncr keyedElement :: Assignment keyedElement = makeTerm <$> symbol KeyedElement <*> children (Literal.KeyValue <$> expression <*> expression) -labelName' :: Assignment -labelName' = makeTerm <$> symbol LabelName <*> (Syntax.Identifier <$> source) +labelName :: Assignment +labelName = makeTerm <$> symbol LabelName <*> (Syntax.Identifier <$> source) -labeledStatement' :: Assignment -labeledStatement' = makeTerm <$> (symbol LabeledStatement <|> symbol LabeledStatement') <*> children (Go.Syntax.Label <$> expression <*> (expression <|> emptyTerm)) +labeledStatement :: Assignment +labeledStatement = makeTerm <$> (symbol LabeledStatement <|> symbol LabeledStatement') <*> children (Go.Syntax.Label <$> expression <*> (expression <|> emptyTerm)) returnStatement :: Assignment returnStatement = makeTerm <$> symbol ReturnStatement <*> children (Statement.Return <$> (expression <|> emptyTerm)) diff --git a/src/Language/Go/Syntax.hs b/src/Language/Go/Syntax.hs index a320a8e78..b19deae78 100644 --- a/src/Language/Go/Syntax.hs +++ b/src/Language/Go/Syntax.hs @@ -10,14 +10,6 @@ import Data.Functor.Classes.Show.Generic import Data.Mergeable import GHC.Generics --- | Variadic arguments and parameters in Go (e.g. parameter: `param ...Type`, argument: `Type...`). -data Variadic a = Variadic { variadicContext :: [a], variadicIdentifier :: a } - deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) - -instance Eq1 Variadic where liftEq = genericLiftEq -instance Ord1 Variadic where liftCompare = genericLiftCompare -instance Show1 Variadic where liftShowsPrec = genericLiftShowsPrec - -- | A default pattern in a Go select or switch statement (e.g. `switch { default: s() }`). newtype DefaultPattern a = DefaultPattern { defaultPatternBody :: a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) @@ -26,30 +18,6 @@ instance Eq1 DefaultPattern where liftEq = genericLiftEq instance Ord1 DefaultPattern where liftCompare = genericLiftCompare instance Show1 DefaultPattern where liftShowsPrec = genericLiftShowsPrec --- | A rune literal in Go (e.g. `'⌘'`). -newtype RuneLiteral a = RuneLiteral { runeLiteralContent :: ByteString } - deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) - -instance Eq1 RuneLiteral where liftEq = genericLiftEq -instance Ord1 RuneLiteral where liftCompare = genericLiftCompare -instance Show1 RuneLiteral where liftShowsPrec = genericLiftShowsPrec - --- | A label statement in Go (e.g. `label:continue`). -data Label a = Label { labelName :: !a, labelStatement :: !a } - deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) - -instance Eq1 Label where liftEq = genericLiftEq -instance Ord1 Label where liftCompare = genericLiftCompare -instance Show1 Label where liftShowsPrec = genericLiftShowsPrec - --- | A send statement in Go (e.g. `channel <- value`). -data Send a = Send { sendReceiver :: !a, sendValue :: !a } - deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) - -instance Eq1 Send where liftEq = genericLiftEq -instance Ord1 Send where liftCompare = genericLiftCompare -instance Show1 Send where liftShowsPrec = genericLiftShowsPrec - -- | A defer statement in Go (e.g. `defer x()`). newtype Defer a = Defer { deferBody :: a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) @@ -66,13 +34,21 @@ instance Eq1 Go where liftEq = genericLiftEq instance Ord1 Go where liftCompare = genericLiftCompare instance Show1 Go where liftShowsPrec = genericLiftShowsPrec --- | A slice expression in Go (e.g. `a[1:4:3]` where a is a list, 1 is the low bound, 4 is the high bound, and 3 is the max capacity). -data Slice a = Slice { sliceName :: !a, sliceLow :: !a, sliceHigh :: !a, sliceCapacity :: !a } +-- | A label statement in Go (e.g. `label:continue`). +data Label a = Label { _labelName :: !a, labelStatement :: !a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) -instance Eq1 Slice where liftEq = genericLiftEq -instance Ord1 Slice where liftCompare = genericLiftCompare -instance Show1 Slice where liftShowsPrec = genericLiftShowsPrec +instance Eq1 Label where liftEq = genericLiftEq +instance Ord1 Label where liftCompare = genericLiftCompare +instance Show1 Label where liftShowsPrec = genericLiftShowsPrec + +-- | A rune literal in Go (e.g. `'⌘'`). +newtype Rune a = Rune { _runeLiteral :: ByteString } + deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) + +instance Eq1 Rune where liftEq = genericLiftEq +instance Ord1 Rune where liftCompare = genericLiftCompare +instance Show1 Rune where liftShowsPrec = genericLiftShowsPrec -- | A select statement in Go (e.g. `select { case x := <-c: x() }` where each case is a send or receive operation on channels). data Select a = Select { selectCases :: !a } @@ -82,6 +58,22 @@ instance Eq1 Select where liftEq = genericLiftEq instance Ord1 Select where liftCompare = genericLiftCompare instance Show1 Select where liftShowsPrec = genericLiftShowsPrec +-- | A send statement in Go (e.g. `channel <- value`). +data Send a = Send { sendReceiver :: !a, sendValue :: !a } + deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) + +instance Eq1 Send where liftEq = genericLiftEq +instance Ord1 Send where liftCompare = genericLiftCompare +instance Show1 Send where liftShowsPrec = genericLiftShowsPrec + +-- | A slice expression in Go (e.g. `a[1:4:3]` where a is a list, 1 is the low bound, 4 is the high bound, and 3 is the max capacity). +data Slice a = Slice { sliceName :: !a, sliceLow :: !a, sliceHigh :: !a, sliceCapacity :: !a } + deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) + +instance Eq1 Slice where liftEq = genericLiftEq +instance Ord1 Slice where liftCompare = genericLiftCompare +instance Show1 Slice where liftShowsPrec = genericLiftShowsPrec + -- | A type switch statement in Go (e.g. `switch x.(type) { // cases }`). data TypeSwitch a = TypeSwitch { typeSwitchSubject :: !a, typeSwitchCases :: !a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) @@ -129,9 +121,10 @@ instance Eq1 TypeConversion where liftEq = genericLiftEq instance Ord1 TypeConversion where liftCompare = genericLiftCompare instance Show1 TypeConversion where liftShowsPrec = genericLiftShowsPrec -newtype ParenthesizedType a = ParenthesizedType a +-- | Variadic arguments and parameters in Go (e.g. parameter: `param ...Type`, argument: `Type...`). +data Variadic a = Variadic { variadicContext :: [a], variadicIdentifier :: a } deriving (Diffable, Eq, Foldable, Functor, GAlign, Generic1, Mergeable, Ord, Show, Traversable) -instance Eq1 ParenthesizedType where liftEq = genericLiftEq -instance Ord1 ParenthesizedType where liftCompare = genericLiftCompare -instance Show1 ParenthesizedType where liftShowsPrec = genericLiftShowsPrec +instance Eq1 Variadic where liftEq = genericLiftEq +instance Ord1 Variadic where liftCompare = genericLiftCompare +instance Show1 Variadic where liftShowsPrec = genericLiftShowsPrec