]> gitweb.michael.orlitzky.com - hath.git/commitdiff
Add type signatures to fix monomorphism restriction warnings (GHC 8).
authorMichael Orlitzky <michael@orlitzky.com>
Wed, 6 Jul 2016 19:58:06 +0000 (15:58 -0400)
committerMichael Orlitzky <michael@orlitzky.com>
Wed, 6 Jul 2016 19:58:06 +0000 (15:58 -0400)
src/Cidr.hs
src/IPv4Address.hs
src/Main.hs
src/Octet.hs

index 9cbf845365b574ba4302308557f88babf7659d5e..5c05ed15fb5aacffccd2a1c8c433e9a85ed22495 100644 (file)
@@ -294,23 +294,23 @@ test_enumerate =
   testCase desc $ actual @?= expected
   where
     desc = "192.168.0.240/30 is enumerated correctly"
-    oct1 = toEnum 192
-    oct2 = toEnum 168
-    oct3 = minBound
+    oct1 = toEnum 192 :: Octet
+    oct2 = toEnum 168 :: Octet
+    oct3 = minBound :: Octet
     mk_ip = IPv4Address oct1 oct2 oct3
     addr1 = mk_ip $ toEnum 240
     addr2 = mk_ip $ toEnum 241
     addr3 = mk_ip $ toEnum 242
     addr4 = mk_ip $ toEnum 243
     expected = [addr1, addr2, addr3, addr4]
-    actual = enumerate $ read "192.168.0.240/30"
+    actual = enumerate (read "192.168.0.240/30" :: Cidr)
 
 test_min_host1 :: TestTree
 test_min_host1 =
   testCase desc $ actual @?= expected
   where
     desc = "The minimum host in 10.0.0.0/24 is 10.0.0.0"
-    actual = show $ min_host (read "10.0.0.0/24")
+    actual = show $ min_host (read "10.0.0.0/24" :: Cidr)
     expected = "10.0.0.0"
 
 
@@ -319,7 +319,7 @@ test_max_host1 =
   testCase desc $ actual @?= expected
   where
     desc = "The maximum host in 10.0.0.0/24 is 10.0.0.255"
-    actual = show $ max_host (read "10.0.0.0/24")
+    actual = show $ max_host (read "10.0.0.0/24" :: Cidr)
     expected = "10.0.0.255"
 
 
@@ -337,8 +337,8 @@ test_contains1 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.1.0/23 contains 10.1.1.0/24"
-    cidr1 = read "10.1.1.0/23"
-    cidr2 = read "10.1.1.0/24"
+    cidr1 = read "10.1.1.0/23" :: Cidr
+    cidr2 = read "10.1.1.0/24" :: Cidr
     expected = True
     actual = cidr1 `contains` cidr2
 
@@ -348,7 +348,7 @@ test_contains2 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.1.0/23 contains itself"
-    cidr1 = read "10.1.1.0/23"
+    cidr1 = read "10.1.1.0/23" :: Cidr
     expected = True
     actual = cidr1 `contains` cidr1
 
@@ -358,8 +358,8 @@ test_contains_proper1 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.1.0/23 contains 10.1.1.0/24 properly"
-    cidr1 = read "10.1.1.0/23"
-    cidr2 = read "10.1.1.0/24"
+    cidr1 = read "10.1.1.0/23" :: Cidr
+    cidr2 = read "10.1.1.0/24" :: Cidr
     expected = True
     actual = cidr1 `contains_proper` cidr2
 
@@ -369,7 +369,7 @@ test_contains_proper2 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.1.0/23 does not contain itself properly"
-    cidr1 = read "10.1.1.0/23"
+    cidr1 = read "10.1.1.0/23" :: Cidr
     expected = False
     actual = cidr1 `contains_proper` cidr1
 
@@ -379,8 +379,8 @@ test_adjacent1 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.0.0/24 is adjacent to 10.1.1.0/24"
-    cidr1 = read "10.1.0.0/24"
-    cidr2 = read "10.1.1.0/24"
+    cidr1 = read "10.1.0.0/24" :: Cidr
+    cidr2 = read "10.1.1.0/24" :: Cidr
     expected = True
     actual = cidr1 `adjacent` cidr2
 
