       s :: Int = a.text
       """
 
-    test 'constructor', ->
+    suite 'constructor', ->
+      test 'constructor annotation', ->
+        class A
+          constructor :: Int -> ()
+        a :: A = new A 3
+
+      test 'constructor', ->
+        class A
+          constructor :: Int -> ()
+          constructor: (n) ->
+        a :: A = new A 3
+
+      test 'constructor', ->
+        shouldBeTypeError """
+        class A
+          constructor :: Int -> ()
+        new A ''
+        """
+
+    test 'new', ->
+      shouldBeError """
+      struct S
+        foo :: String
       class A
-        constructor :: Int -> ()
-      a :: A = new A 3
-
-    # test 'constructor', ->
-    #   shouldBeTypeError """
-    #   class A
-    #     constructor :: Int -> ()
-    #   a :: A = new A ''
-    #   """
-
-    # test 'new', ->
-    #   shouldBeTypeError """
-    #   struct S
-    #     foo: String
-    #   class A
-    #     bar: String
-    #   a :: S = new A
-    #   """
-
-    # test 'new', ->
-    #   shouldBeTypeError """
-    #   struct S {
-    #     foo: String
-    #   }
-    #   class A
-    #   a :: S = new A
-    #   """
+        bar: String
+
+      a :: S = new A
+      """
+
+    test 'new', ->
+      shouldBeTypeError """
+      struct S
+        foo :: String
+      class A
+      a :: S = new A
+      """
 
     # test 'new', ->
     #   class X

reporter = require '../lib/reporter'
parse = (coffee) ->
  reporter.clean()
  parse coffee

suite 'TypeChecker', ->
  setup ->
    global._root_.vars = []
    global._root_.types = []
    global._root_._this = []

    initializeGlobalTypes(global._root_)
    reporter.clean()

  suite 'Assignment', ->
