Graydon Hoare
18da7fef88
Merge remote-tracking branch 'origin/dist-snap' into incoming
2012-07-12 17:14:55 -07:00
Michael Sullivan
c84c4a8d71
Handle str/~ in patterns.
2012-07-12 16:52:26 -07:00
Michael Sullivan
2ea9c8df0f
Accept prefix notation for writing the types of str/~ and friends.
2012-07-12 16:52:26 -07:00
Brian Anderson
46fba10fe8
rustc: Make all impls even more reachable
...
With this we write metadata for all impls so that we can properly find
reexported impls.
2012-07-12 15:09:33 -07:00
Michael Sullivan
9d2e5f3a65
Merge branch 'rt-changes' into incoming
2012-07-12 15:03:54 -07:00
Michael Sullivan
7b26503566
Make str be treated as str/~.
2012-07-12 00:21:04 -07:00
Michael Sullivan
b569bdec9f
Refactor how we convert vstore ast types to ty types.
2012-07-12 00:12:13 -07:00
Niko Matsakis
b9aa9def85
infer when types are region parameterized rather than requiring /&
...
- removes various fields from various variants in the AST
- also update tests not to use this notation
2012-07-11 14:41:41 -07:00
Niko Matsakis
9b094c0baf
new option to note where purity is req'd
2012-07-11 14:41:41 -07:00
Niko Matsakis
668285b9c8
add ability to report statistics about how borrowck is being used
2012-07-11 14:41:41 -07:00
Patrick Walton
9b7d9a9a1b
rustc: Treat existential traits as base types for coherence purposes
2012-07-11 14:28:03 -07:00
Michael Sullivan
62e9ae04e2
Remove obsolete type param field from shape information.
2012-07-11 11:42:49 -07:00
Michael Sullivan
120773b2a7
Change the interface of placement new to take a tydesc as part of Issue #2831 .
2012-07-11 11:42:49 -07:00
Patrick Walton
e51f259ff0
rustc: Add some more checks to coherence
2012-07-11 11:23:14 -07:00
Graydon Hoare
aa7b3cc929
Fix some version numbers.
2012-07-11 09:09:08 -07:00
Eric Holk
877ebed6cf
Visit item macros.
2012-07-10 22:00:48 -07:00
Tim Chevalier
f39477d926
In resolve, check that an or-pattern has the same number of bindings in each disjunct
...
resolve3 wasn't checking this. Added test cases. Also added a helpful informational
message in the case where you have a variable binding that you probably think
refers to a variant that you forgot to import.
This is easier to do in resolve than in typeck because there's code in typeck
that assumes that each of the patterns binds the same number of variables.
2012-07-10 18:24:41 -07:00
Patrick Walton
019d4291c7
rustc: Introduce a coherence checker, behind a compile switch for now
2012-07-10 17:35:18 -07:00
Michael Sullivan
a7897b3ef3
Eliminate some obsolete upcalls.
2012-07-10 16:33:21 -07:00
Michael Sullivan
260f73ed85
Get rid of unused fields in tydescs. Closes #2351 .
2012-07-10 16:33:21 -07:00
Michael Sullivan
e430a699f2
Fix take glue for slices.
2012-07-10 16:32:54 -07:00
Michael Sullivan
baebccd2c8
Don't fail when emitting free glue for fixed and region evecs.
2012-07-10 15:57:48 -07:00
Graydon Hoare
f2b8ab0ad3
Mop up merge collision.
2012-07-10 15:25:58 -07:00
Graydon Hoare
0a4a602a23
Modify reflect interface to pass tydescs back to client, stop on false return.
...
These changes are required to prune type-recursion and admit early
returns in the visitor code. Changes to visitors in subsequent csets.
2012-07-10 15:16:48 -07:00
Michael Sullivan
ef9a64709e
Make old_vecs an error.
2012-07-10 15:12:13 -07:00
Michael Sullivan
bf06deafe6
Disallow implicitly binding methods in typechecker. Closes #2189 .
2012-07-10 15:12:13 -07:00
Michael Sullivan
e4362a59b9
Remove the empty tuple of tydescs from closures. Closes #2531 .
2012-07-10 15:12:13 -07:00
Michael Sullivan
95dd9f3204
Get rid of a lot of bind related cruft as part of Issue #2189 .
2012-07-10 15:12:12 -07:00
Michael Sullivan
40fc1737b2
Get rid of places that expected foo.bar to implicitly bind.
2012-07-10 15:12:12 -07:00
Michael Sullivan
25b152397d
Clean up the tydesc handling code in trans.
2012-07-10 15:12:12 -07:00
Michael Sullivan
0070527383
Pretty print vectors as ~[] instead of []/~. Closes #2863 .
2012-07-10 13:55:19 -07:00
Patrick Walton
a6ee46db0b
rustc: Resolve expressions in literal and range patterns
2012-07-10 12:30:02 -07:00
Patrick Walton
f0fe08f1c8
rustc: Handle foreign item purity correctly in resolve3
2012-07-09 18:39:10 -07:00
Paul Stansifer
579768baa5
Allow folds to drop items.
2012-07-09 17:44:46 -07:00
Patrick Walton
7d90edcb3b
rustc: Switch over to resolve3
2012-07-09 17:44:16 -07:00
Patrick Walton
6912b11089
rustc: Fix the collision with Tim's change
2012-07-09 17:44:15 -07:00
Patrick Walton
ad673daa6c
Revert "rustc: Switch over to resolve3" due to Linux failures
...
This reverts commit 2c0aa257e2
.
2012-07-09 16:50:19 -07:00
Patrick Walton
2c0aa257e2
rustc: Switch over to resolve3
2012-07-09 16:29:25 -07:00
Patrick Walton
2edc4195d5
rustc: Allow import resolutions to be inferred from external crates in resolve3
2012-07-09 16:29:25 -07:00
Tim Chevalier
271da617cb
Tag re-exports differently in metadata
...
so that the "list metadata" command doesn't print out anything
about intrinsics, but other code can see them.
Closes #2771
2012-07-09 15:21:29 -07:00
Graydon Hoare
f210deae3d
Merge branch 'incoming' of github.com:/mozilla/rust into incoming
...
Conflicts:
src/snapshots.txt
2012-07-09 14:38:37 -07:00
Graydon Hoare
c26d02557e
Switch 'cont' to 'again' everywhere. Close #2229 .
2012-07-09 14:37:48 -07:00
Brian Anderson
b7a418e194
rustc: Conditionally compile view items. #2357
2012-07-09 14:09:03 -07:00
Josh Matthews
a7f6e00944
Fix metadata serialization of foreign functions. Properly take the value of foreign functions from other crates to fix #1840 .
2012-07-09 13:13:49 -07:00
Patrick Walton
4d8113725d
rustc: Add some changes I missed
2012-07-09 11:05:48 -07:00
Ben Blum
8ffab392ab
change borrowck error msg: 'declared in outer block' -> 'captured in a closure' (properly this time)
2012-07-09 14:01:39 -04:00
Patrick Walton
e41029d236
rustc: Switch to the new resolution pass
2012-07-09 10:27:13 -07:00
Brian Anderson
ea03315cf4
Revert "change borrowck error msg: 'declared in outer block' -> 'captured in a closure'"
...
This change requires some tests to be updated.
This reverts commit b5b8f5efcc
.
2012-07-08 00:07:15 -07:00
Niko Matsakis
a856bccdc6
Revert "rustc: Switch to the new resolution pass"
...
This reverts commit c4af6e92fb
.
Branch was burning...many, many unresolved imports.
2012-07-06 20:45:06 -07:00
Ben Blum
b5b8f5efcc
change borrowck error msg: 'declared in outer block' -> 'captured in a closure'
2012-07-06 22:30:50 -04:00
Patrick Walton
c4af6e92fb
rustc: Switch to the new resolution pass
2012-07-06 19:07:26 -07:00
Michael Sullivan
038f925586
Be less eager about implicit borrowing when doing method resolution. Closes #2796 .
2012-07-06 15:55:18 -07:00
Graydon Hoare
ceac155211
For #2229 , recognize 'again' in place of 'cont', final change pending snapshot.
2012-07-06 15:46:39 -07:00
Michael Sullivan
9e6b43fb33
Rip out a bunch more append code from trans.
2012-07-06 15:04:57 -07:00
Eric Holk
0e1a6cf3d9
Remove tvec::trans_add
2012-07-06 14:13:52 -07:00
Niko Matsakis
11d868e925
paper over #2586 by not failing when the key is not found
2012-07-06 14:10:40 -07:00
Michael Sullivan
ee0177b908
Move string append to libraries. Closes #2710 .
2012-07-06 13:37:56 -07:00
Eric Holk
05cdda3a2c
Plumbing and parsing for item-position macros.
2012-07-06 10:42:40 -07:00
Lindsey Kuper
47f61c5429
Clean up error message punctuation/capitalization
2012-07-05 16:18:58 -07:00
Tim Chevalier
a0dbf58245
Remove duplicate, un-used copy of astencode
2012-07-05 16:11:51 -07:00
Tim Chevalier
889be71cb4
Comments only: change TODOs to FIXMEs and annotate them
2012-07-05 16:10:29 -07:00
Michael Sullivan
b0d4f09201
Consider slices to be a structural type. Closes #2748 .
2012-07-05 14:48:23 -07:00
Lindsey Kuper
33334f3c43
Change 'iface' to 'trait' internally; parse trait
as iface
synonym
2012-07-05 11:01:43 -07:00
Gareth Daniel Smith
be0141666d
convert doc-attributes to doc-comments using ./src/etc/sugarise-doc-comments.py (and manually tweaking) - for issue #2498
2012-07-04 19:18:13 -07:00
Ben Striegel
f2e2a14f36
Remove empty argument lists from do expressions
2012-07-04 17:21:29 -07:00
Graydon Hoare
195dd54d61
Fix trans typo noticed by fuzzer. Close #2148 .
2012-07-04 14:07:03 -07:00
Patrick Walton
cc3b6bf2f0
rustc: Make the error names in resolve3 conform more closely to what the compile-fail tests expect
2012-07-03 19:10:45 -07:00
Patrick Walton
dbbffbea9a
rustc: Make a note of the fact that each_path doesn't handle path nesting properly
2012-07-03 18:32:47 -07:00
Brian Anderson
ae6ea068a1
Revert "Remove rule requiring non-nil block-style statements to be semi-terminated"
...
This reverts commit 0f5eaef5fb
.
2012-07-03 17:30:25 -07:00
Patrick Walton
af38333f75
rustc: Speed up def ID parsing in the metadata
2012-07-03 17:12:02 -07:00
Brian Anderson
0f5eaef5fb
Remove rule requiring non-nil block-style statements to be semi-terminated
...
This is a subtle rule that no longer seems to be required.
2012-07-03 17:03:52 -07:00
Graydon Hoare
be2c92078b
Change crust -> extern.
2012-07-03 16:49:46 -07:00
Patrick Walton
742c05f87d
rustc: Avoid a lot of copying in metadata when reading impls
2012-07-03 16:38:35 -07:00
Graydon Hoare
debb7e4641
Switch 'native' to 'extern' (or 'foreign' in some descriptions)
2012-07-03 16:11:00 -07:00
Patrick Walton
bfbc847f63
rustc: Add X-ray functionality to resolve3 so the test runner works
2012-07-03 15:56:27 -07:00
Patrick Walton
db8d9ddcbb
rustc: Record the main function in the session in resolve3
2012-07-03 12:20:15 -07:00
Michael Sullivan
d52f0f79bc
Fix some indentation in check::vtable.
2012-07-03 10:57:17 -07:00
Brian Anderson
ab193b9508
rustc: Remove some comments from resolve3 that are being misparsed as attributes
2012-07-02 20:06:07 -07:00
Patrick Walton
f093d374ed
rustc: Implement a new resolve pass behind a compile flag
2012-07-02 18:30:12 -07:00
Armin Ronacher
5bd9d6e05c
Implemented better error message for missing do statements.
...
This fixes #2783 for the case where an empty double pipe
symbol is being used without a do keyword.
2012-07-02 17:33:57 -07:00
Brian Anderson
9fe22a4ab7
Mark -g as experimental ( #2767 )
2012-07-02 17:22:49 -07:00
Brian Anderson
569467eb0d
Merge remote-tracking branch 'Dretch/prettydocs'
...
Conflicts:
src/compiletest/errors.rs
src/libsyntax/parse/attr.rs
src/libsyntax/parse/comments.rs
src/test/compile-fail/ambig_impl_unify.rs
src/test/compile-fail/assign-super.rs
src/test/compile-fail/bad-for-loop.rs
src/test/compile-fail/bad-var-env-capture-in-block-arg.rs
src/test/compile-fail/block-arg-as-stmt-with-value.rs
src/test/compile-fail/borrowck-assign-comp-idx.rs
src/test/compile-fail/borrowck-lend-flow.rs
src/test/compile-fail/borrowck-loan-blocks-move-cc.rs
src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs
src/test/compile-fail/borrowck-loan-rcvr.rs
src/test/compile-fail/borrowck-loan-vec-content.rs
src/test/compile-fail/borrowck-mut-vec-as-imm-slice-bad.rs
src/test/compile-fail/cap-clause-with-stack-closure.rs
src/test/compile-fail/do1.rs
src/test/compile-fail/do2.rs
src/test/compile-fail/empty-vec-trailing-comma.rs
src/test/compile-fail/evec-subtyping.rs
src/test/compile-fail/issue-1896.rs
src/test/compile-fail/issue-2149.rs
src/test/compile-fail/issue-2150.rs
src/test/compile-fail/issue-2487-b.rs
src/test/compile-fail/kindck-implicit-close-over-mut-var.rs
src/test/compile-fail/liveness-issue-2163.rs
src/test/compile-fail/liveness-use-in-index-lvalue.rs
src/test/compile-fail/no-reuse-move-arc.rs
src/test/compile-fail/no-send-res-ports.rs
src/test/compile-fail/non-const.rs
src/test/compile-fail/pure-higher-order.rs
src/test/compile-fail/pure-loop-body.rs
src/test/compile-fail/regions-addr-of-upvar-self.rs
src/test/compile-fail/regions-escape-loop-via-vec.rs
src/test/compile-fail/regions-scoping.rs
src/test/compile-fail/seq-args.rs
src/test/compile-fail/tstate-unsat-in-called-fn-expr.rs
src/test/compile-fail/tstate-unsat-in-fn-expr.rs
src/test/compile-fail/vec-add.rs
src/test/compile-fail/vec-concat-bug.rs
src/test/compile-fail/vector-no-ann.rs
2012-07-02 15:23:41 -07:00
Brian Anderson
d1fc2b5995
Convert to new closure syntax
2012-07-01 19:19:32 -07:00
Brian Anderson
a3382b6f26
Eliminate usages of old sugared call syntax
2012-06-30 16:01:49 -07:00
Tim Chevalier
172fb1756b
Check in changes I forgot to check in
2012-06-30 09:12:45 -07:00
Gareth Daniel Smith
0b653ab953
initial draft of fix for issue #2498 :
...
1. make /// ... and //! ... and /** ... */ and /*! ... */ into sugar for #[doc = ...] attributes.
2. add a script in etc/ to help converting doc-attributes to doc-comments
3. add some functions to core::str to help with (1)
2012-06-30 11:54:54 +01:00
Tim Chevalier
f64c23fdfd
Descend into ty_boxes in type_use
...
type_use was failing to look into ty_boxes, which caused monomorphize
to coalesce instances that shouldn't have been coalesced (because they
should actually use different type glue)
Closes #2734
2012-06-30 00:34:03 -07:00
Eric Holk
328fd30cf4
Allow empty enums to be sent ( #2737 )
2012-06-29 18:39:27 -07:00
Eric Holk
0a99912cdd
Adding a bunch of atomic intrinsics.
...
Adding a test cases for the atomic intrinsics.
2012-06-29 18:37:29 -07:00
Michael Sullivan
98e161f00e
Switch the compiler over to using ~[] notation instead of []/~. Closes #2759 .
2012-06-29 17:41:45 -07:00
Eric Holk
c9e8b7de82
Merge branch 'master' of github.com:mozilla/rust into incoming
2012-06-28 17:30:36 -07:00
Michael Sullivan
d91e310982
Don't use literal info from the original source when pretty printing expanded ASTs.
2012-06-28 15:33:15 -07:00
Eric Holk
87eaf91be3
Replaced almost all vector+ in rustc ( #2719 )
...
Didn't update shape because the changes were causing segfaults.
2012-06-28 15:11:09 -07:00
Eric Holk
59221e9ac8
replace more vector + (issue #2719 )
2012-06-28 13:52:23 -07:00
Brian Anderson
9f7e62ea20
rustc: Fix a missing application of the operator in fold_ty
2012-06-27 20:11:59 -07:00
Patrick Walton
c1157161d9
rustc: Don't give variables the same name as enums in trans
...
Conflicts:
src/rustc/middle/trans/alt.rs
src/rustc/middle/trans/base.rs
src/rustc/middle/trans/closure.rs
src/rustc/middle/trans/impl.rs
src/rustc/middle/trans/uniq.rs
2012-06-27 14:11:02 -07:00
Patrick Walton
6cf5910de2
rustc: Don't allow multiple candidate methods from impls with the same def ID
2012-06-27 14:11:02 -07:00
Lindsey Kuper
f0565be49a
Better error message instead of bare "fail" in infer
2012-06-27 12:37:50 -07:00
Eric Holk
133fdc1148
Remove unnecessary bounds checks in vec::push_all (issue #2719 )
...
Don't needlessly drop closures (issue #2603 )
2012-06-27 11:32:22 -07:00
Graydon Hoare
697f1e38d6
Change 'native' and 'crust' to 'extern'.
...
This comes with a terminology change. All linkage-symbols are 'extern'
now, including rust syms in other crates. Some extern ABIs are
merely "foreign". The term "native" is retired, not clear/useful.
What was "crust" is now "extern" applied to a _definition_. This
is a bit of an overloading, but should be unambiguous: it means
that the definition should be made available to some non-rust ABI.
2012-06-26 16:18:37 -07:00
Michael Sullivan
51468b65a4
Properly cleanup slice literals. Closes #2705 .
2012-06-26 14:05:43 -07:00
Michael Sullivan
f17ca3f73e
Some box cleanup that doesn't break the build.
2012-06-26 13:58:21 -07:00
Patrick Walton
481267299d
rustc: Make trans no longer insist that there be exactly one impl scope per module
...
Conflicts:
src/rustc/middle/trans/base.rs
2012-06-26 13:45:18 -07:00
Michael Sullivan
f85fbcb67f
Revert "Clean up a bunch of box related code."
...
This reverts commit bacf9e9887
.
2012-06-26 12:58:58 -07:00
Tim Chevalier
91e44ea056
Be a little more clever about calculating sizes for class types
...
We could try to calculate the size of a partially-converted class type,
and run into an LLVM error because we were trying to calculate the size
of a named struct whose fields hadn't yet be filled in. The issue can be
dodged by extending simplify_type to convert classes to isomorphic
structural records, just for the purposes of size calculations.
(for real this time) Closes #2718
2012-06-26 11:14:39 -07:00
Tim Chevalier
cf69604551
Incorporate class fields into recursive-type check
...
Noticed while investigating issue 2718 that the typechecker allowed
some non-instantiable types involving classes. This wasn't the root of
2718, but fixed it anyway.
2012-06-26 11:14:39 -07:00
Tim Chevalier
d513d9893e
Typos in a comment and an error message
2012-06-26 11:14:38 -07:00
Michael Sullivan
bacf9e9887
Clean up a bunch of box related code.
2012-06-26 10:03:10 -07:00
Eric Holk
b9d3ad0736
Getting rid of lots more vector +=. (issue #2719 )
2012-06-26 00:39:18 -07:00
Michael Sullivan
15b60ac56b
Comments only: fix some comments that got spurious /~s
2012-06-25 20:35:32 -07:00
Michael Sullivan
329eca6044
Make vectors uglier ([]/~). Sorry. Should be temporary. Closes #2725 .
2012-06-25 20:00:46 -07:00
Michael Sullivan
c087aaf56b
When we cons up vector asts, generate evecs.
2012-06-25 20:00:39 -07:00
Michael Sullivan
a71a49faa8
Split deprecated str and vec warnings into two flags, enable old_vecs by default.
2012-06-25 19:29:27 -07:00
Brian Anderson
c2751c5640
rustc: Make 'do' work with effects the same as 'for'
2012-06-25 17:46:06 -07:00
Tim Chevalier
f1acc69a2a
Add class fields to the global index
...
Closes #2192
2012-06-25 17:25:54 -07:00
Tim Chevalier
da470ff5b8
Merge
2012-06-25 13:29:41 -07:00
Tim Chevalier
25b8b35c57
Finish compare glue for classes
...
This tests == and !=. I don't know what <, >, etc. should do.
Closes #2601
2012-06-25 12:20:10 -07:00
Brian Anderson
e991855d66
Make 'do' expressions accept stack closures
2012-06-24 18:01:27 -07:00
Tim Chevalier
487cbf8e90
Remove resources
...
Also fixed shapes for classes with dtors, as well as handling
offsets for classes with dtors correctly in take glue.
Closes #2485
2012-06-24 15:09:57 -07:00
Lindsey Kuper
ce7b803728
Minor capitalization/punctuation fixes in error messages
2012-06-22 16:48:03 -07:00
Lindsey Kuper
46809f7ab7
Nicer quoting in "attempted access of field" message. Issue #2358 .
2012-06-22 16:48:03 -07:00
Lindsey Kuper
47b1b7a207
Don't need a span on "main function not found" error. Issue #2707 .
2012-06-22 16:48:03 -07:00
Eric Holk
26c11f7b50
Use must_have_lock instead of private functions. (Issue #2700 )
...
I hereby declare that messages sent from the same source arrive in order (Issue #2605 )
Removing FIXME, owned is the correct type here. (Issue #2704 )
Remove outdated FIXME (Issue #2703 )
Updating test for spawning native functions (Issue #2602 )
Removing bogus FIXME (Issue #2599 )
2012-06-22 15:14:42 -07:00
Michael Sullivan
1d6fb24b70
Hack to make [] and []/~ the same type in preparation for switching to []/~.
2012-06-22 15:11:34 -07:00
Tim Chevalier
21399dca12
Change resources to classes in libstd and rustc
2012-06-22 11:53:25 -07:00
Michael Sullivan
986662cebd
Make the implicit copyability of []/~ configurable, like [] is, since we will be switching sooner rather than later.
2012-06-22 11:23:54 -07:00
Tim Chevalier
a141f58e9b
In reachability, traverse all classes that have dtors
...
since dtors always have external linkage
2012-06-21 21:46:12 -07:00
Tim Chevalier
cc323d8637
Make liveness print out a proper error message for moves out of a self field
...
This was a call to span_bug() before. I'm not sure about the other cases,
but the test case shows that the `vk_self` case can certainly arise with
a bad program, so it should be a span_err() thing and not a span_bug() thing.
Closes #2590
2012-06-21 17:43:10 -07:00
Graydon Hoare
312faf31df
Tag all remaining FIXMEs with bugs. Install rule in tidy script to enforce this.
2012-06-21 16:44:10 -07:00
Lindsey Kuper
abfa8164cd
Change the level of forcing in structurally_resolved_type().
...
A cleaner way to handle suffix inference for unary minus exprs.
2012-06-21 16:19:04 -07:00
Eric Holk
f54829cf13
Move vector addition out of trans and into libcore.
2012-06-21 16:11:11 -07:00
Eric Holk
0e5cfd9f33
Move vector addition out of trans and into libcore.
2012-06-21 16:11:11 -07:00
Eric Holk
f8fa0a2437
Generate a temporary for assign_ops. Issue #2581
2012-06-21 16:11:10 -07:00
Lindsey Kuper
e9d072ee89
Consolidate "make sure types are the same" fns. Issue #2644 .
2012-06-21 11:16:36 -07:00
Michael Sullivan
393f739990
Rename upcall_malloc_dyn to just upcall_malloc.
2012-06-21 10:47:45 -07:00
Niko Matsakis
287f163136
Issue #2657 : track mutability of bindings, also prevent move from bindings
2012-06-21 09:45:01 -07:00
Niko Matsakis
60603703ea
handle moves in let initializers and allow moves from unsafe ptrs
...
Related to issue #2657 , but this is not a complete fix.
2012-06-21 08:34:54 -07:00
Tim Chevalier
b02172971f
Make trans give correct types to monomorphic dtors
...
Irritatingly, class dtors have a different type from resource
dtors (because class dtors have a self argument), and the monomorphic
case wasn't reflecting that. Fixed.
2012-06-20 20:12:14 -07:00
Tim Chevalier
76d6120e52
Fix resolve bug that made nested classes not work
...
It wasn't possible to refer to the constructor for a class nested inside
an item from the class's outer scope. Fixed.
2012-06-20 20:12:14 -07:00
Tim Chevalier
6db7843f46
Monomorphize dtors correctly
...
The same dtor was getting re-used for different instances, which
didn't always work right. Fixed.
2012-06-20 20:12:14 -07:00
Tim Chevalier
e7ce32310b
Change map::get to map::find in ppaux
2012-06-20 20:12:13 -07:00
Tim Chevalier
f331cd9324
Don't consider loops to be breaking if they contain inner loops that break
...
Closes #2642
2012-06-20 18:53:38 -07:00
Brian Anderson
4dcf84e4f4
Remove bind. Issue #2189
2012-06-20 17:27:28 -07:00
Michael Sullivan
a057b13262
Don't allow + for evecs/estrs. It isn't implemented, and we are moving vec + to libs anyways.
2012-06-20 16:29:47 -07:00
Michael Sullivan
8aa5762d2e
Repair the formatting of the table in is_binopable.
2012-06-20 16:29:47 -07:00
Michael Sullivan
8040fd86bf
Call the correct type formatting function for more typecheck diagnostics. Closes #2652 .
2012-06-20 15:44:58 -07:00
Lindsey Kuper
60a658250e
Don't force resolution of integral type vars in unary minus exprs
...
These were getting resolved too early, when they were still
unconstrained by the rest of the typing context. Waiting a bit longer
to resolve them gives the rest of the typing context a chance to come
into play, so that they don't default to `int`.
2012-06-20 14:33:25 -07:00
Lindsey Kuper
64912c9a56
Use an unambiguous abbreviation for "operand" :)
2012-06-20 14:29:24 -07:00
Lindsey Kuper
5316fe6bb5
Add comments explaining integral type variables; fix typos
2012-06-20 12:46:38 -07:00
Michael Sullivan
a01bdbe207
Don't reverse all the arguments to span_lint for lint checking passes.
2012-06-20 10:30:48 -07:00
Niko Matsakis
773a640303
support autoderef on method calls
2012-06-19 20:46:48 -07:00
Eric Holk
e30a8b6f8c
Updating kind rules to make sure we don't sneakily send ports.
2012-06-19 17:37:51 -07:00
Lindsey Kuper
3cf582b529
Enable integer literal suffix inference.
2012-06-19 17:06:05 -07:00
Lindsey Kuper
b1fa8249f1
Fix incorrect fn name in debug statement
2012-06-19 17:04:39 -07:00
Lindsey Kuper
26bd186726
Don't create a new inference context for checking pattern ranges.
...
Ugly fix -- it would be better to refactor and consolidate the various
"make sure these types are the same" fns scattered around typeck.
2012-06-19 16:53:41 -07:00
Lindsey Kuper
3e281439a0
Union-find rank
optimization for infer.
...
Makes deep-vector2 not run out of stack when suffix inference is
enabled.
2012-06-19 16:35:26 -07:00
Lindsey Kuper
906169d608
Add a node
type in place of hand-rolled records in infer
2012-06-19 16:35:26 -07:00
Brian Anderson
636a849bf2
rustc: Add a temporary option to not link to the runtime
2012-06-19 12:36:59 -07:00
Niko Matsakis
6e73e45e37
first steps to autoderef on method calls
2012-06-19 11:52:39 -07:00
Niko Matsakis
b0646e0749
document liveness a bit better
2012-06-18 19:41:17 -07:00
Brian Anderson
1ec5a5c635
Add 'do' expressions
2012-06-18 17:42:30 -07:00
Michael Sullivan
30dd32d4db
Fix generation of str/@. Closes #2638 .
2012-06-18 15:54:37 -07:00
Michael Sullivan
797856cbde
Use unboxed vecs for string shape glue.
2012-06-18 15:54:37 -07:00
Lindsey Kuper
567e4d9c6f
Minor infer/typeck cleanups
2012-06-18 15:36:14 -07:00
Niko Matsakis
b0e66a6f3b
Undo workaround for #2633 since it is fixed.
...
This reverts commit a14df270dc
.
Conflicts:
src/rustc/middle/trans/base.rs
2012-06-17 16:38:13 -07:00
Niko Matsakis
982e1166b2
Issue #2633 : remove last_use entries that are subject to a loan
2012-06-17 16:17:40 -07:00
Tim Chevalier
416b3bfea4
Comments only
2012-06-16 15:16:31 -07:00
Tim Chevalier
a14df270dc
Make move_val take its first argument by copy
...
Workaround for #2633 -- should allow changes on eholk's branch to
compile without segfaulting.
2012-06-16 14:30:20 -07:00
Michael Sullivan
6e63e2fd5f
Fix copying of fixed length vectors. Closes #2630 .
2012-06-15 15:31:19 -07:00
Michael Sullivan
a56902304d
Make fixed length vecs implicitly copyable. Clean up some other kind code. Closes #2629
2012-06-15 15:31:19 -07:00
Tim Chevalier
093faaabe1
Handle index expressions' callee IDs correctly
...
Some code that handles unary and binary exprs' callee IDs was
forgetting to handle the index expr case (since calls to
user-defined index operators also have callee IDs). This was
manifesting as an ICE in trans because when monomorphizing a
function that had one of these operators in it (an index into a
dvec, in the test case), the callee ID would be unbound to a type.
Fixed it. Closes #2631 .
2012-06-15 15:21:17 -07:00
Lindsey Kuper
7a253eabce
Add an intermediate level of type/region variable resolution forcing
...
And change structurally_resolved_type() to force resolution of
non-region variables.
2012-06-15 12:54:44 -07:00
Paul Stansifer
1e36d216be
Add the interner to parse_sess.
2012-06-15 12:41:41 -07:00
Michael Sullivan
68670f631c
Make type_is_pod handle more types.
2012-06-15 11:48:04 -07:00
Patrick Walton
5151c08850
Issue #2591 : Fix "upvar" jargon in borrowck error messages
2012-06-14 23:18:09 -07:00
Eric Holk
56bd689767
Merge branch 'incoming' of github.com:mozilla/rust into newsnap
2012-06-14 21:03:41 -07:00
Eric Holk
8ab15c0266
Merge branch 'incoming' into newsnap
2012-06-14 20:36:16 -07:00
Lindsey Kuper
77e6573929
Further work on integer literal suffix inference ( #1425 )
...
In this commit:
* Change the lit_int_unsuffixed AST node to not carry a type, since
it doesn't need one
* Don't print "(unsuffixed)" when pretty-printing unsuffixed integer
literals
* Just print "I" instead of "(integral)" for integral type variables
* Set up trans to use the information that will be gathered during
typeck to construct the appropriate constants for unsuffixed int
literals
* Add logic for handling int_ty_sets in typeck::infer
* Clean up unnecessary code in typeck::infer
* Add missing mk_ functions to middle::ty
* Add ty_var_integral to a few of the type utility functions it was
missing from in middle::ty
2012-06-14 20:24:36 -07:00
Graydon Hoare
d953462d03
Complete a data visitor type that does proper pointer-walking.
2012-06-14 19:58:34 -07:00
Eric Holk
52c38ba886
Merge branch 'incoming' into newsnap
2012-06-14 19:36:22 -07:00
Patrick Walton
6969f0f2fc
Issue #2572 : (trans) Fix self-referential classes.
2012-06-14 18:51:31 -07:00
Tim Chevalier
dce5d6ab9c
whitespace
2012-06-14 18:46:10 -07:00
Michael Sullivan
af60716281
Get an initial implementation of boxed vectors working.
2012-06-14 18:01:05 -07:00
Tim Chevalier
97bcb20244
Avoid some duplicated typechecking work
...
There was a FIXME noting that ty::enum_variants and typeck::check::
check_enum_variants both call eval_const_expr. I tried refactoring the
code so that check_enum_variants does all the work and enum_variants
just looks up cached results, but this turned out not to be easy because
several ty functions call enum_variants and it might get invoked on an
enum before that enum item has been typechecked. Instead, I just made
check_enum_variants update the enum_var_cache so that enum_variants
will never call eval_const_expr twice on the same const.
2012-06-14 16:21:53 -07:00
Graydon Hoare
aeb9a2b72c
Add zero check/fail paths on div/mod paths. Close #944 .
2012-06-14 15:39:24 -07:00
Tim Chevalier
c6462eec30
Comments only: annotate FIXMEs in reflect
2012-06-14 14:13:52 -07:00
Eric Holk
74d2f56f21
Adding move_val and move_val_init intrinsics.
2012-06-14 13:49:41 -07:00
Tim Chevalier
1642df8efa
Remove a workaround
2012-06-14 12:40:49 -07:00
Tim Chevalier
fcab11da47
Refactor; annotate a FIXME
2012-06-14 12:24:56 -07:00
Tim Chevalier
24f9f45ac6
Comments only: annotate FIXMEs in typeck::infer
2012-06-14 12:10:48 -07:00
Tim Chevalier
699b14b99d
Comments only: annotate a FIXME and remove an obsolete one
2012-06-14 12:07:42 -07:00
Tim Chevalier
730381d936
Annotate and fix FIXMEs in typeck
2012-06-14 12:04:05 -07:00
Tim Chevalier
87af3f3cca
Dead code elimination
2012-06-14 11:10:32 -07:00
Michael Sullivan
591b2802ff
Make trans only generate calls to the _dyn malloc upcalls, so we can get rid of the non dyn ones.
2012-06-13 18:00:17 -07:00
Michael Sullivan
4c0d41cffa
Add a malloc_dyn upcall for dynamically sized allocations on the shared heap.
2012-06-13 17:59:21 -07:00
Tim Chevalier
e5a5fc2029
Allow impls to be re-exported
...
It was a little hard for me to believe, but it seems that re-exporting
an impl doesn't work at a, because encoder::encode_info_for_mod requires
that all the impls in the current module's impl map be local (that is,
bound to a value in the current crate's item map). Fixed it.
Closes #2414 .
2012-06-13 15:52:00 -07:00
Tim Chevalier
6f95c79b95
Traverse types in reachability
...
Issue 2526 showed a test case where a library exported only a type
that was a synonym for a class. Because the class's destructor wasn't
getting marked as reachable, its linkage was wrongly getting set to
"internal". The solution is for reachability to traverse types.
Closes #2526 .
2012-06-13 11:57:01 -07:00
Brian Anderson
ce750a7dbc
Box AST idents
2012-06-13 11:30:45 -07:00
Michael Sullivan
bdd2000066
Some cleanup in tvec.
2012-06-13 11:17:02 -07:00
Tim Chevalier
aa9d2d88d3
Handle class destructors correctly in metadata
...
This allows destructors to be inlined, which is necessary since
classes can have both ty params and destructors.
2012-06-12 17:37:04 -07:00