Commit Graph

930 Commits

Author SHA1 Message Date
Lindsey Kuper
d747cd724e Rename convert_class_item to convert_field. 2012-08-01 11:08:47 -07:00
Lindsey Kuper
91bd291009 Fix bad indentation. 2012-08-01 11:08:46 -07:00
Lindsey Kuper
ac4e57c640 Introduce self_info (self_ty packaged up with a node_id). 2012-08-01 11:08:46 -07:00
Lindsey Kuper
361a9b03e6 Fix inaccurate comment. 2012-08-01 11:08:46 -07:00
Niko Matsakis
a334deb5d5 change how we print and explain region types 2012-07-31 22:00:19 -07:00
Patrick Walton
b414db041b rustc: Parse by-reference pattern bindings with the "ref" keyword 2012-07-31 19:26:25 -07:00
Brian Anderson
a841789a41 rustc: Add non_camel_case_types lint check 2012-07-31 18:58:23 -07:00
Graydon Hoare
2a3084b527 Start implementing structured constants. 2012-07-31 18:34:44 -07:00
Patrick Walton
c88933d714 rustc: Implement unary move. Closes #917. 2012-07-31 17:33:20 -07:00
Brian Anderson
7b2026bf21 Introduce 'return', 'match' and 'module' as synonyms 2012-07-31 17:22:30 -07:00
Patrick Walton
2cfe8fb357 rustc: Check self types in method lookup; allow required trait methods to have self types; write self types into metadata 2012-07-31 16:35:11 -07:00
Lindsey Kuper
439afaa329 Change remaining "iface" occurrences to "trait"; deprecate "iface" 2012-07-31 11:52:16 -07:00
Graydon Hoare
290f079474 Frontend bits for #2317, general const-expr classification. 2012-07-30 19:06:06 -07:00
Paul Stansifer
a9cc5066ee Change syntax extension syntax: #m[...] -> m!{...}. 2012-07-30 18:38:15 -07:00
Paul Stansifer
e040ab8423 Impl-ize interner. 2012-07-30 18:04:19 -07:00
Lindsey Kuper
f78776e9d8 rustc: "iface" -> "trait" in comments, error messages, and identifiers.
(Also "interface" -> "trait" in error messages.)
2012-07-30 17:26:14 -07:00
Lindsey Kuper
dbd39f868b rustc: "ifce" -> "trt" in identifiers 2012-07-30 17:26:14 -07:00
Niko Matsakis
5d32d03b89 Fix #2979: inference for lifetimes of & expressions
What we now do is to create a region variable for each &
expression (and also each borrow).  The lifetime of this
variable will be checked by borrowck to ensure it is not greater
than the lifetime of the underlying data.  This both leads to
shorter lifetimes in some cases but also longer in others,
such as taking the address to the interior of unique boxes
tht are rooted in region pointers (e.g., returning a pointer
to the interior of a sendable map).

This may lead to issue #2977 if the rvalue is not POD, because
we may drop the data in trans sooner than borrowck expects us
to.  Need to work out precisely where that fix ought to occur.
2012-07-30 14:49:28 -07:00
Patrick Walton
519deca716 rustc: Make option<&foo> no longer cause LLVM asserts by getting rid of regions in normalize_ty 2012-07-30 11:28:43 -07:00
Brian Anderson
2e231fbcb7 LONG LINES\! 2012-07-30 11:26:20 -07:00
Damian Gryski
1854a736f8 rustc: use new siphash impl instead of sha1
Updating types std::sha1::sha1 -> hash::streaming was a relatively
    small change.  Renaming the variables to reflect that things aren't
    sha1s any more touched far more lines.
2012-07-30 10:46:01 -07:00
Tim Chevalier
082d8314da Rewrite bitv to use classes and optimize its representation
Rewrote bitv as a class that uses a 32-bit int as its representation
for bit vectors of 32 bits or less, and a vector (the old representation)
otherwise. I didn't benchmark very much, but a bit of informal benchmarking
suggested this is a win.

