git.iko.soy/rowtype-yoga/purescript-native
on golang help sign in
Solving CompareSymbol and AppendSymbol (#2511)
88fdceeLiam Goodacre
examples/passing/SolvingAppendSymbol.pursnew file+32
@@ -0,0 +1,32 @@
1+module Main where
2+
3+import Prelude
4+import Control.Monad.Eff.Console (log)
5+import Type.Data.Symbol (SProxy(..), class AppendSymbol, appendSymbol, reflectSymbol)
6+
7+sym :: SProxy ""
8+sym = SProxy
9+
10+symA :: SProxy "A"
11+symA = SProxy
12+
13+symB :: SProxy "B"
14+symB = SProxy
15+
16+egAB :: SProxy "AB"
17+egAB = appendSymbol symA symB
18+
19+egBA :: SProxy "BA"
20+egBA = appendSymbol symB symA
21+
22+egA' :: SProxy "A"
23+egA' = appendSymbol sym (appendSymbol symA sym)
24+
25+main = do
26+ let gotAB = reflectSymbol egAB == "AB"
27+ gotBA = reflectSymbol egBA == "BA"
28+ gotA' = reflectSymbol egA' == "A"
29+ when (not gotAB) $ log "Did not get AB"
30+ when (not gotBA) $ log "Did not get BA"
31+ when (not gotA') $ log "Did not get A"
32+ when (gotAB && gotBA && gotA') $ log "Done"
examples/passing/SolvingCompareSymbol.pursnew file+30
@@ -0,0 +1,30 @@
1+module Main where
2+
3+import Prelude
4+import Control.Monad.Eff.Console (log)
5+import Type.Data.Symbol (SProxy(..), class CompareSymbol, compareSymbol)
6+import Type.Data.Ordering (OProxy(..), kind Ordering, LT, EQ, GT, reflectOrdering)
7+
8+symA :: SProxy "A"
9+symA = SProxy
10+
11+symB :: SProxy "B"
12+symB = SProxy
13+
14+egLT :: OProxy LT
15+egLT = compareSymbol symA symB
16+
17+egEQ :: OProxy EQ
18+egEQ = compareSymbol symA symA
19+
20+egGT :: OProxy GT
21+egGT = compareSymbol symB symA
22+
23+main = do
24+ let gotLT = reflectOrdering egLT == LT
25+ gotEQ = reflectOrdering egEQ == EQ
26+ gotGT = reflectOrdering egGT == GT
27+ when (not gotLT) $ log "Did not get LT"
28+ when (not gotEQ) $ log "Did not get EQ"
29+ when (not gotGT) $ log "Did not get GT"
30+ when (gotLT && gotEQ && gotGT) $ log "Done"
src/Language/PureScript/Constants.hs+35−4
@@ -314,10 +314,38 @@ fromSpine = "fromSpine"
314toSignature :: Text
314toSignature :: Text
315toSignature = "toSignature"
315toSignature = "toSignature"
316
316
317−-- IsSymbol class
317+-- Data.Symbol
318+
319+pattern DataSymbol :: ModuleName
320+pattern DataSymbol = ModuleName [ProperName "Data", ProperName "Symbol"]
318
321
319pattern IsSymbol :: Qualified (ProperName 'ClassName)
322pattern IsSymbol :: Qualified (ProperName 'ClassName)
323+pattern IsSymbol = Qualified (Just DataSymbol) (ProperName "IsSymbol")
324+
325+-- Type.Data.Symbol
326+
327+pattern TypeDataSymbol :: ModuleName
320−pattern IsSymbol = Qualified (Just (ModuleName [ProperName "Data", ProperName "Symbol"])) (ProperName "IsSymbol")
328+pattern TypeDataSymbol = ModuleName [ProperName "Type", ProperName "Data", ProperName "Symbol"]
329+
330+pattern CompareSymbol :: Qualified (ProperName 'ClassName)
331+pattern CompareSymbol = Qualified (Just TypeDataSymbol) (ProperName "CompareSymbol")
332+
333+pattern AppendSymbol :: Qualified (ProperName 'ClassName)
334+pattern AppendSymbol = Qualified (Just TypeDataSymbol) (ProperName "AppendSymbol")
335+
336+-- Type.Data.Ordering
337+
338+typeDataOrdering :: ModuleName
339+typeDataOrdering = ModuleName [ProperName "Type", ProperName "Data", ProperName "Ordering"]
340+
341+orderingLT :: Qualified (ProperName 'TypeName)
342+orderingLT = Qualified (Just typeDataOrdering) (ProperName "LT")
343+
344+orderingEQ :: Qualified (ProperName 'TypeName)
345+orderingEQ = Qualified (Just typeDataOrdering) (ProperName "EQ")
346+
347+orderingGT :: Qualified (ProperName 'TypeName)
348+orderingGT = Qualified (Just typeDataOrdering) (ProperName "GT")
321
349
322-- Main module
350-- Main module
323
351
@@ -329,11 +357,14 @@ main = "main"
329partial :: Text
357partial :: Text
330partial = "Partial"
358partial = "Partial"
331
359
360+pattern Prim :: ModuleName
361+pattern Prim = ModuleName [ProperName "Prim"]
362+
332pattern Partial :: Qualified (ProperName 'ClassName)
363pattern Partial :: Qualified (ProperName 'ClassName)
333−pattern Partial = Qualified (Just (ModuleName [ProperName "Prim"])) (ProperName "Partial")
364+pattern Partial = Qualified (Just Prim) (ProperName "Partial")
334
365
335pattern Fail :: Qualified (ProperName 'ClassName)
366pattern Fail :: Qualified (ProperName 'ClassName)
336−pattern Fail = Qualified (Just (ModuleName [ProperName "Prim"])) (ProperName "Fail")
367+pattern Fail = Qualified (Just Prim) (ProperName "Fail")
337
368
338typ :: Text
369typ :: Text
339typ = "Type"
370typ = "Type"
src/Language/PureScript/TypeChecker/Entailment.hs+23−4
@@ -45,6 +45,10 @@ data Evidence
45 -- ^ An existing named instance
45 -- ^ An existing named instance
46 | IsSymbolInstance Text
46 | IsSymbolInstance Text
47 -- ^ Computed instance of the IsSymbol type class for a given Symbol literal
47 -- ^ Computed instance of the IsSymbol type class for a given Symbol literal
48+ | CompareSymbolInstance
49+ -- ^ Computed instance of CompareSymbol
50+ | AppendSymbolInstance
51+ -- ^ Computed instance of AppendSymbol
48 deriving (Eq)
52 deriving (Eq)
49
53
50-- | Extract the identifier of a named instance
54-- | Extract the identifier of a named instance
@@ -138,7 +142,18 @@ entails SolverOptions{..} constraint context hints =
138 solve constraint
142 solve constraint
139 where
143 where
140 forClassName :: InstanceContext -> Qualified (ProperName 'ClassName) -> [Type] -> [TypeClassDict]
144 forClassName :: InstanceContext -> Qualified (ProperName 'ClassName) -> [Type] -> [TypeClassDict]
145+ forClassName _ C.IsSymbol [TypeLevelString sym] =
141− forClassName _ C.IsSymbol [TypeLevelString sym] = [TypeClassDictionaryInScope (IsSymbolInstance sym) [] C.IsSymbol [TypeLevelString sym] Nothing]
146+ [TypeClassDictionaryInScope (IsSymbolInstance sym) [] C.IsSymbol [TypeLevelString sym] Nothing]
147+ forClassName _ C.CompareSymbol [arg0@(TypeLevelString lhs), arg1@(TypeLevelString rhs), _] =
148+ let ordering = case compare lhs rhs of
149+ LT -> C.orderingLT
150+ EQ -> C.orderingEQ
151+ GT -> C.orderingGT
152+ args = [arg0, arg1, TypeConstructor ordering]
153+ in [TypeClassDictionaryInScope CompareSymbolInstance [] C.CompareSymbol args Nothing]
154+ forClassName _ C.AppendSymbol [arg0@(TypeLevelString lhs), arg1@(TypeLevelString rhs), _] =
155+ let args = [arg0, arg1, TypeLevelString (lhs <> rhs)]
156+ in [TypeClassDictionaryInScope AppendSymbolInstance [] C.AppendSymbol args Nothing]
142 forClassName ctx cn@(Qualified (Just mn) _) tys = concatMap (findDicts ctx cn) (nub (Nothing : Just mn : map Just (mapMaybe ctorModules tys)))
157 forClassName ctx cn@(Qualified (Just mn) _) tys = concatMap (findDicts ctx cn) (nub (Nothing : Just mn : map Just (mapMaybe ctorModules tys)))
143 forClassName _ _ _ = internalError "forClassName: expected qualified class name"
158 forClassName _ _ _ = internalError "forClassName: expected qualified class name"
144
159
@@ -293,9 +308,13 @@ entails SolverOptions{..} constraint context hints =
293 -- Make a dictionary from subgoal dictionaries by applying the correct function
308 -- Make a dictionary from subgoal dictionaries by applying the correct function
294 mkDictionary :: Evidence -> Maybe [Expr] -> Expr
309 mkDictionary :: Evidence -> Maybe [Expr] -> Expr
295 mkDictionary (NamedInstance n) args = foldl App (Var n) (fold args)
310 mkDictionary (NamedInstance n) args = foldl App (Var n) (fold args)
296− mkDictionary (IsSymbolInstance sym) _ = TypeClassDictionaryConstructorApp C.IsSymbol (Literal (ObjectLiteral fields)) where
311+ mkDictionary (IsSymbolInstance sym) _ =
297− fields = [ ("reflectSymbol", Abs (Left (Ident C.__unused)) (Literal (StringLiteral sym)))
312+ let fields = [ ("reflectSymbol", Abs (Left (Ident C.__unused)) (Literal (StringLiteral sym))) ] in
298− ]
313+ TypeClassDictionaryConstructorApp C.IsSymbol (Literal (ObjectLiteral fields))
314+ mkDictionary CompareSymbolInstance _ =
315+ TypeClassDictionaryConstructorApp C.CompareSymbol (Literal (ObjectLiteral []))
316+ mkDictionary AppendSymbolInstance _ =
317+ TypeClassDictionaryConstructorApp C.AppendSymbol (Literal (ObjectLiteral []))
299
318
300 -- Turn a DictionaryValue into a Expr
319 -- Turn a DictionaryValue into a Expr
301 subclassDictionaryValue :: Expr -> Qualified (ProperName a) -> Integer -> Expr
320 subclassDictionaryValue :: Expr -> Qualified (ProperName a) -> Integer -> Expr
tests/TestCompiler.hs+22−17
@@ -61,13 +61,13 @@ main = hspec spec
61spec :: Spec
61spec :: Spec
62spec = do
62spec = do
63
63
64− (supportExterns, passingTestCases, warningTestCases, failingTestCases) <- runIO $ do
64+ (supportExterns, supportForeigns, passingTestCases, warningTestCases, failingTestCases) <- runIO $ do
65 cwd <- getCurrentDirectory
65 cwd <- getCurrentDirectory
66 let passing = cwd </> "examples" </> "passing"
66 let passing = cwd </> "examples" </> "passing"
67 let warning = cwd </> "examples" </> "warning"
67 let warning = cwd </> "examples" </> "warning"
68 let failing = cwd </> "examples" </> "failing"
68 let failing = cwd </> "examples" </> "failing"
69 let supportDir = cwd </> "tests" </> "support" </> "bower_components"
69 let supportDir = cwd </> "tests" </> "support" </> "bower_components"
70− let supportFiles ext = Glob.globDir1 (Glob.compile ("purescript-*/**/*." ++ ext)) supportDir
70+ let supportFiles ext = Glob.globDir1 (Glob.compile ("purescript-*/src/**/*." ++ ext)) supportDir
71 passingFiles <- getTestFiles passing <$> testGlob passing
71 passingFiles <- getTestFiles passing <$> testGlob passing
72 warningFiles <- getTestFiles warning <$> testGlob warning
72 warningFiles <- getTestFiles warning <$> testGlob warning
73 failingFiles <- getTestFiles failing <$> testGlob failing
73 failingFiles <- getTestFiles failing <$> testGlob failing
@@ -77,10 +77,10 @@ spec = do
77 modules <- ExceptT . return $ P.parseModulesFromFiles id supportPursFiles
77 modules <- ExceptT . return $ P.parseModulesFromFiles id supportPursFiles
78 foreigns <- inferForeignModules modules
78 foreigns <- inferForeignModules modules
79 externs <- ExceptT . fmap fst . runTest $ P.make (makeActions foreigns) (map snd modules)
79 externs <- ExceptT . fmap fst . runTest $ P.make (makeActions foreigns) (map snd modules)
80− return (zip (map snd modules) externs)
80+ return (zip (map snd modules) externs, foreigns)
81 case supportExterns of
81 case supportExterns of
82 Left errs -> fail (P.prettyPrintMultipleErrors P.defaultPPEOptions errs)
82 Left errs -> fail (P.prettyPrintMultipleErrors P.defaultPPEOptions errs)
83− Right externs -> return (externs, passingFiles, warningFiles, failingFiles)
83+ Right (externs, foreigns) -> return (externs, foreigns, passingFiles, warningFiles, failingFiles)
84
84
85 outputFile <- runIO $ do
85 outputFile <- runIO $ do
86 tmp <- getTemporaryDirectory
86 tmp <- getTemporaryDirectory
@@ -90,21 +90,21 @@ spec = do
90 context "Passing examples" $
90 context "Passing examples" $
91 forM_ passingTestCases $ \testPurs ->
91 forM_ passingTestCases $ \testPurs ->
92 it ("'" <> takeFileName (getTestMain testPurs) <> "' should compile and run without error") $
92 it ("'" <> takeFileName (getTestMain testPurs) <> "' should compile and run without error") $
93− assertCompiles supportExterns testPurs outputFile
93+ assertCompiles supportExterns supportForeigns testPurs outputFile
94
94
95 context "Warning examples" $
95 context "Warning examples" $
96 forM_ warningTestCases $ \testPurs -> do
96 forM_ warningTestCases $ \testPurs -> do
97 let mainPath = getTestMain testPurs
97 let mainPath = getTestMain testPurs
98 expectedWarnings <- runIO $ getShouldWarnWith mainPath
98 expectedWarnings <- runIO $ getShouldWarnWith mainPath
99 it ("'" <> takeFileName mainPath <> "' should compile with warning(s) '" <> intercalate "', '" expectedWarnings <> "'") $
99 it ("'" <> takeFileName mainPath <> "' should compile with warning(s) '" <> intercalate "', '" expectedWarnings <> "'") $
100− assertCompilesWithWarnings supportExterns testPurs expectedWarnings
100+ assertCompilesWithWarnings supportExterns supportForeigns testPurs expectedWarnings
101
101
102 context "Failing examples" $
102 context "Failing examples" $
103 forM_ failingTestCases $ \testPurs -> do
103 forM_ failingTestCases $ \testPurs -> do
104 let mainPath = getTestMain testPurs
104 let mainPath = getTestMain testPurs
105 expectedFailures <- runIO $ getShouldFailWith mainPath
105 expectedFailures <- runIO $ getShouldFailWith mainPath
106 it ("'" <> takeFileName mainPath <> "' should fail with '" <> intercalate "', '" expectedFailures <> "'") $
106 it ("'" <> takeFileName mainPath <> "' should fail with '" <> intercalate "', '" expectedFailures <> "'") $
107− assertDoesNotCompile supportExterns testPurs expectedFailures
107+ assertDoesNotCompile supportExterns supportForeigns testPurs expectedFailures
108
108
109 where
109 where
110
110
@@ -197,27 +197,29 @@ runTest = P.runMake P.defaultOptions
197
197
198compile
198compile
199 :: [(P.Module, P.ExternsFile)]
199 :: [(P.Module, P.ExternsFile)]
200+ -> M.Map P.ModuleName FilePath
200 -> [FilePath]
201 -> [FilePath]
201 -> ([P.Module] -> IO ())
202 -> ([P.Module] -> IO ())
202 -> IO (Either P.MultipleErrors [P.ExternsFile], P.MultipleErrors)
203 -> IO (Either P.MultipleErrors [P.ExternsFile], P.MultipleErrors)
203−compile supportExterns inputFiles check = silence $ runTest $ do
204+compile supportExterns supportForeigns inputFiles check = silence $ runTest $ do
204 fs <- liftIO $ readInput inputFiles
205 fs <- liftIO $ readInput inputFiles
205 ms <- P.parseModulesFromFiles id fs
206 ms <- P.parseModulesFromFiles id fs
206 foreigns <- inferForeignModules ms
207 foreigns <- inferForeignModules ms
207 liftIO (check (map snd ms))
208 liftIO (check (map snd ms))
208− let actions = makeActions foreigns
209+ let actions = makeActions (foreigns `M.union` supportForeigns)
209 case ms of
210 case ms of
210 [singleModule] -> pure <$> P.rebuildModule actions (map snd supportExterns) (snd singleModule)
211 [singleModule] -> pure <$> P.rebuildModule actions (map snd supportExterns) (snd singleModule)
211 _ -> P.make actions (map fst supportExterns ++ map snd ms)
212 _ -> P.make actions (map fst supportExterns ++ map snd ms)
212
213
213assert
214assert
214 :: [(P.Module, P.ExternsFile)]
215 :: [(P.Module, P.ExternsFile)]
216+ -> M.Map P.ModuleName FilePath
215 -> [FilePath]
217 -> [FilePath]
216 -> ([P.Module] -> IO ())
218 -> ([P.Module] -> IO ())
217 -> (Either P.MultipleErrors P.MultipleErrors -> IO (Maybe String))
219 -> (Either P.MultipleErrors P.MultipleErrors -> IO (Maybe String))
218 -> Expectation
220 -> Expectation
219−assert supportExterns inputFiles check f = do
221+assert supportExterns supportForeigns inputFiles check f = do
220− (e, w) <- compile supportExterns inputFiles check
222+ (e, w) <- compile supportExterns supportForeigns inputFiles check
221 maybeErr <- f (const w <$> e)
223 maybeErr <- f (const w <$> e)
222 maybe (return ()) expectationFailure maybeErr
224 maybe (return ()) expectationFailure maybeErr
223
225
@@ -235,11 +237,12 @@ checkShouldFailWith expected errs =
235
237
236assertCompiles
238assertCompiles
237 :: [(P.Module, P.ExternsFile)]
239 :: [(P.Module, P.ExternsFile)]
240+ -> M.Map P.ModuleName FilePath
238 -> [FilePath]
241 -> [FilePath]
239 -> Handle
242 -> Handle
240 -> Expectation
243 -> Expectation
241−assertCompiles supportExterns inputFiles outputFile =
244+assertCompiles supportExterns supportForeigns inputFiles outputFile =
242− assert supportExterns inputFiles checkMain $ \e ->
245+ assert supportExterns supportForeigns inputFiles checkMain $ \e ->
243 case e of
246 case e of
244 Left errs -> return . Just . P.prettyPrintMultipleErrors P.defaultPPEOptions $ errs
247 Left errs -> return . Just . P.prettyPrintMultipleErrors P.defaultPPEOptions $ errs
245 Right _ -> do
248 Right _ -> do
@@ -260,11 +263,12 @@ assertCompiles supportExterns inputFiles outputFile =
260
263
261assertCompilesWithWarnings
264assertCompilesWithWarnings
262 :: [(P.Module, P.ExternsFile)]
265 :: [(P.Module, P.ExternsFile)]
266+ -> M.Map P.ModuleName FilePath
263 -> [FilePath]
267 -> [FilePath]
264 -> [String]
268 -> [String]
265 -> Expectation
269 -> Expectation
266−assertCompilesWithWarnings supportExterns inputFiles shouldWarnWith =
270+assertCompilesWithWarnings supportExterns supportForeigns inputFiles shouldWarnWith =
267− assert supportExterns inputFiles checkMain $ \e ->
271+ assert supportExterns supportForeigns inputFiles checkMain $ \e ->
268 case e of
272 case e of
269 Left errs ->
273 Left errs ->
270 return . Just . P.prettyPrintMultipleErrors P.defaultPPEOptions $ errs
274 return . Just . P.prettyPrintMultipleErrors P.defaultPPEOptions $ errs
@@ -279,11 +283,12 @@ assertCompilesWithWarnings supportExterns inputFiles shouldWarnWith =
279
283
280assertDoesNotCompile
284assertDoesNotCompile
281 :: [(P.Module, P.ExternsFile)]
285 :: [(P.Module, P.ExternsFile)]
286+ -> M.Map P.ModuleName FilePath
282 -> [FilePath]
287 -> [FilePath]
283 -> [String]
288 -> [String]
284 -> Expectation
289 -> Expectation
285−assertDoesNotCompile supportExterns inputFiles shouldFailWith =
290+assertDoesNotCompile supportExterns supportForeigns inputFiles shouldFailWith =
286− assert supportExterns inputFiles noPreCheck $ \e ->
291+ assert supportExterns supportForeigns inputFiles noPreCheck $ \e ->
287 case e of
292 case e of
288 Left errs ->
293 Left errs ->
289 return $ if null shouldFailWith
294 return $ if null shouldFailWith
tests/TestUtils.hs+25−2
@@ -57,6 +57,8 @@ supportModules =
57 , "Control.Alternative"
57 , "Control.Alternative"
58 , "Control.Applicative"
58 , "Control.Applicative"
59 , "Control.Apply"
59 , "Control.Apply"
60+ , "Control.Biapplicative"
61+ , "Control.Biapply"
60 , "Control.Bind"
62 , "Control.Bind"
61 , "Control.Category"
63 , "Control.Category"
62 , "Control.Comonad"
64 , "Control.Comonad"
@@ -72,6 +74,15 @@ supportModules =
72 , "Control.MonadZero"
74 , "Control.MonadZero"
73 , "Control.Plus"
75 , "Control.Plus"
74 , "Control.Semigroupoid"
76 , "Control.Semigroupoid"
77+ , "Data.Bifoldable"
78+ , "Data.Bifunctor"
79+ , "Data.Bifunctor.Clown"
80+ , "Data.Bifunctor.Flip"
81+ , "Data.Bifunctor.Join"
82+ , "Data.Bifunctor.Joker"
83+ , "Data.Bifunctor.Product"
84+ , "Data.Bifunctor.Wrap"
85+ , "Data.Bitraversable"
75 , "Data.Boolean"
86 , "Data.Boolean"
76 , "Data.BooleanAlgebra"
87 , "Data.BooleanAlgebra"
77 , "Data.Bounded"
88 , "Data.Bounded"
@@ -79,18 +90,24 @@ supportModules =
79 , "Data.Eq"
90 , "Data.Eq"
80 , "Data.EuclideanRing"
91 , "Data.EuclideanRing"
81 , "Data.Field"
92 , "Data.Field"
93+ , "Data.Foldable"
82 , "Data.Function"
94 , "Data.Function"
83 , "Data.Function.Uncurried"
95 , "Data.Function.Uncurried"
84 , "Data.Functor"
96 , "Data.Functor"
85 , "Data.Functor.Invariant"
97 , "Data.Functor.Invariant"
86 , "Data.Generic.Rep"
98 , "Data.Generic.Rep"
87− , "Data.Generic.Rep.Monoid"
88 , "Data.Generic.Rep.Eq"
99 , "Data.Generic.Rep.Eq"
100+ , "Data.Generic.Rep.Monoid"
89 , "Data.Generic.Rep.Ord"
101 , "Data.Generic.Rep.Ord"
90 , "Data.Generic.Rep.Semigroup"
102 , "Data.Generic.Rep.Semigroup"
103+ , "Data.Generic.Rep.Show"
91 , "Data.HeytingAlgebra"
104 , "Data.HeytingAlgebra"
105+ , "Data.Maybe"
106+ , "Data.Maybe.First"
107+ , "Data.Maybe.Last"
92 , "Data.Monoid"
108 , "Data.Monoid"
93 , "Data.Monoid.Additive"
109 , "Data.Monoid.Additive"
110+ , "Data.Monoid.Alternate"
94 , "Data.Monoid.Conj"
111 , "Data.Monoid.Conj"
95 , "Data.Monoid.Disj"
112 , "Data.Monoid.Disj"
96 , "Data.Monoid.Dual"
113 , "Data.Monoid.Dual"
@@ -104,8 +121,9 @@ supportModules =
104 , "Data.Ring"
121 , "Data.Ring"
105 , "Data.Semigroup"
122 , "Data.Semigroup"
106 , "Data.Semiring"
123 , "Data.Semiring"
107− , "Data.Symbol"
108 , "Data.Show"
124 , "Data.Show"
125+ , "Data.Symbol"
126+ , "Data.Traversable"
109 , "Data.Unit"
127 , "Data.Unit"
110 , "Data.Void"
128 , "Data.Void"
111 , "Partial"
129 , "Partial"
@@ -113,6 +131,11 @@ supportModules =
113 , "Prelude"
131 , "Prelude"
114 , "Test.Assert"
132 , "Test.Assert"
115 , "Test.Main"
133 , "Test.Main"
134+ , "Type.Data.Ordering"
135+ , "Type.Data.Symbol"
136+ , "Type.Equality"
137+ , "Type.Prelude"
138+ , "Type.Proxy"
116 , "Unsafe.Coerce"
139 , "Unsafe.Coerce"
117 ]
140 ]
118
141
tests/support/bower.json+11−10
@@ -1,16 +1,17 @@
1{
1{
2 "name": "purescript-test-suite-support",
2 "name": "purescript-test-suite-support",
3 "dependencies": {
3 "dependencies": {
4− "purescript-assert": "1.0.0-rc.1",
4+ "purescript-assert": "2.0.0",
5− "purescript-console": "1.0.0-rc.1",
5+ "purescript-console": "2.0.0",
6− "purescript-eff": "1.0.0-rc.1",
6+ "purescript-eff": "2.0.0",
7− "purescript-functions": "1.0.0-rc.1",
7+ "purescript-functions": "2.0.0",
8− "purescript-prelude": "1.1.0",
8+ "purescript-prelude": "2.1.0",
9− "purescript-st": "1.0.0-rc.1",
9+ "purescript-st": "2.0.0",
10 "purescript-partial": "1.1.2",
10 "purescript-partial": "1.1.2",
11− "purescript-newtype": "0.1.0",
11+ "purescript-newtype": "1.1.0",
12− "purescript-generics-rep": "2.0.0",
12+ "purescript-generics-rep": "4.0.0",
13− "purescript-symbols": "^1.0.1",
13+ "purescript-symbols": "^2.0.0",
14+ "purescript-typelevel-prelude": "https://github.com/purescript/purescript-typelevel-prelude.git#29a7123a0c29c85d4b923fcf4a7df8e45ebf9bac",
14− "purescript-unsafe-coerce": "^1.0.0"
15+ "purescript-unsafe-coerce": "^2.0.0"
15 }
16 }
16}
17}