on master help sign in
Merge remote-tracking branch 'evan/dev' into webgl
commit9843312b5c0f82dcce4e970367f7691d51c588d5 authorJohn P Mayer Jr <john.p.mayer.jr@gmail.com> dateSat 8 Feb 2014, 13:45 (13 years ago) parentf530040f51ddf9
6 files changed+49−19
Elm.cabal+3−3 compiler/Generate/JavaScript/Ports.hs+1−1 compiler/Parse/Expression.hs+2−2 compiler/Parse/Helpers.hs+6−6 compiler/SourceSyntax/Module.hs+31−1 libraries/Native/Bitwise.js+6−6
Elm.cabal+3−3
@@ -97,7 +97,7 @@ Library
9797 Build-depends: aeson,
9898 base >=4.2 && <5,
9999 binary >= 0.6.4.0,
100− blaze-html == 0.5.* || == 0.6.*,
100+ blaze-html >= 0.5 && < 0.8,
101101 blaze-markup,
102102 bytestring,
103103 cmdargs,
@@ -180,8 +180,8 @@ Executable elm
180180 Build-depends: aeson,
181181 base >=4.2 && <5,
182182 binary >= 0.6.4.0,
183− blaze-html == 0.5.* || == 0.6.*,
184− blaze-markup == 0.5.1.*,
183+ blaze-html >= 0.5 && < 0.8,
184+ blaze-markup,
185185 bytestring,
186186 cmdargs,
187187 containers >= 0.3,
compiler/Generate/JavaScript/Ports.hs+1−1
@@ -109,7 +109,7 @@ out tipe x =
109109 | ctor == "Maybe.Maybe" ->
110110 CondExpr () (equal (DotRef () x (var "ctor")) (string "Nothing"))
111111 (NullLit ())
112− (DotRef () x (var "_0"))
112+ (out t (DotRef () x (var "_0")))
113113
114114 | ctor == "_List" ->
115115 DotRef () (obj "_J.fromList" <| x) (var "map") <| outgoing t
compiler/Parse/Expression.hs+2−2
@@ -66,11 +66,11 @@ listTerm = markdown' <|> glShader' <|> braces (try range <|> ExplicitList <$> co
6666 span uid index =
6767 "<span id=\"md-" ++ uid ++ "-" ++ show index ++ "\">{{ markdown interpolation is in the pipeline, but still needs more testing }}</span>"
6868
69− interpolation uid md exprs = do
69+ interpolation uid exprs = do
7070 try (string "{{")
7171 e <- padded expr
7272 string "}}"
73− return (md ++ span uid (length exprs), exprs ++ [e])
73+ return (span uid (length exprs), exprs ++ [e])
7474
7575parensTerm :: IParser LParseExpr
7676parensTerm = try (parens opFn) <|> parens (tupleFn <|> parened)
compiler/Parse/Helpers.hs+6−6
@@ -271,7 +271,7 @@ ignoreUntil end = go
271271 ignore p = const () <$> p
272272 filler = choice [ try (ignore chr) <|> ignore str
273273 , ignore multiComment
274− , ignore (markdown (\_ _ -> mzero))
274+ , ignore (markdown (\_ -> mzero))
275275 , ignore anyChar
276276 ]
277277 go = choice [ Just <$> end
@@ -304,15 +304,15 @@ anyUntilPos pos = go
304304 True -> return []
305305 False -> (:) <$> anyChar <*> go
306306
307−markdown :: (String -> [a] -> IParser (String, [a])) -> IParser (String, [a])
308−markdown interpolation = try (string "[markdown|") >> closeMarkdown "" []
307+markdown :: ([a] -> IParser (String, [a])) -> IParser (String, [a])
308+markdown interpolation = try (string "[markdown|") >> closeMarkdown (++ "") []
309309 where
310310 closeMarkdown md stuff =
311311 choice [ do try (string "|]")
312− return (md, stuff)
313− , uncurry closeMarkdown =<< interpolation md stuff
312+ return (md "", stuff)
313+ , (\(m,s) -> closeMarkdown (md . (m ++)) s) =<< interpolation stuff
314314 , do c <- anyChar
315− closeMarkdown (md ++ [c]) stuff
315+ closeMarkdown (md . ([c]++)) stuff
316316 ]
317317
318318glShader :: IParser (String, Literal.GLShaderTipe)
compiler/SourceSyntax/Module.hs+31−1
@@ -1,12 +1,15 @@
1−{-# OPTIONS_GHC -Wall #-}
1+{-# OPTIONS_GHC -W #-}
22module SourceSyntax.Module where
33
44import Data.Binary
5+import qualified Data.List as List
56import qualified Data.Map as Map
67import Control.Applicative ((<$>), (<*>))
8+import Text.PrettyPrint as P
79
810import SourceSyntax.Expression (LExpr)
911import SourceSyntax.Declaration
12+import SourceSyntax.PrettyPrint
1013import SourceSyntax.Type
1114
1215import qualified Elm.Internal.Version as Version
@@ -21,6 +24,33 @@ type Imports = [(String, ImportMethod)]
2124data ImportMethod = As String | Importing [String] | Hiding [String]
2225 deriving (Eq, Ord, Show)
2326
27+instance (Pretty def) => Pretty (Module def) where
28+ pretty (Module modNames exports imports decls) =
29+ P.vcat [modul, P.text "", prettyImports, P.text "", prettyDecls]
30+ where
31+ prettyDecls = P.sep $ map pretty decls
32+
33+ modul = P.text "module" <+> moduleName <+> where'
34+ moduleName = P.text $ List.intercalate "." modNames
35+ where' =
36+ case exports of
37+ [] -> P.text "where"
38+ _ -> P.parens (commaCat $ map P.text exports) <+> P.text "where"
39+
40+ prettyImports = P.vcat $ map prettyImport imports
41+
42+ prettyImport (name, method) =
43+ P.text "import" <+>
44+ case method of
45+ As alias ->
46+ P.text $ name ++ (if name == alias then "" else " as " ++ alias)
47+
48+ Importing values ->
49+ P.text name <+> P.parens (commaCat (map P.text values))
50+
51+ Hiding [] -> P.text ("open " ++ name)
52+ Hiding _ -> error "invalid import declaration"
53+
2454instance Binary ImportMethod where
2555 put method =
2656 let put' n info = putWord8 n >> put info in
libraries/Native/Bitwise.js+6−6
@@ -13,13 +13,13 @@ Elm.Native.Bitwise.make = function(elm) {
1313 function srl(a,offset) { return a >>> offset; }
1414
1515 return elm.Native.Bitwise.values = {
16− and: A2(and),
17− or : A2(or ),
18− xor: A2(xor),
16+ and: F2(and),
17+ or : F2(or ),
18+ xor: F2(xor),
1919 complement: not,
20− shiftLeft : A2(sll),
21− shiftRightArithmatic: A2(sra),
22− shiftRightLogical : A2(srl),
20+ shiftLeft : F2(sll),
21+ shiftRightArithmatic: F2(sra),
22+ shiftRightLogical : F2(srl),
2323 };
2424
2525};