Closes #2341
2012-07-29 18:39:15 -07:00
Patrick Walton
93c2f5e0e4 rustc: Use coherence for operator overloading.
The only use of the old-style impls is now placement new.
2012-07-27 19:35:24 -07:00
Tim Chevalier
f7382c454f Forbid duplicate fields in record types and exprs
Closes #3033
2012-07-27 17:33:05 -07:00
Tim Chevalier
a0d05844ed Correctly forbid upvars in nested impls, traits and classes
Previously, resolve was allowing impls, traits or classes that were
nested within a fn to refer to upvars, as well as referring to type
parameters bound by the fn. Fixing this required adding a new kind of
def: def_typaram_binder, which can refer to any of an impl, trait or
class that has bound ty params. resolve uses this to enforce that
methods can refer to their parent item's type parameters, but not to
outer items' type parameters; other stages ignore it. I also made
sure that impl, trait and class methods get checked inside a
MethodRibKind thing so as to forbid upvars, and changed the definition
of MethodRibKind so that its second argument is an optional node_id
(so that required trait method signatures can be checked with a
MethodRibKind as well).
2012-07-27 17:31:42 -07:00
Niko Matsakis
638491712e change region inference to not consider & that appears in a fn
type as indicating region parameterization
2012-07-27 15:49:03 -07:00
Patrick Walton
01e2471cb7 core: Trait-ify various overloaded operators 2012-07-27 14:52:46 -07:00
Tim Chevalier
b6aadf56c8 In resolve, check for duplicate pattern-bound vars
Closes #3038
2012-07-27 13:35:17 -07:00
Tim Chevalier
300f54ebc0 Make alts on uninhabited enum types typecheck and translate properly
Possibly one of the silliest Rust commits ever.

