3773 Commits

Author SHA1 Message Date
Marijn Haverbeke
9fb3719ded Rollback return-by-reference
It's proving too inflexible, so I'm ripping out the extra complexity
in the hope that regions will, at some point, provide something
similar.

Closes #918
2011-11-23 11:02:27 +01:00
Marijn Haverbeke
acbc4aa9f8 Remove deep scope traversal in revoke_clean
It is not needed anymore.
2011-11-23 11:02:27 +01:00
Marijn Haverbeke
a8dd52ed36 Remove last traces of auth keyword
The reference now has an empty hole where the auth keyword used to be.
Changing the keyword table seems to require manually sorting the
keywords and putting them back into some kind of arcane interleaved
order. I'll open an issue to actually fix this.

Closes #1211
2011-11-23 11:02:27 +01:00
Haitao Li
a936f78d98 rustc: Allow trailing comma in record fields 2011-11-22 13:41:17 -08:00
Stefan Plantikow
148a6c1a38 comp: allowed the declaration of pure fn's in native mods
This is especially useful for the native calls in std::math

This commit does NOT yet point to new snapshots
2011-11-22 20:01:25 +01:00
Marijn Haverbeke
fedb775fbb Add hacks to extract and compile tutorial code
Not included in the build by default, since it's fragile and kludgy. Do
something like this to run it:

    cd doc/tutorial
    RUSTC=../../build/stage2/bin/rustc bash test.sh

Closes #1143
2011-11-22 16:12:23 +01:00
Marijn Haverbeke
1b8b0b8584 Properly check for copies when constructing a record using with
Closes #989
2011-11-22 13:27:40 +01:00
Marijn Haverbeke
1ce3a84a8f Make type_needs_drop accurate, get rid of type_has_pointers
Closes #1209
2011-11-22 13:16:23 +01:00
Marijn Haverbeke
bd16aac903 Fix inconsistency in ordering of patterns during alt compilation
Closes #1153
2011-11-22 12:44:59 +01:00
Marijn Haverbeke
5d6a74f020 Only warn about unreachable range patterns when appropriate
Also simplifies the literal-munging, and moves it into ast_util

Closes #1170
2011-11-22 11:49:29 +01:00
Marijn Haverbeke
8cc852af8c Make ast::visit only descend into types when necessary
If visit_ty is not overridden, it uses a stub function which does not
descend into types.

Closes #1204
2011-11-22 10:57:47 +01:00
Haitao Li
5ca83553bc rustc: Remove abi from ast::native_mod 2011-11-21 13:49:52 +01:00
Marijn Haverbeke
02574a5bdb Close hole in safe-reference analysis 2011-11-21 12:07:40 +01:00
Marijn Haverbeke
b4217b383b Add a pass that checks that blocks are only used in safe ways
Closes #1188
2011-11-21 11:01:15 +01:00
Marijn Haverbeke
86c1f16a10 Fix bad interaction between last-use finding and references
The last-use pass now takes input from the alias pass to not mark things
as last uses that are still accessed through a reference.

Issue #925
2011-11-21 09:25:42 +01:00
Niko Matsakis
9fa44a41e6 get pure wrappers approach running 2011-11-18 16:32:19 -08:00
Niko Matsakis
6072ddad33 sketch out design 2011-11-18 16:32:19 -08:00
Marijn Haverbeke
0e21df4610 Add some comments to kind.rs and last_use.rs 2011-11-18 17:09:36 +01:00
Marijn Haverbeke
8cf3ca3b55 Make sure by-copy arguments take last-use into account 2011-11-18 16:43:30 +01:00
Marijn Haverbeke
196b2b920f Make sure trans translates record fields in the order they appear in code
This prevents surprising side-effect orders, and makes them easier for
the other passes to deal with.
2011-11-18 15:59:47 +01:00
Marijn Haverbeke
68db68c4cc Make trans use last_use info to not actually generate copies
Issue #925
2011-11-18 15:56:53 +01:00
Marijn Haverbeke
f6491bb426 Update stdlib, compiler, and tests to new kind system
This involved adding 'copy' to more generics than I hoped, but an
experiment with making it implicit showed that that way lies madness --
unless enforced, you will not remember to mark functions that don't
copy as not requiring copyable kind.

