about summary refs log tree commit diff
path: root/tests/codegen-units/item-collection/non-generic-functions.rs
diff options
context:
space:
mode:
Diffstat (limited to 'tests/codegen-units/item-collection/non-generic-functions.rs')
-rw-r--r--tests/codegen-units/item-collection/non-generic-functions.rs72
1 files changed, 72 insertions, 0 deletions
diff --git a/tests/codegen-units/item-collection/non-generic-functions.rs b/tests/codegen-units/item-collection/non-generic-functions.rs
new file mode 100644
index 00000000000..092e64562c5
--- /dev/null
+++ b/tests/codegen-units/item-collection/non-generic-functions.rs
@@ -0,0 +1,72 @@
+// compile-flags:-Zprint-mono-items=eager
+
+#![deny(dead_code)]
+#![feature(start)]
+
+//~ MONO_ITEM fn foo
+fn foo() {
+    {
+        //~ MONO_ITEM fn foo::foo
+        fn foo() {}
+        foo();
+    }
+
+    {
+        //~ MONO_ITEM fn foo::foo
+        fn foo() {}
+        foo();
+    }
+}
+
+//~ MONO_ITEM fn bar
+fn bar() {
+    //~ MONO_ITEM fn bar::baz
+    fn baz() {}
+    baz();
+}
+
+struct Struct { _x: i32 }
+
+impl Struct {
+    //~ MONO_ITEM fn Struct::foo
+    fn foo() {
+        {
+            //~ MONO_ITEM fn Struct::foo::foo
+            fn foo() {}
+            foo();
+        }
+
+        {
+            //~ MONO_ITEM fn Struct::foo::foo
+            fn foo() {}
+            foo();
+        }
+    }
+
+    //~ MONO_ITEM fn Struct::bar
+    fn bar(&self) {
+        {
+            //~ MONO_ITEM fn Struct::bar::foo
+            fn foo() {}
+            foo();
+        }
+
+        {
+            //~ MONO_ITEM fn Struct::bar::foo
+            fn foo() {}
+            foo();
+        }
+    }
+}
+
+//~ MONO_ITEM fn start
+#[start]
+fn start(_: isize, _: *const *const u8) -> isize {
+    foo();
+    bar();
+    Struct::foo();
+    let x = Struct { _x: 0 };
+    x.bar();
+
+    0
+}