       f :: Number * Number * Number -> Number = (n :: Number, m :: Number, r :: Number) :: Number ->  n * m * r
 
     test 'typed function type mismatch', ->
-      throws ->
-        CoffeeScript.compile """
-          f :: Number -> Number = (n :: Number) :: String ->  n * n
-        """
+      shouldBeTypeError """
+        f :: Number -> Number = (n :: Number) :: String ->  n * n
+      """
 
     test 'typed function and binding', ->
       f :: Number -> Number = (n :: Number) ->  n * n
       n :: Number  = f 4
 
     test 'typed function mismatching application', ->
-      throws ->
-        parse """
-          f :: Number -> Number = 3
-        """
+      shouldBeTypeError """
+        f :: Number -> Number = 3
+      """
 
     test 'typed function with return type', ->
       f :: Number -> Number = (n :: Number) :: Number ->  n * n

      y :: Float = x

    test 'throw primitive extended assign', ->
      throws -> parse """
      x :: Float = 3.3
      y :: Int = x
      """

          8

    test 'throw if return type mismatch', ->
      shouldBeTypeError """
        a :: Number = if true then 3 else ""
      """

    test 'for in' , ->
      list :: Number[] =