@@ -390,8 +390,8 @@ test_adjacent2 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.0.0/23 is not adjacent to 10.1.0.0/24"
-    cidr1 = read "10.1.0.0/23"
-    cidr2 = read "10.1.0.0/24"
+    cidr1 = read "10.1.0.0/23" :: Cidr
+    cidr2 = read "10.1.0.0/24" :: Cidr
     expected = False
     actual = cidr1 `adjacent` cidr2
 
@@ -401,8 +401,8 @@ test_adjacent3 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.0.0/24 is not adjacent to 10.2.5.0/24"
-    cidr1 = read "10.1.0.0/24"
-    cidr2 = read "10.2.5.0/24"
+    cidr1 = read "10.1.0.0/24" :: Cidr
+    cidr2 = read "10.2.5.0/24" :: Cidr
     expected = False
     actual = cidr1 `adjacent` cidr2
 
@@ -412,8 +412,8 @@ test_adjacent4 =
   testCase desc $ actual @?= expected
   where
     desc = "10.1.1.0/24 is not adjacent to 10.1.2.0/24"
-    cidr1 = read "10.1.1.0/24"
-    cidr2 = read "10.1.2.0/24"
+    cidr1 = read "10.1.1.0/24" :: Cidr
+    cidr2 = read "10.1.2.0/24" :: Cidr
     expected = False
     actual = cidr1 `adjacent` cidr2
 
@@ -422,9 +422,9 @@ test_combine_contained1 =
   testCase desc $ actual @?= expected
   where
     desc = "10.0.0.0/8, 10.1.0.0/16, and 10.1.1.0/24 combine to 10.0.0.0/8"
-    cidr1 = read "10.0.0.0/8"
-    cidr2 = read "10.1.0.0/16"
-    cidr3 = read "10.1.1.0/24"
+    cidr1 = read "10.0.0.0/8" :: Cidr
+    cidr2 = read "10.1.0.0/16" :: Cidr
+    cidr3 = read "10.1.1.0/24" :: Cidr
     test_cidrs = [cidr1, cidr2, cidr3]
     expected = [cidr1]
     actual = combine_contained test_cidrs
@@ -434,8 +434,8 @@ test_combine_contained2 =
   testCase desc $ actual @?= expected
   where
     desc = "192.168.3.0/23 does not contain 192.168.1.0/24"
-    cidr1 = read "192.168.3.0/23"
-    cidr2 = read "192.168.1.0/24"
+    cidr1 = read "192.168.3.0/23" :: Cidr
+    cidr2 = read "192.168.1.0/24" :: Cidr
     expected = [cidr1, cidr2]
     actual = combine_contained [cidr1, cidr2]
 
@@ -446,13 +446,13 @@ test_combine_all1 =
   where
     desc = "10.0.0.0/24 is adjacent to 10.0.1.0/24 "
            ++ "and 10.0.3.0/23 contains 10.0.2.0/24"
-    cidr1 = read "10.0.0.0/24"
-    cidr2 = read "10.0.1.0/24"
-    cidr3 = read "10.0.2.0/24"
-    cidr4 = read "10.0.3.0/23"
-    cidr5 = read "10.0.0.0/23"
+    cidr1 = read "10.0.0.0/24" :: Cidr
+    cidr2 = read "10.0.1.0/24" :: Cidr
+    cidr3 = read "10.0.2.0/24" :: Cidr
+    cidr4 = read "10.0.3.0/23" :: Cidr
+    cidr5 = read "10.0.0.0/23" :: Cidr
     test_cidrs = [cidr1, cidr2, cidr3, cidr4, cidr5]
-    expected = [read "10.0.0.0/22"]
+    expected = [read "10.0.0.0/22" :: Cidr]
     actual = combine_all test_cidrs
 
 
@@ -461,7 +461,7 @@ test_combine_all2 =
   testCase desc $ actual @?= expected
   where
     desc = "127.0.0.1/32 combines with itself recursively"
-    cidr1 = read "127.0.0.1/32"
+    cidr1 = read "127.0.0.1/32" :: Cidr
     test_cidrs = [cidr1, cidr1, cidr1, cidr1, cidr1]
     expected = [cidr1]
     actual = combine_all test_cidrs
@@ -473,12 +473,12 @@ test_combine_all3 =
   where
     desc = "10.0.0.16, 10.0.0.17, 10.0.0.18, and "
            ++ "10.0.0.19 get combined into 10.0.0.16/30"
