tools: add test to validate existence of needed classes
authorJean-Sebastien Gelinas <calestar@gmail.com>
Fri, 24 Jul 2009 04:19:59 +0000 (00:19 -0400)
committerJean Privat <jean@pryen.org>
Tue, 28 Jul 2009 13:38:29 +0000 (09:38 -0400)
Signed-off-by: Jean-Sebastien Gelinas <calestar@gmail.com>
Signed-off-by: Jean Privat <jean@pryen.org>

12 files changed:
src/syntax/syntax_base.nit
tests/error_needed_types.nit [new file with mode: 0644]
tests/sav/error_needed_types.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt1.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt2.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt3.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt4.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt5.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt6.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt7.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt8.sav [new file with mode: 0644]
tests/sav/error_needed_types_alt9.sav [new file with mode: 0644]

index 56c6a1c..824ea50 100644 (file)
@@ -287,12 +287,14 @@ class AbsSyntaxVisitor
 special Visitor
        fun get_type_by_name(clsname: Symbol): MMType
        do
+               if not _module.has_global_class_named(clsname) then _tc.fatal_error(_module.location, "Missing necessary class: \"{clsname}\"")
                var cls = _module.class_by_name(clsname)
                return cls.get_type
        end
 
        fun get_instantiated_type_by_name(clsname: Symbol, vtype: Array[MMType]): MMType
        do
+               if not _module.has_global_class_named(clsname) then _tc.fatal_error(_module.location, "Missing necessary class: \"{clsname}\"")
                var cls = _module.class_by_name(clsname)
                return cls.get_instantiate_type(vtype)
        end
diff --git a/tests/error_needed_types.nit b/tests/error_needed_types.nit
new file mode 100644 (file)
index 0000000..dea2941
--- /dev/null
@@ -0,0 +1,24 @@
+
+import end#!alt7#
+#alt7#import kernel
+class Object#!alt7#
+end#!alt7#
+
+#alt6#class A
+#alt6#end
+
+#alt8#class L
+#alt8#end
+
+fun some_fun do
+#alt1# var v = 1
+#alt2# var v = 1.0
+#alt3# var v = '1'
+#alt4# var v = "1"
+#alt5# var v = true
+#alt6# var v = [new A, new A]
+#alt7# var v = [1..10]
+#alt8#  for i in new L do
+#alt8#  end
+       var v: Object
+end
diff --git a/tests/sav/error_needed_types.sav b/tests/sav/error_needed_types.sav
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/sav/error_needed_types_alt1.sav b/tests/sav/error_needed_types_alt1.sav
new file mode 100644 (file)
index 0000000..562f48a
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt1.nit:0,0: Missing necessary class: "Int"
diff --git a/tests/sav/error_needed_types_alt2.sav b/tests/sav/error_needed_types_alt2.sav
new file mode 100644 (file)
index 0000000..e378706
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt2.nit:0,0: Missing necessary class: "Float"
diff --git a/tests/sav/error_needed_types_alt3.sav b/tests/sav/error_needed_types_alt3.sav
new file mode 100644 (file)
index 0000000..169ec92
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt3.nit:0,0: Missing necessary class: "Char"
diff --git a/tests/sav/error_needed_types_alt4.sav b/tests/sav/error_needed_types_alt4.sav
new file mode 100644 (file)
index 0000000..1686aff
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt4.nit:0,0: Missing necessary class: "String"
diff --git a/tests/sav/error_needed_types_alt5.sav b/tests/sav/error_needed_types_alt5.sav
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/tests/sav/error_needed_types_alt6.sav b/tests/sav/error_needed_types_alt6.sav
new file mode 100644 (file)
index 0000000..7abf04e
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt6.nit:0,0: Missing necessary class: "Array"
diff --git a/tests/sav/error_needed_types_alt7.sav b/tests/sav/error_needed_types_alt7.sav
new file mode 100644 (file)
index 0000000..f0f3564
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt7.nit:0,0: Missing necessary class: "Range"
diff --git a/tests/sav/error_needed_types_alt8.sav b/tests/sav/error_needed_types_alt8.sav
new file mode 100644 (file)
index 0000000..71b0636
--- /dev/null
@@ -0,0 +1 @@
+alt/error_needed_types_alt8.nit:0,0: Missing necessary class: "Collection"
diff --git a/tests/sav/error_needed_types_alt9.sav b/tests/sav/error_needed_types_alt9.sav
new file mode 100644 (file)
index 0000000..e69de29