diff options
| author | Graydon Hoare <[email protected]> | 2010-07-19 13:25:04 -0700 |
|---|---|---|
| committer | Graydon Hoare <[email protected]> | 2010-07-19 13:25:04 -0700 |
| commit | 1f0656d9084970fcc02ba9c27277265b8b3b7217 (patch) | |
| tree | 6e01b1b764e009ac48a12666f5d270faf056067f /src | |
| parent | Fix over-optimistic resolution of self-methods within obj scopes. There is no... (diff) | |
| download | rust-1f0656d9084970fcc02ba9c27277265b8b3b7217.tar.xz rust-1f0656d9084970fcc02ba9c27277265b8b3b7217.zip | |
Add a test for an obvious-seeming (but not actually legal) kind of cast attempted in issue #115, downgrade bug to an err in type.ml so you get a better message.
Diffstat (limited to 'src')
| -rw-r--r-- | src/boot/me/type.ml | 4 | ||||
| -rw-r--r-- | src/test/compile-fail/constructor-as-cast.rs | 13 |
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); +} |