Issue #1177
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
8f8ebb550c Implement a last-use-of-local finding algorithm
Issue #925
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
0c97fcbf66 Properly check kinds in instantiation of generics
Issue #1177
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
7bef89f9b5 Prevent alias pass from inserting implicit copies for noncopyable types
Issue #1177
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
17b78c4a7a Overhaul the kind-checking pass
Not really useful yet because missing last-use-of-local optimization.

Also: instantiation of type parameters needs to be checked.

Issue #1177
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
cefff237bf Make tag, resource and object constructors take their arguments by copy
Doing something like some([1, 2, 3]) will now no longer create a temporary
copy of the vector. It will also be easier for the kind checker to see that
putting a resource into a data-structure constructor is safe.
2011-11-18 12:49:01 +01:00
Marijn Haverbeke
4e03112141 Add a pass-by-copy parameter passing convention
This is intended to solve the problem of how to pass arguments to
constructor functions -- you want to move in rvalues, but not have to
explicitly copy stuff that is not an rvalue. The by-copy passing
convention will ensure the callee gets its own copy of the value. For
rvalues, it'll just pass off the value. For lvalues, it'll make a
copy.

Issue #1177
2011-11-18 12:49:00 +01:00
Marijn Haverbeke
9cf48d3753 Preparation for kind system overhaul
This goes before a snapshot, so that subsequenct patches can make the
transition without breaking the build. Disables kind checking pass, makes
parser accept both new and old-style kind annotation.

Issue #1177
2011-11-18 10:52:28 +01:00
Niko Matsakis
b30f7af98b remove blank line 2011-11-17 15:11:52 -08:00
Niko Matsakis
8925875ccb add FIXME for issue #1184 2011-11-17 13:44:13 -08:00
Niko Matsakis
0d874476cf fix resource-generic 2011-11-17 13:44:13 -08:00
Brian Anderson
dd275cd749 Stop using temporary intrinsic_2 functions 2011-11-17 11:55:04 -08:00
Niko Matsakis
adc79e2f44 remove compile-command from local variable blocks 2011-11-17 11:46:13 -08:00
Haitao Li
388eed383f rustc: Add a flag '--warn-unused-imports'
Followup of issue #889
2011-11-17 09:28:30 +01:00
Haitao Li
fe6484d3e6 rustc: Fix warn on unused import bug
rustc generates incorrect warning for cascaded import declarations like:

  use std;
  import std::io;
  import io::println;
  fn main() { println("hello"); }

  warning: unused import io

A followup of issue #889
2011-11-17 09:27:17 +01:00
Niko Matsakis
bfc81352aa remove unused flag (thanks lht) 2011-11-16 21:52:01 -08:00
Stefan Plantikow
99c421f01d Removed --no-typestate flag from rutsc
Fixes issue #1139
2011-11-16 18:52:46 -08:00
Brian Anderson
55f89dbed9 rustc: Fix help text for --sysroot 2011-11-16 18:35:30 -08:00
Niko Matsakis
809ca13bfa fix minor merge errors 2011-11-16 16:13:43 -08:00
Niko Matsakis
c22ad0752f wrap long line 2011-11-16 15:27:49 -08:00
Niko Matsakis
037a1de405 apply calling convention at call site too 2011-11-16 15:27:09 -08:00
Niko Matsakis
834b6879ea temp workaround for failure to pass ulonglong successfully 2011-11-16 15:27:09 -08:00
Niko Matsakis
cbcdeb80d9 remove wrappers from intrinsics 2011-11-16 15:27:08 -08:00
Niko Matsakis
e3699a2636 make stdcall use shim 2011-11-16 15:24:56 -08:00
Brian Anderson
d2199e8716 Various fixes for x86_64 on linux
Configure LLVM correctly, use the right data layout, add the readlink
function back, fix C constants, etc.
2011-11-16 15:24:56 -08:00
Niko Matsakis
319f3b02f3 fix natives with user-specified link names, remove unused imports 2011-11-16 15:24:38 -08:00
Niko Matsakis
b27a88e99c fix bug in shape where s_int/s_uint were not customized to platform 2011-11-16 15:16:43 -08:00
Niko Matsakis
9043bd9778 wrap long line; 2011-11-16 15:16:43 -08:00
Niko Matsakis
b3ae63c9d9 temporarily disable these tests b/c they crash rustc 2011-11-16 15:16:43 -08:00