-    cidr1 = read "10.0.0.16/32"
-    cidr2 = read "10.0.0.17/32"
-    cidr3 = read "10.0.0.18/32"
-    cidr4 = read "10.0.0.19/32"
+    cidr1 = read "10.0.0.16/32" :: Cidr
+    cidr2 = read "10.0.0.17/32" :: Cidr
+    cidr3 = read "10.0.0.18/32" :: Cidr
+    cidr4 = read "10.0.0.19/32" :: Cidr
     test_cidrs = [cidr1, cidr2, cidr3, cidr4]
-    expected = [read "10.0.0.16/30"]
+    expected = [read "10.0.0.16/30" :: Cidr]
     actual = combine_all test_cidrs
 
 -- QuickCheck Tests
index 78bceabc703b39202823d6f9882d3c3fb5d523d1..fca1d0fe006cc33c659f4e883bfda3897f83f4d2 100644 (file)
@@ -194,10 +194,10 @@ instance Enum IPv4Address where
       shifted_x1 = x `quot` 2^(24 :: Integer)
       shifted_x2 = x2 `quot` 2^(16 :: Integer)
       shifted_x3 = x3 `quot` 2^(8 :: Integer)
-      oct1 = toEnum shifted_x1
-      oct2 = toEnum shifted_x2
-      oct3 = toEnum shifted_x3
-      oct4 = toEnum x4
+      oct1 = toEnum shifted_x1 :: Octet
+      oct2 = toEnum shifted_x2 :: Octet
+      oct3 = toEnum shifted_x3 :: Octet
+      oct4 = toEnum x4 :: Octet
 
   -- | Convert @addr@ to an 'Int' by converting each octet to an 'Int'
   --   and shifting the result to the left by 0,8.16, or 24 bits.
@@ -358,10 +358,10 @@ mk_testaddr :: Int -> Int -> Int -> Int -> IPv4Address
 mk_testaddr a b c d =
   IPv4Address oct1 oct2 oct3 oct4
   where
-    oct1 = toEnum a
-    oct2 = toEnum b
-    oct3 = toEnum c
-    oct4 = toEnum d
+    oct1 = toEnum a :: Octet
+    oct2 = toEnum b :: Octet
+    oct3 = toEnum c :: Octet
+    oct4 = toEnum d :: Octet
 
 
 test_minBound :: TestTree
@@ -422,4 +422,4 @@ test_to_enum =
   where
     desc     = "192.168.0.0 in base-10 is 3232235520"
     expected = mk_testaddr 192 168 0 0
-    actual   = toEnum 3232235520
+    actual   = toEnum 3232235520 :: IPv4Address
index 5b75533863c11b515f7f104df7b09948065a9e59..d66b6009c5187b643b0ea12e588cda26873eb39e 100644 (file)
@@ -102,7 +102,7 @@ main = do
   input <- getContents
 
   let cidr_strings = splitWs input
-  let cidrs = map readMaybe cidr_strings
+  let cidrs = map readMaybe cidr_strings :: [Maybe Cidr]
 
   when (any isNothing cidrs) $ do
     hPutStrLn stderr "ERROR: not valid CIDR notation:"
index 4664d1964c21eefcc9aaf0fb32452ab42fd9fd0e..fa004c5085df4849a4b2ff44033106d10fd90193 100644 (file)
@@ -195,7 +195,7 @@ test_octet_from_int1 =
   where
     desc = "octet_from_int 128 should parse as 10000000"
     expected = Octet B.One B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero B.Zero
-    actual = toEnum 128
+    actual = toEnum 128 :: Octet
 
 
 test_octet_mask1 :: TestTree
@@ -204,7 +204,7 @@ test_octet_mask1 =
   where
     desc = "The network bits of 255/4 should equal 240"
     expected = toEnum 240 :: Octet
-    actual = apply_mask (toEnum 255) Four B.Zero
+    actual = apply_mask (toEnum 255) Four B.Zero :: Octet
 
 
 test_octet_mask2 :: TestTree
@@ -213,4 +213,4 @@ test_octet_mask2 =
   where
     desc = "The network bits of 255/1 should equal 128"
     expected = toEnum 128 :: Octet
-    actual = apply_mask (toEnum 255) Maskbits.One B.Zero
+    actual = apply_mask (toEnum 255) Maskbits.One B.Zero :: Octet