Commit Graph

935 Commits

Author SHA1 Message Date
Niko Matsakis
52c517383e improve borrowck error messages to explain regions better 2012-08-07 20:59:06 -07:00
Patrick Walton
31965860c7 rustc: Resolve constructor expressions for variant structs 2012-08-07 19:12:58 -07:00
Patrick Walton
5ce3281a62 rustc: Parse variant structs; add a trivial test case 2012-08-07 18:55:19 -07:00
Graydon Hoare
8c95feda39 Add minor debug mode for measuring type sizes, helper for #3025. 2012-08-07 18:40:02 -07:00
Patrick Walton
438765da59 rustc: Box struct_defs 2012-08-07 17:46:51 -07:00
Graydon Hoare
175be53e3f Translate const structs. 2012-08-07 17:31:26 -07:00
Michael Sullivan
7f7f47620e Implement static typeclass methods. Closes #3132. 2012-08-07 17:18:14 -07:00
Elliott Slaughter
a695e074f2 rustc: Cosmetic change to type_of to make control flow more obvious. 2012-08-07 16:58:15 -07:00
Elliott Slaughter
cdfc4b1c7a rustc: Fix for type_of on recursive enum creating two types instead of one. 2012-08-07 16:58:15 -07:00
Patrick Walton
61446293f9 rustc: Move some more routines that operate on struct definitions out of line 2012-08-07 16:46:19 -07:00
Patrick Walton
deaef48675 rustc: Split out struct bodies into a separate "struct_def" type in the AST 2012-08-07 15:35:05 -07:00
Graydon Hoare
32e4fd62e9 Const slices now work. Something odd about non-const cases though, see #3138. 2012-08-07 15:04:40 -07:00
Patrick Walton
727c7c7499 rustc: Add stub support for struct variants to the AST 2012-08-07 14:25:53 -07:00
Brian Anderson
bc267c696c syntax: Rename expr_alt to expr_match 2012-08-07 13:35:51 -07:00
Brian Anderson
2772b2e5c7 syntax: Make match arm parsing more restrictive again
Require comma separators for all expression types except the plain block
2012-08-07 12:23:43 -07:00
Lindsey Kuper
efea6f016e Reindent some match exprs to agree with rust-mode.el 2012-08-07 10:41:48 -07:00
Lindsey Kuper
e656261ee7 Comments, minor refactoring, clean up wording of error messages 2012-08-07 10:29:19 -07:00
Niko Matsakis
7d374bde43 add lint mode for deprecated pattern usage 2012-08-07 07:14:44 -07:00
Niko Matsakis
dbef6e593d move borrowck tests to use ref, fix a few exposed shortcomings 2012-08-07 06:11:12 -07:00
Tim Chevalier
f3b2296ee4 Auto-deref the base expr in trans_method_callee
(specifically in the method_trait case) -- if you wrote x.f()
and x has type @T for a trait T, x wasn't getting auto-deref'ed.

This was bad.

Closes #2935
2012-08-06 19:17:44 -07:00
Niko Matsakis
aacd18f4ed first shot at integrating ref/value bindings into borrowck
(more needed)
2012-08-06 19:15:39 -07:00
Patrick Walton
60f47eabe2 rustc: Parse and stub (broken) typechecking for bounded function types 2012-08-06 18:55:24 -07:00
Patrick Walton
253dfc3387 rustc: Implement pattern matching for structs 2012-08-06 17:36:24 -07:00
Tim Chevalier
5cb3a94bfb Shorten lines, fix build breakage 2012-08-06 17:33:23 -07:00
Tim Chevalier
6bd01d0ac8 In resolve, forbid duplicate value, type, and module items
Closes #3099
2012-08-06 16:37:18 -07:00
Niko Matsakis
a6a5c48c64 make ref x bindings produce region ptrs and fix various minor bugs
we now detect inconsistent modes, binding names, and various other errors.
typeck/trans integration is mostly done.

borrowck not so much.

