From: Jean Privat Date: Mon, 24 Feb 2014 20:53:12 +0000 (-0500) Subject: Merge commit 'b7e675f' X-Git-Tag: v0.6.4~17 X-Git-Url: http://nitlanguage.org?hp=a9af13b07065f2bd2ac4b2298e3d8e43aed5aabf Merge commit 'b7e675f' Partially fixes issue #276 and add the test to exhibit the remaining bad behavior of the issue --- diff --git a/src/rapid_type_analysis.nit b/src/rapid_type_analysis.nit index 3ee7b28..db88025 100644 --- a/src/rapid_type_analysis.nit +++ b/src/rapid_type_analysis.nit @@ -81,6 +81,12 @@ class RapidTypeAnalysis # The method definitions that remain to visit private var todo = new List[MMethodDef] + private fun force_alive(classname: String) + do + var classes = self.modelbuilder.model.get_mclasses_by_name(classname) + if classes != null then for c in classes do self.add_new(c.mclass_type, c.mclass_type) + end + # Run the analysis until all visitable method definitions are visited. fun run_analysis do @@ -96,9 +102,11 @@ class RapidTypeAnalysis add_send(maintype, mainprop) end - # Force Bool - var classes = self.modelbuilder.model.get_mclasses_by_name("Bool") - if classes != null then for c in classes do self.add_new(c.mclass_type, c.mclass_type) + # Force primitive types + force_alive("Bool") + force_alive("Int") + force_alive("Float") + force_alive("Char") while not todo.is_empty do var mmethoddef = todo.shift diff --git a/tests/sav/base_attr_init_val_int.res b/tests/sav/base_attr_init_val_int.res new file mode 100644 index 0000000..e69de29 diff --git a/tests/sav/base_attr_init_val_int_alt1.res b/tests/sav/base_attr_init_val_int_alt1.res new file mode 100644 index 0000000..5784bf1 --- /dev/null +++ b/tests/sav/base_attr_init_val_int_alt1.res @@ -0,0 +1 @@ +Runtime error: Uninitialized attribute @b (alt/base_attr_init_val_int_alt1.nit:28) diff --git a/tests/sav/base_attr_init_val_int_alt2.res b/tests/sav/base_attr_init_val_int_alt2.res new file mode 100644 index 0000000..9f0a522 --- /dev/null +++ b/tests/sav/base_attr_init_val_int_alt2.res @@ -0,0 +1 @@ +Runtime error: Uninitialized attribute @c (alt/base_attr_init_val_int_alt2.nit:29) diff --git a/tests/sav/base_attr_init_val_int_alt3.res b/tests/sav/base_attr_init_val_int_alt3.res new file mode 100644 index 0000000..87f4b33 --- /dev/null +++ b/tests/sav/base_attr_init_val_int_alt3.res @@ -0,0 +1 @@ +Runtime error: Uninitialized attribute @i (alt/base_attr_init_val_int_alt3.nit:30) diff --git a/tests/sav/base_attr_init_val_int_alt4.res b/tests/sav/base_attr_init_val_int_alt4.res new file mode 100644 index 0000000..c8da86f --- /dev/null +++ b/tests/sav/base_attr_init_val_int_alt4.res @@ -0,0 +1 @@ +Runtime error: Uninitialized attribute @f (alt/base_attr_init_val_int_alt4.nit:31) diff --git a/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt1.res b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt1.res new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt1.res @@ -0,0 +1 @@ +false diff --git a/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt2.res b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt2.res new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt2.res differ diff --git a/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt3.res b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt3.res new file mode 100644 index 0000000..573541a --- /dev/null +++ b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt3.res @@ -0,0 +1 @@ +0 diff --git a/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt4.res b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt4.res new file mode 100644 index 0000000..945da8f --- /dev/null +++ b/tests/sav/nitg-e/fixme/base_attr_init_val_int_alt4.res @@ -0,0 +1 @@ +0.000000 diff --git a/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt1.res b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt1.res new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt1.res @@ -0,0 +1 @@ +false diff --git a/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt2.res b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt2.res new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt2.res differ diff --git a/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt3.res b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt3.res new file mode 100644 index 0000000..573541a --- /dev/null +++ b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt3.res @@ -0,0 +1 @@ +0 diff --git a/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt4.res b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt4.res new file mode 100644 index 0000000..945da8f --- /dev/null +++ b/tests/sav/nitg-g/fixme/base_attr_init_val_int_alt4.res @@ -0,0 +1 @@ +0.000000 diff --git a/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt1.res b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt1.res new file mode 100644 index 0000000..c508d53 --- /dev/null +++ b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt1.res @@ -0,0 +1 @@ +false diff --git a/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt2.res b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt2.res new file mode 100644 index 0000000..f76dd23 Binary files /dev/null and b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt2.res differ diff --git a/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt3.res b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt3.res new file mode 100644 index 0000000..573541a --- /dev/null +++ b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt3.res @@ -0,0 +1 @@ +0 diff --git a/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt4.res b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt4.res new file mode 100644 index 0000000..945da8f --- /dev/null +++ b/tests/sav/nitg-s/fixme/base_attr_init_val_int_alt4.res @@ -0,0 +1 @@ +0.000000