diff options
| author | Barosl Lee <vcs@barosl.com> | 2014-12-10 16:11:19 +0900 |
|---|---|---|
| committer | Barosl Lee <vcs@barosl.com> | 2014-12-10 22:45:28 +0900 |
| commit | cfee5b7e881d6cfd65557ca98aff043d9b8fea49 (patch) | |
| tree | 2a059f62c10cbf0f9c1b4ac15bb1430b8d795268 /src/test | |
| parent | fddec2d88a1b44c6eb8922127b8683e1c6778052 (diff) | |
| download | rust-cfee5b7e881d6cfd65557ca98aff043d9b8fea49.tar.gz rust-cfee5b7e881d6cfd65557ca98aff043d9b8fea49.zip | |
Fix an ICE when trying to resolve a struct variant
Unlike a tuple variant constructor which can be called as a function, a struct variant constructor is not a function, so cannot be called. If the user tries to assign the constructor to a variable, an ICE occurs, because there is no way to use it later. So we should stop the constructor from being used like that. A similar mechanism already exists for a normal struct, as it prohibits a struct from being resolved. This commit does the same for a struct variant. This commit also includes some changes to the existing tests. Fixes #19452.
Diffstat (limited to 'src/test')
| -rw-r--r-- | src/test/compile-fail/issue-18252.rs | 2 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-19452.rs | 17 |
2 files changed, 18 insertions, 1 deletions
diff --git a/src/test/compile-fail/issue-18252.rs b/src/test/compile-fail/issue-18252.rs index a655d61fa56..02493b96dc8 100644 --- a/src/test/compile-fail/issue-18252.rs +++ b/src/test/compile-fail/issue-18252.rs @@ -13,5 +13,5 @@ enum Foo { } fn main() { - let f = Foo::Variant(42u); //~ ERROR expected function, found `Foo` + let f = Foo::Variant(42u); //~ ERROR uses it like a function } diff --git a/src/test/compile-fail/issue-19452.rs b/src/test/compile-fail/issue-19452.rs new file mode 100644 index 00000000000..2270ba594ad --- /dev/null +++ b/src/test/compile-fail/issue-19452.rs @@ -0,0 +1,17 @@ +// Copyright 2014 The Rust Project Developers. See the COPYRIGHT +// file at the top-level directory of this distribution and at +// http://rust-lang.org/COPYRIGHT. +// +// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or +// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license +// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +enum Homura { + Madoka { age: u32 } +} + +fn main() { + let homura = Homura::Madoka; //~ ERROR uses it like a function +} |
