on master help sign in
Remove [1..5] syntax in favor of List.range
0d2c5a2Evan Czaplicki
src/AST/Expression/General.hs−1
@@ -42,7 +42,6 @@ type Expr annotation definition variable tipe =
42data Expr' ann def var typ
42data Expr' ann def var typ
43 = Literal Literal.Literal
43 = Literal Literal.Literal
44 | Var var
44 | Var var
45− | Range (Expr ann def var typ) (Expr ann def var typ)
46 | ExplicitList [Expr ann def var typ]
45 | ExplicitList [Expr ann def var typ]
47 | Binop var (Expr ann def var typ) (Expr ann def var typ)
46 | Binop var (Expr ann def var typ) (Expr ann def var typ)
48 | Lambda (Pattern.Pattern ann var) (Expr ann def var typ)
47 | Lambda (Pattern.Pattern ann var) (Expr ann def var typ)
src/AST/Expression/Optimized.hs−1
@@ -38,7 +38,6 @@ dummyFacts =
38data Expr
38data Expr
39 = Literal Literal.Literal
39 = Literal Literal.Literal
40 | Var Var.Canonical
40 | Var Var.Canonical
41− | Range Expr Expr
42 | ExplicitList [Expr]
41 | ExplicitList [Expr]
43 | Binop Var.Canonical Expr Expr
42 | Binop Var.Canonical Expr Expr
44 | Function [String] Expr
43 | Function [String] Expr
src/Canonicalize.hs−3
@@ -366,9 +366,6 @@ canonicalizeExpr env (A.A region validExpr) =
366 Literal lit ->
366 Literal lit ->
367 Result.ok (Literal lit)
367 Result.ok (Literal lit)
368
368
369− Range lowExpr highExpr ->
370− Range <$> go lowExpr <*> go highExpr
371−
372 Access record field ->
369 Access record field ->
373 Access <$> go record <*> Result.ok field
370 Access <$> go record <*> Result.ok field
374
371
src/Canonicalize/Sort.hs−3
@@ -68,9 +68,6 @@ reorder (A.A ann expression) =
68 Literal _ ->
68 Literal _ ->
69 return expression
69 return expression
70
70
71− Range lowExpr highExpr ->
72− Range <$> reorder lowExpr <*> reorder highExpr
73−
74 ExplicitList es ->
71 ExplicitList es ->
75 ExplicitList <$> mapM reorder es
72 ExplicitList <$> mapM reorder es
76
73
src/Generate/JavaScript/BuiltIn.hs+1−6
@@ -1,6 +1,6 @@
1module Generate.JavaScript.BuiltIn
1module Generate.JavaScript.BuiltIn
2 ( character, string
2 ( character, string
3− , list, range
3+ , list
4 , recordUpdate
4 , recordUpdate
5 , eq, cmp
5 , eq, cmp
6 , effect, outgoingPort, incomingPort
6 , effect, outgoingPort, incomingPort
@@ -50,11 +50,6 @@ list elements =
50 nativeList "fromArray" [ JS.ArrayLit () elements ]
50 nativeList "fromArray" [ JS.ArrayLit () elements ]
51
51
52
52
53−range :: JS.Expression () -> JS.Expression () -> JS.Expression ()
54−range low high =
55− nativeList "range" [ low, high ]
56−
57−
58
53
59-- RECORDS
54-- RECORDS
60
55
src/Generate/JavaScript/Expression.hs−5
@@ -114,11 +114,6 @@ generateCode expr =
114 Literal lit ->
114 Literal lit ->
115 jsExpr (Literal.literal lit)
115 jsExpr (Literal.literal lit)
116
116
117− Range lo hi ->
118− do lo' <- generateJsExpr lo
119− hi' <- generateJsExpr hi
120− jsExpr $ BuiltIn.range lo' hi'
121−
122 Access record field ->
117 Access record field ->
123 do record' <- generateJsExpr record
118 do record' <- generateJsExpr record
124 jsExpr $ DotRef () record' (var (Var.safe field))
119 jsExpr $ DotRef () record' (var (Var.safe field))
src/Nitpick/PatternMatches.hs−3
@@ -135,9 +135,6 @@ checkExpression tagDict (A.A region expression) =
135 E.Var _ ->
135 E.Var _ ->
136 Result.ok ()
136 Result.ok ()
137
137
138− E.Range low high ->
139− go2 low high
140−
141 E.ExplicitList listExprs ->
138 E.ExplicitList listExprs ->
142 F.traverse_ go listExprs
139 F.traverse_ go listExprs
143
140
src/Optimize.hs−5
@@ -206,11 +206,6 @@ optimizeExpr context annExpr@(A.A region expression) =
206 else
206 else
207 pure (Opt.Var name)
207 pure (Opt.Var name)
208
208
209− Expr.Range lowExpr highExpr ->
210− Opt.Range
211− <$> justConvert lowExpr
212− <*> justConvert highExpr
213−
214 Expr.ExplicitList elements ->
209 Expr.ExplicitList elements ->
215 Opt.ExplicitList
210 Opt.ExplicitList
216 <$> T.traverse justConvert elements
211 <$> T.traverse justConvert elements
src/Optimize/Inline.hs−6
@@ -100,9 +100,6 @@ count expression =
100 Var.TopLevel _ ->
100 Var.TopLevel _ ->
101 Map.empty
101 Map.empty
102
102
103− Range lo hi ->
104− count2 lo hi
105−
106 ExplicitList exprs ->
103 ExplicitList exprs ->
107 countMany exprs
104 countMany exprs
108
105
@@ -210,9 +207,6 @@ replace substitutions expression =
210 Var _ ->
207 Var _ ->
211 expression
208 expression
212
209
213− Range lo hi ->
214− Range (go lo) (go hi)
215−
216 ExplicitList exprs ->
210 ExplicitList exprs ->
217 ExplicitList (map go exprs)
211 ExplicitList (map go exprs)
218
212
src/Parse/Binop.hs+1−1
@@ -22,7 +22,7 @@ infixOp :: IParser String
22infixOp =
22infixOp =
23 expecting "an infix operator like (+)" $
23 expecting "an infix operator like (+)" $
24 do op <- many1 (satisfy (\c -> Help.isSymbol c && c /= '`'))
24 do op <- many1 (satisfy (\c -> Help.isSymbol c && c /= '`'))
25− guard (op `notElem` [ "=", "..", "->", "--", "|", ":" ])
25+ guard (op `notElem` [ "=", "->", "--", "|", ":" ])
26 case op of
26 case op of
27 "." -> notFollowedBy lower >> return op
27 "." -> notFollowedBy lower >> return op
28 _ -> return op
28 _ -> return op
src/Parse/Expression.hs+1−6
@@ -79,13 +79,8 @@ negative =
79
79
80listTerm :: IParser Source.Expr'
80listTerm :: IParser Source.Expr'
81listTerm =
81listTerm =
82− shader' <|> braces (try range <|> E.ExplicitList <$> commaSep expr)
82+ shader' <|> braces (E.ExplicitList <$> commaSep expr)
83 where
83 where
84− range =
85− do lo <- expr
86− padded (string "..")
87− E.Range lo <$> expr
88−
89 shader' =
84 shader' =
90 do pos <- getPosition
85 do pos <- getPosition
91 let uid = show (sourceLine pos) ++ ":" ++ show (sourceColumn pos)
86 let uid = show (sourceLine pos) ++ ":" ++ show (sourceColumn pos)
src/Reporting/Error/Type.hs−11
@@ -70,7 +70,6 @@ data Hint
70 | Literal String
70 | Literal String
71 | Pattern Pattern
71 | Pattern Pattern
72 | Shader
72 | Shader
73− | Range
74 | Lambda
73 | Lambda
75 | Record
74 | Record
76 -- effect manager problems
75 -- effect manager problems
@@ -421,16 +420,6 @@ mismatchToReport localizer (MismatchInfo hint leftType rightType maybeReason) =
421 []
420 []
422 )
421 )
423
422
424− Range ->
425− report
426− Nothing
427− "The low and high members of this list range are not the same type of value."
428− ( cmpHint
429− "The low end of the range has type:"
430− "But the high end is:"
431− []
432− )
433−
434 Lambda ->
423 Lambda ->
435 report
424 report
436 Nothing
425 Nothing
src/Type/Constrain/Expression.hs−14
@@ -29,10 +29,6 @@ constrain
29 -> Type
29 -> Type
30 -> IO TypeConstraint
30 -> IO TypeConstraint
31constrain env annotatedExpr@(A.A region expression) tipe =
31constrain env annotatedExpr@(A.A region expression) tipe =
32− let
33− list t =
34− Env.getType env "List" <| t
35− in
36 case expression of
32 case expression of
37 E.Literal lit ->
33 E.Literal lit ->
38 Literal.constrain env region lit tipe
34 Literal.constrain env region lit tipe
@@ -82,16 +78,6 @@ constrain env annotatedExpr@(A.A region expression) tipe =
82 E.Var var ->
78 E.Var var ->
83 return (CInstance region (V.toString var) tipe)
79 return (CInstance region (V.toString var) tipe)
84
80
85− E.Range lowExpr highExpr ->
86− existsNumber $ \n ->
87− do lowCon <- constrain env lowExpr n
88− highCon <- constrain env highExpr n
89− return $ CAnd
90− [ lowCon
91− , highCon
92− , CEqual Error.Range region (list n) tipe
93− ]
94−
95 E.ExplicitList exprs ->
81 E.ExplicitList exprs ->
96 constrainList env region exprs tipe
82 constrainList env region exprs tipe
97
83
src/Validate.hs−5
@@ -486,11 +486,6 @@ expression (A.A ann sourceExpression) =
486 Literal lit ->
486 Literal lit ->
487 return (Literal lit)
487 return (Literal lit)
488
488
489− Range lowExpr highExpr ->
490− Range
491− <$> expression lowExpr
492− <*> expression highExpr
493−
494 ExplicitList expressions ->
489 ExplicitList expressions ->
495 ExplicitList
490 ExplicitList
496 <$> T.traverse expression expressions
491 <$> T.traverse expression expressions