aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/boot/me/type.ml4
-rw-r--r--src/test/compile-fail/constructor-as-cast.rs13
2 files changed, 14 insertions, 3 deletions
diff --git a/src/boot/me/type.ml b/src/boot/me/type.ml
index a631e58d..13f25778 100644
--- a/src/boot/me/type.ml
+++ b/src/boot/me/type.ml
@@ -261,9 +261,7 @@ let check_stmt (cx:Semant.ctxt) : (fn_ctx -> Ast.stmt -> unit) =
else
LTYPE_poly ((Array.map (fun p -> p.Common.node) params), ty)
| Ast.MOD_ITEM_type _ ->
- Common.bug
- ()
- "internal_check_mod_item_decl: unexpected mod item type"
+ Common.err None "Type-item used in non-type context"
in
let rec internal_check_base_lval
diff --git a/src/test/compile-fail/constructor-as-cast.rs b/src/test/compile-fail/constructor-as-cast.rs
new file mode 100644
index 00000000..2374cd2c
--- /dev/null
+++ b/src/test/compile-fail/constructor-as-cast.rs
@@ -0,0 +1,13 @@
+// error-pattern: non-type context
+type base =
+ obj {
+ fn foo();
+ };
+obj derived() {
+ fn foo() {}
+ fn bar() {}
+}
+fn main() {
+ let derived d = derived();
+ let base b = base(d);
+}