aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCharles Lew <[email protected]>2020-09-16 17:21:34 +0100
committerCharles Lew <[email protected]>2020-09-16 17:21:34 +0100
commiteb969647561f46c783469469284538ed95d77076 (patch)
treefd9373e31b4de5ea6d8b5f5a3c20ae13efe66321
parent389d9a6c2d297d838b4cfa754565b6bea5f8c757 (diff)
Add a test.
-rw-r--r--crates/hir_ty/src/tests/method_resolution.rs38
1 files changed, 38 insertions, 0 deletions
diff --git a/crates/hir_ty/src/tests/method_resolution.rs b/crates/hir_ty/src/tests/method_resolution.rs
index 23b2601e6..690f9d66e 100644
--- a/crates/hir_ty/src/tests/method_resolution.rs
+++ b/crates/hir_ty/src/tests/method_resolution.rs
@@ -1051,3 +1051,41 @@ fn dyn_trait_super_trait_not_in_scope() {
1051 "#]], 1051 "#]],
1052 ); 1052 );
1053} 1053}
1054
1055#[test]
1056fn method_resolution_foreign_opaque_type() {
1057 check_infer(
1058 r#"
1059 extern "C" {
1060 type S;
1061 fn f() -> &'static S;
1062 }
1063
1064 impl S {
1065 fn foo(&self) -> bool {
1066 true
1067 }
1068 }
1069
1070 fn test() {
1071 let s = unsafe { f() };
1072 s.foo();
1073 }
1074 "#,
1075 // FIXME: 's.foo()' should be `bool`.
1076 expect![[r#"
1077 75..79 'self': &S
1078 89..109 '{ ... }': bool
1079 99..103 'true': bool
1080 123..167 '{ ...o(); }': ()
1081 133..134 's': &S
1082 137..151 'unsafe { f() }': &S
1083 144..151 '{ f() }': &S
1084 146..147 'f': fn f() -> &S
1085 146..149 'f()': &S
1086 157..158 's': &S
1087 157..164 's.foo()': {unknown}
1088 "#]],
1089 );
1090}
1091