Commit Graph

1070 Commits

Author SHA1 Message Date
Nick Desaulniers
7868b6bf55 Remove fail keyword from lexer & parser and clean up remaining calls to
fail

Fix merge conflicts - Issue 4524
2013-02-01 00:15:42 -08:00
Nick Desaulniers
6fb4239bb3 Replace most invocations of fail keyword with die! macro 2013-01-31 22:25:12 -08:00
Nick Desaulniers
aee7929469 Replace most invocations of fail keyword with die! macro 2013-01-31 20:12:49 -08:00
Niko Matsakis
0682ad0eb9 Finalize moves-based-on-type implementation.
Changes:

- Refactor move mode computation
- Removes move mode arguments, unary move, capture clauses
  (though they still parse for backwards compatibility)
- Simplify how moves are handled in trans
- Fix a number of illegal copies that cropped up
- Workaround for bug involving def-ids in params
  (see details below)

Future work (I'll open bugs for these...):

- Improve error messages for moves that are due
  to bindings
- Add support for moving owned content like a.b.c
  to borrow check, test in trans (but I think it'll
  "just work")
- Proper fix for def-ids in params

Def ids in params:

Move captures into a map instead of recomputing.

This is a workaround for a larger bug having to do with the def-ids associated
with ty_params, which are not always properly preserved when inlining.  I am
not sure of my preferred fix for the larger bug yet.  This current fix removes
the only code in trans that I know of which relies on ty_param def-ids, but
feels fragile.
2013-01-31 12:09:00 -08:00
Patrick Walton
366812a5c3 librustc: Change self as a type to Self everywhere. r=brson 2013-01-30 19:52:45 -08:00
Graydon Hoare
040035cd08 test: fix compile-fail tests somehow missed from local 'make check', r=burningtree. 2013-01-30 17:07:35 -08:00
Patrick Walton
2a65842c3a test: De-export aux, bench, compile-fail, and run-fail. rs=deexporting 2013-01-30 15:08:45 -08:00
Brian Anderson
02e907b648 Remove oldcomm from the test suite 2013-01-30 00:48:10 -08:00
Patrick Walton
226cd68f13 librustc: De-implicit-self the visitor. r=graydon 2013-01-29 10:43:12 -08:00
Patrick Walton
6ce74460e6 librustc: Disallow trait bounds in types, enumerations, and structure definitions. r=tjc 2013-01-29 10:42:58 -08:00
Patrick Walton
eb4d39e1fe libstd: Remove "dual impls" from the language and enforce coherence rules. r=brson
"Dual impls" are impls that are both type implementations and trait
implementations. They can lead to ambiguity and so this patch removes them
from the language.

This also enforces coherence rules. Without this patch, records can implement
traits not defined in the current crate. This patch fixes this, and updates
all of rustc to adhere to the new enforcement. Most of this patch is fixing
rustc to obey the coherence rules, which involves converting a bunch of records
to structs.
2013-01-29 10:42:45 -08:00
Tim Chevalier
58ec84a098 testsuite: Remove structural records from remaining compile-fail tests 2013-01-28 19:41:56 -08:00
Niko Matsakis
2b67d88809 Rewrite the coercion code to be more readable, more sound, and to reborrow when
needed.

Regarding soundness: there was a subtle bug in how it was done before; see the
compile-fail test for an example.

Regarding reborrowing: reborrowing allows mut and const
slices/borrowed-pointers to be used with pure fns that expect immutable data.

r=brson
2013-01-28 10:01:59 -08:00
Niko Matsakis
2e10ea58c3 Integrate vec patterns into borrow checker.
The tail portion of the pattern effectively borrows a vector,
but the borrow checker knew nothing about this.

r=catamorphism
2013-01-28 10:00:32 -08:00
Tyler Bindon
c89afc3971 Fix Option camel case in a compile-fail test
The compile fails for another reason, that triggers before the the failure for non-camel cased option, some or none undefined errors.
2013-01-25 19:42:24 -07:00
Tyler Bindon
edc94f5c23 Fix Option camel case in xfailed/ignored tests 2013-01-25 19:42:23 -07:00
Patrick Walton
ad25e208ee librustc: Allow &mut to be loaned; allow self to be loaned; make &mut loanable to &. r=nmatsakis 2013-01-24 13:52:22 -08:00
Tim Chevalier
86b8bf37bb testsuite: Capitalize error message, unbreak build 2013-01-24 12:14:26 -08:00
Tim Chevalier
f3ec278e46 Merge pull request #4609 from sonwow/keyword-super
Make `super` a keyword
2013-01-24 11:17:52 -08:00
Tim Chevalier
5b64c796a4 syntax/rustc: Improve error message for misuse of for loop
Print out a clearer error message when a `for` gets
used with the wrong type of iterator. Also fix spans on `for` loop
bodies, and suppress some more derived errors.

r=brson

Closes #3651
2013-01-24 11:04:54 -08:00
Youngsoo Son
4b2aa286d8 Make super a keyword 2013-01-24 16:07:04 +09:00
Tim Chevalier
ab13beb05a Merge pull request #4587 from sanxiyn/divide-by-zero
Handle divide by zero in constant evaluator
2013-01-23 14:56:07 -08:00
Tim Chevalier
54344c2468 testsuite: Add tests for mutable function arguments 2013-01-22 23:34:35 -08:00
Seo Sanghyeon
3ed39ce26f Handle divide by zero in constant evaluator 2013-01-23 15:07:00 +09:00
Tim Chevalier
b9920b052b testsuite: Tweak tests for #3888 2013-01-20 19:51:33 -08:00
Tim Chevalier
e5bf6d1afa testsuite: Update error message, unbreak build 2013-01-20 18:22:11 -08:00
Tim Chevalier
ef0f71dc3f testsuite: Add xfailed test for #4335 2013-01-19 17:39:15 -08:00
Tim Chevalier
1e1707ccb8 testsuite: Add license 2013-01-19 17:38:12 -08:00
Tim Chevalier
96b4f43675 Handle region errors where the actual scope is a statement
Prevents a case of "unknown scope, this is a bug".

I judged this too small to review. Closes #4500
2013-01-19 17:06:36 -08:00
Tim Chevalier
90372da5a8 testsuite: Update error messages. Unbreak build, I hope 2013-01-18 13:35:07 -08:00
Niko Matsakis
440f8dfc4e Correct tests
rs=breakage
2013-01-17 18:45:57 -08:00
Patrick Walton
9f7514bfae test: Fix busted compile-fail tests. rs=bustage 2013-01-17 16:30:59 -08:00
Patrick Walton
a2ec5400ff Merge pull request #4493 from jbclements/rename-moved-variable-to-moved-value
s/moved variable/moved value/
2013-01-16 12:30:55 -08:00
Graydon Hoare
84825ee310 librustc: Make the default sigil for block lambdas & instead of @. 2013-01-15 17:57:45 -08:00
John Clements
3bf8b8af98 s/moved variable/moved value/ 2013-01-14 17:38:22 -08:00
ILyoan
b7cefd0c96 allowing the entry point name to be something other than main
add build tests
2013-01-14 13:58:13 -08:00
Tim Chevalier
329a57882f Add xfailed test for #3973 2013-01-10 15:35:41 -08:00
Niko Matsakis
89ed595e30 correct expected error msgs in various tests rs=breakage 2013-01-10 13:58:14 -08:00
Tim Chevalier
8a687dd8e4 tests: Add two test cases, one xfailed 2013-01-10 13:44:27 -08:00
Niko Matsakis
737e115646 mode: reset mode on entry to fn body.
This is an interim fix to address the "Beware!" unsoundness.  I have a
more comprehensive rewrite of mode.rs in the pipeline.

r=pcwalton
2013-01-10 13:17:25 -08:00
Patrick Walton
2a1b6c4de9 librustc: Implement &static as the replacement for Durable. r=nmatsakis 2013-01-10 11:16:54 -08:00
Niko Matsakis
2b92962aa2 A collection of refactorings that I found it hard/tiresome to divide:
- Make `extern fn()` assignable to any closure type, rather than
  a subtype.
- Remove unused int_ty_set and float_ty_set
- Refactor variable unification and make it more DRY
- Do fn sub/lub/glb on the level of fn_sig
- Rename infer::to_str::ToStr to infer::to_str::InferStr
- Capitalize names of various types
- Correct hashing of FnMeta
- Convert various records-of-fns into structs-of-fns.  This is both
  eliminating use of deprecated features and more forwards compatible
  with fn reform.

r=pcwalton
2013-01-09 14:59:07 -08:00
Patrick Walton
2db3abddcd librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc 2013-01-08 22:02:35 -08:00
Patrick Walton
44ab00ee37 Revert "librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc"
This reverts commit a8d37af247.
2013-01-08 19:29:16 -08:00
Patrick Walton
a8d37af247 librustc: Make unqualified identifier searches terminate at the nearest module scope. r=tjc 2013-01-08 19:27:57 -08:00
Niko Matsakis
9f7dc1cb33 Remove ret_style and instead check whether fn return type is bot
cc #3681
2013-01-08 14:21:06 -08:00
Tim Chevalier
80435ad429 Make self visible when typechecking nested functions
Necessary to allow supertrait methods to be called in default methods.

r=nikomatsakis
2013-01-08 13:56:26 -08:00
Tim Chevalier
7b433d098a Revert "Change the self def_id to a self_info in typeck, and inherit"
This reverts commit 921393c568.
2013-01-07 18:18:22 -08:00
Tim Chevalier
921393c568 Change the self def_id to a self_info in typeck, and inherit
That is, treat `self` as if it has dynamic scope. This seems to
be harmless, and prevents an ICE as per #3563
2013-01-07 18:08:19 -08:00
Tim Chevalier
fb9458e1ec xfail broken tests 2013-01-07 18:05:18 -08:00