Skip to content

Commit 4274869

Browse files
committed
---
yaml --- r: 11281 b: refs/heads/master c: 0a50322 h: refs/heads/master i: 11279: 209b63a v: v3
1 parent 112807c commit 4274869

File tree

6 files changed

+42
-1
lines changed

6 files changed

+42
-1
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
---
2-
refs/heads/master: 305cbf9b8ed24a23212cd99fc3eedfcd9b2b40af
2+
refs/heads/master: 0a503228f6b7a831418f0a247944e20c01c1b84e
33
refs/heads/snap-stage1: e33de59e47c5076a89eadeb38f4934f58a3618a6
44
refs/heads/snap-stage3: 4a81779abd786ff22d71434c6d9a5917ea4cdfff
55
refs/heads/try: 2898dcc5d97da9427ac367542382b6239d9c0bbf

trunk/src/comp/middle/typeck.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -107,6 +107,18 @@ fn ty_param_bounds_and_ty_for_def(fcx: @fn_ctxt, sp: span, defn: ast::def) ->
107107
}
108108
}
109109
}
110+
ast::def_fn(id, ast::crust_fn) {
111+
// Crust functions are just u8 pointers
112+
ret {
113+
bounds: @[],
114+
ty: ty::mk_ptr(
115+
fcx.ccx.tcx,
116+
{
117+
ty: ty::mk_mach_uint(fcx.ccx.tcx, ast::ty_u8),
118+
mut: ast::imm
119+
})
120+
};
121+
}
110122
ast::def_fn(id, _) | ast::def_const(id) |
111123
ast::def_variant(_, id) | ast::def_class(id)
112124
| ast::def_class_method(_, id) | ast::def_class_field(_, id)
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// error-pattern:expected function or native function but found *u8
2+
crust fn f() {
3+
}
4+
5+
fn main() {
6+
let x = bind f();
7+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// error-pattern:expected function or native function but found *u8
2+
crust fn f() {
3+
}
4+
5+
fn main() {
6+
f();
7+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// error-pattern:expected `fn()` but found `*u8`
2+
crust fn f() {
3+
}
4+
5+
fn main() {
6+
// Crust functions are *u8 types
7+
let _x: fn() = f;
8+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
crust fn f() {
2+
}
3+
4+
fn main() {
5+
// Crust functions are *u8 types
6+
let _x: *u8 = f;
7+
}

0 commit comments

Comments
 (0)