more tests needed.
2012-08-06 16:12:40 -07:00
Brian Anderson
ecaf9e39c9 Convert alt to match. Stop parsing alt 2012-08-06 15:36:30 -07:00
Patrick Walton
bff512a90f rustc: Implement functional record update for structs 2012-08-06 13:17:42 -07:00
Brian Anderson
025d86624d Switch alts to use arrows 2012-08-05 22:08:09 -07:00
Patrick Walton
8c77536526 rustc: Normalize region-bounded string slices properly
This prevents an LLVM assertion that will bite you if you try to put a static
string in an Error.
2012-08-04 15:11:54 -07:00
Graydon Hoare
edfc79cc47 Translate const vecs, most of const slices. More for #2317. 2012-08-03 21:44:52 -07:00
Patrick Walton
f23674394f rustc: Merge fn& and fn in favor of fn&.
This is a step on the way to moving the function "proto" sigil out front.
2012-08-03 19:49:12 -07:00
Patrick Walton
51a5a4ad0e rustc: Translate repeated vector syntax 2012-08-03 18:49:44 -07:00
Graydon Hoare
488ece05b5 Implement &-expressions in consts. Part of #2317. 2012-08-03 18:07:58 -07:00
Patrick Walton
e02b1b1ec8 rustc: Parse and typecheck repeating vector expressions; e.g. [ 0, ..512 ] 2012-08-03 18:03:19 -07:00
Lindsey Kuper
fe2f3d210a Further work on default methods in traits.
And some trait-related code cleanup in typeck::collect.
2012-08-03 16:17:54 -07:00
Patrick Walton
b65dd9d090 rustc: Parse, serialize, and deserialize trait inheritance 2012-08-03 15:02:53 -07:00
Patrick Walton
a805a1fb37 rustc: Add the notion of inherited visibility 2012-08-03 15:02:53 -07:00
Patrick Walton
9e68966611 rustc: Remove fixed-length string warning 2012-08-03 12:03:15 -07:00
Patrick Walton
4e60d7e3a6 rustc: "foo" is now a static string 2012-08-03 11:51:04 -07:00
Patrick Walton
dfe1f6260e rustc: Remove all fixed-length strings from our codebase 2012-08-03 11:22:35 -07:00
Tim Chevalier
336be1d644 Fix build breakage 2012-08-02 23:53:45 -07:00
Tim Chevalier
948172b93f Make comparisons between region pointers work
Region pointers were considered a scalar type, so compare_scalar_type would
get called to compare region pointers in trans. This would fail, since
compare_scalar_type has no case for region pointers.

Changed type_is_scalar to return false for region pointers. This had the side
effect of breaking casts to types of the form &T. To ameliorate that, I added
library functions ptr::assimilate (taking a &T to a *T) and ptr::to_uint
(taking a &T to a uint), both of which use reinterpret_cast.

While I was at it, I removed ty::type_has_resources, which is dead code.
2012-08-02 23:53:45 -07:00
Niko Matsakis
31c5cec55b Purge placement new; Make borrowck know about unary move.
cc #3071
2012-08-02 22:36:36 -07:00
Tim Chevalier
c2bb2f0837 When checking loop bodies and do-expr bodies, don't require the expected type to exist
If the expected type is none (due to a type error), we shouldn't fail with an ICE, but
rather, just print out another type error. Changed the do-expr type error message to
make sense in this context (see the test case for how it works).

Closes #3044.
2012-08-02 21:44:14 -07:00
Eric Holk
c9c3a49bfc Fixing a long line 2012-08-02 19:27:07 -07:00
Patrick Walton
c076d3ccc0 rustc: Translate class literals correctly if the class has a destructor 2012-08-02 18:14:50 -07:00
Patrick Walton
16a0f72f8c rustc: Throw out some more regions when normalizing types 2012-08-02 18:14:50 -07:00
Graydon Hoare
4779d2b392 De-duplicate core::hash some, refactor the traits. 2012-08-02 18:06:33 -07:00
Lindsey Kuper
65e0e30e59 Make typeck::collect aware of provided methods in traits. 2012-08-02 17:15:36 -07:00