Closes #3037
2012-07-27 13:14:03 -07:00
Eric Holk
6d142c5e25 Removed the rest of the vec::view calls that were marked with #2880. Fixes #2880. 2012-07-26 17:10:48 -07:00
Eric Holk
65beca4e01 Use iteration protocol for ebml, use vec::view in more places (issue #2880) 2012-07-26 17:10:48 -07:00
Graydon Hoare
dbbaa50290 Nomenclature fixes in the lint checker. Fewer double-negatives.
New style is allow(foo), warn(foo), deny(foo) and forbid(foo),
mirrored by -A foo, -W foo, -D foo and -F foo on command line.

These replace -W no-foo, -W foo, -W err-foo, respectively.

Forbid is new, and means "deny, and you can't override it".
2012-07-26 17:08:33 -07:00
Patrick Walton
afd9a75c9e rustc: Fix cross-crate max/min-class-style constructors 2012-07-26 15:30:15 -07:00
Patrick Walton
da80bd17c3 rustc: Introduce a lang_items pass, part of coherence and operator overloading.
This will also help us remove kinds.
2012-07-25 18:37:03 -07:00
Eric Holk
e1d4bd463c 3x faster typechecking 2012-07-25 18:00:29 -07:00
Eric Holk
3aee39a6ec Add #[inline(never)], and also fixed inlining on vec::push 2012-07-25 17:30:13 -07:00
Niko Matsakis
4b8d0539f9 adjust deprecated_use not to warn about sugared closures 2012-07-25 10:19:28 -07:00
Niko Matsakis
cc8086a045 add new deprecated_mode lint pass
It will warn you if you use the default mode for something that
is expensive to copy, and it will warn you if you use any explicit
mode other than copy.  So you should migrate over to using the
default mode for most things (and borrowed pointers when you don't
want to copy) and copy mode for things you really wanted to copy.
2012-07-25 09:19:02 -07:00
Niko Matsakis
99674dc52b avoid capture of bound regions when infering types for closure
expressions. cc #2981
2012-07-25 05:45:52 -07:00
Niko Matsakis
2d3a197f0e comment various region-related things better 2012-07-25 05:45:52 -07:00
Niko Matsakis
7022ede9b3 make unique pointers inherit mutability from owner 2012-07-25 05:45:52 -07:00
Niko Matsakis
168306f11b correct treatment of mutability for deref'd components
Fixes #2980
2012-07-25 05:45:52 -07:00
Patrick Walton
587b0edbbf rustc: Don't require that structs have constructors 2012-07-24 15:29:51 -07:00
Patrick Walton
32e8429341 rustc: Translate struct literals 2012-07-24 13:59:17 -07:00
Graydon Hoare
539a160bb7 Merge pull request #3003 from elliottslaughter/free-cant-fail
Don't emit invoke instructions inside landing pads.
2012-07-24 13:49:24 -07:00
Graydon Hoare
8868b222c3 Fix whitespace. 2012-07-24 13:21:25 -07:00
Graydon Hoare
a63e0e47f0 Update some str functions to slices, merge as_buf and unpack_slice. 2012-07-24 12:35:52 -07:00
Elliott Slaughter
c341eb9052 Don't emit invoke instructions inside landing pads.
We can't throw an exception from inside a landing pad without
corrupting the exception handler, so we have no hope of dealing with
these exceptions anyway. See:

http://llvm.org/docs/ExceptionHandling.html#cleanups

Part of #2861.
2012-07-24 12:20:39 -07:00
Patrick Walton
0930b95395 rustc: Typecheck struct literals 2012-07-24 11:29:07 -07:00
Patrick Walton
b3cad86a05 rustc: Resolve struct names in struct literals 2012-07-23 18:58:57 -07:00
Graydon Hoare
7680f504c2 Merge pull request #2998 from elliottslaughter/no-landing-pads
Add debug flag to turn off landing pads.
2012-07-23 16:47:35 -07:00
Patrick Walton
df4db83ed8 rustc: Max/min classes: Add struct literal syntax 2012-07-23 16:40:05 -07:00
Tim Chevalier
4806a4f120 Merge pull request #3000 from dgryski/master
Fix formatting of multiline code blocks in asm-comments
2012-07-23 14:39:08 -07:00
Damian Gryski
9b02acbc5d Fix formatting of multi-line blocks in asm-comments 2012-07-23 23:18:12 +02:00
Patrick Walton
674dd14eec rustc: Make vtables use the coherence tables 2012-07-23 13:24:05 -07:00
Elliott Slaughter
d8c75cfbe7 Add debug flag to turn off landing pads. 2012-07-23 13:07:35 -07:00
Elliott Slaughter
d257382863 Moved malloc and free upcalls into rust runtime. 2012-07-23 10:45:58 -07:00
Elliott Slaughter
de82a9be61 Move fail upcall into rust libcore. 2012-07-23 10:45:58 -07:00
Tim Chevalier
beb2cd1658 Remove what's left of resolve1 2012-07-20 17:08:19 -07:00
Niko Matsakis
f676547c97 Fix intersection of two region params in infer, cc #2962 2012-07-19 10:14:16 -07:00
Patrick Walton
f48dcaaae3 rustc: Make vtable do duplicate-impl checking. Closes #2958. 2012-07-18 18:10:00 -07:00
Tim Chevalier
3119afc6e8 In resolve3, error on non-existent imports
Closes #2937
2012-07-18 18:02:07 -07:00
Tim Chevalier
de5d5e6eeb Remove non-existent imports 2012-07-18 18:02:07 -07:00
Patrick Walton
57e8de8917 rustc: Implement multiple-traits-per-impl for cross-crate stuff 2012-07-18 17:34:59 -07:00
Patrick Walton
635a959363 rustc: Make coherence aware of multiple-traits-per-impl 2012-07-18 17:08:42 -07:00
Patrick Walton
9d34c706b2 rustc: Move ty::impl_traits over to a multiple-traits-per-impl world 2012-07-18 16:49:55 -07:00
Patrick Walton
3c583def25 rustc: Make resolve3 multiple-trait-per-impl-aware 2012-07-18 16:28:59 -07:00
Patrick Walton
3ac5b4a86f syntax: Parse multiple trait refs in a single implementation 2012-07-18 16:05:17 -07:00
Niko Matsakis
e0ea67a2a6 prevent regions from escaping in ifaces; remove &r.T syntax 2012-07-18 11:48:58 -07:00
Niko Matsakis
4ee4a2ab31 borrow from @[] vectors (cc #2797) 2012-07-17 19:16:00 -07:00
Patrick Walton
db020ab63c rustc: Implement and enforce instance coherence 2012-07-17 15:46:43 -07:00
Tim Chevalier
b5729bd600 Support attributes on class ctors and dtors
Closes #2660
2012-07-17 12:40:59 -07:00
Tim Chevalier
cf9a9d1ae8 Remove most of old resolve
resolve has a few type definitions in it that are used, so I left
those and deleted everything else. Also, I switched rustdoc to use
resolve3 instead of the old resolve.

In a future commit I'll remove the type definitions entirely, as they're
just duplicates of types defined in resolve3.
2012-07-17 12:40:58 -07:00
Niko Matsakis
0e42004bab introduce an owned kind for data that contains no borrowed ptrs 2012-07-16 20:18:18 -07:00
Niko Matsakis
748f2e0909 improve comment 2012-07-16 13:29:00 -07:00
Niko Matsakis
3ef7ff8b89 infer the scope of borrows 2012-07-14 17:37:32 -07:00
Niko Matsakis
41a21f053c remove typestate from code, tests, and docs 2012-07-14 17:37:20 -07:00
Michael Sullivan
6822ec3eb4 Treat bare vector and string literals as fixed length vecs. Closes #2922. 2012-07-14 14:30:48 -07:00
Michael Sullivan
7b2f4755f3 Get rid of ast::ty_vstore, which was only used for fixed length. 2012-07-14 12:45:52 -07:00
Michael Sullivan
d884085f43 Tear out ty_str and ty_vec. 2012-07-14 12:19:36 -07:00
Michael Sullivan
08a4440d64 Fix a bunch of deprecated str/vec errors in code for non 64-bit linux platforms... 2012-07-14 10:05:49 -07:00
Michael Sullivan
5a7d139a38 Merge branch 'vector-reform' into incoming 2012-07-14 01:03:54 -07:00
Michael Sullivan
e2af785606 Make the new world order normative. Closes #2908. 2012-07-14 01:03:44 -07:00
Michael Sullivan
92743dc2a6 Move the world over to using the new style string literals and types. Closes #2907. 2012-07-14 01:03:43 -07:00
Michael Sullivan
5c5065e8bd Don't emit strings when the destination is ignored. 2012-07-14 00:07:24 -07:00
Michael Sullivan
eaf8b7675e Warn on old strs 2012-07-13 17:59:59 -07:00
Lindsey Kuper
1ffc0720bb Add FIXME marking where the work on #2794 has gotten to, so far. 2012-07-13 17:46:24 -07:00
Lindsey Kuper
9aa8a84766 Make an error message more grammatical. 2012-07-13 17:46:24 -07:00
Michael Sullivan
985b52be6d Support prefix notation for vstore strings. Closes #2906. 2012-07-13 17:03:49 -07:00
Lindsey Kuper
7bba0ae973 Change stray cont to again in a comment. 2012-07-13 15:45:24 -07:00
Lindsey Kuper
5a63b2100e More consistent use of backticks and "expected" in error messages.
Got some of the debug messages, here, too.  I figure it doesn't hurt
to get used to doing this even in places where users won't ever see
it.
2012-07-13 15:31:39 -07:00
Tim Chevalier
07a81ad12e Refactor how impl self types are stored
In order to avoid a confusing use of the tcache, I added an extra
node ID field to trait refs. Now trait refs have a "ref ID" (the one
that resolve3 resolves) and an "impl ID" (the one that you look up
in the tcache to get the self type).

Closes #2434
2012-07-13 14:47:04 -07:00
Lindsey Kuper
fc9c4c3245 Front-end support for default impls in traits. 2012-07-13 11:16:07 -07:00
Lindsey Kuper
d5563d732d Consistently use "allowed" rather than "permitted" in error messages. 2012-07-13 11:10:18 -07:00
Niko Matsakis
a2f60651f1 add comments to region inference 2012-07-13 10:20:50 -07:00
Zack Corr
de001dd61c Change cont out of loop error to again out of loop 2012-07-14 01:24:33 +10:00
Tim Chevalier
78ec6fe30c Obliterate the callee_id hack
Exprs that could be applications of overloaded operators
(expr_unary, expr_binary, expr_index) relied on the previous node ID
being "reserved" to carry extra typechecking info. This was
incredibly error-prone. Fixed it; now all exprs have two node IDs
(which will be wasted in some cases; future work could make this
an option instead if the extra int field ends up being a performance
problem).

Closes #2804
2012-07-12 19:02:07 -07:00
Eric Holk
aba665da32 Fix the signature on vec::view.
Due to limitations in region inference, this has the effect of making vec::view pretty much entirely unusable.
2012-07-12 18:16:00 -07:00
Brian Anderson
dac4916cec rustc: Resolve bounds of trait type parameters 2012-07-12 18:04:40 -07:00
Michael Sullivan
c84c4a8d71 Handle str/~ in patterns. 2012-07-12 16:52:26 -07:00