Niko Matsakis
cd1056df78
migrate size_of() and related funcs from trans into shape
2012-01-21 19:31:51 -08:00
Graham Fawcett
7763b40c71
issue #1352 : change param order on vec::init_elt, putting block in final position.
...
To match the init_fn() and init_fn_mut() changes.
2012-01-21 13:33:16 -08:00
Graham Fawcett
35d12be2ce
fix #1352 : change param order on vec::init_fn (and vec::init_fn_mut), putting block in final position.
2012-01-21 13:31:12 -08:00
Haitao Li
2a59ab8fa5
rustc: Specify lint checks via crate attributes
...
A crate attribute like `#[lint(no_ctypes)]` can now be used to turn off
ctypes checking.
Issue #1543
2012-01-22 01:33:37 +08:00
Haitao Li
635e8200e1
rustc: Always resolve reexported names from original def
...
Issue #1501
2012-01-21 18:03:09 +08:00
Tim Chevalier
ba5cc236f7
WIP on issue 1426 (exporting all tags)
...
Support Lenny222's proposed syntax for exporting a tag without
its variants, or selected tags from a variant, in the AST and parser.
No support further down the line yet. Tests are xfailed.
2012-01-20 19:48:33 -08:00
Tim Chevalier
e36df0f6c8
Handle fail after return correctly in typestate
...
Previously, typestate would conclude that this function was
correctly diverging:
fn f() -> ! { ret; fail; }
even though it always returns to the caller. It wasn't handling the
i_diverge and i_return bits correctly in the fail case. Fixed it.
Closes #897
2012-01-20 17:26:31 -08:00
Tim Chevalier
d242edb57b
Handle predicates that recurse in a check() expression
...
typestate was using the enclosing function ID for the "this function
returns" constraint, which meant confusion and panic in the case
where a predicate p includes "check p()". Fixed it to use a fresh
ID.
Closes #933
2012-01-19 22:53:22 -08:00
Graydon Hoare
7b1a8f0a91
Additional ; to , changes, disable "tag" and ";" in parser. Close #1430 . Close #1428 .
2012-01-19 19:29:21 -08:00
Patrick Walton
a23f188bdb
rustc: Stop parsing "tag"
2012-01-19 19:23:47 -08:00
Patrick Walton
59ebe6af18
rustc: Make the pretty printer output commas after enum variants. Update all tests accordingly.
2012-01-19 18:41:06 -08:00
Brian Anderson
991db34b5b
rustc: Fix fun_to_str
2012-01-19 18:14:17 -08:00
Patrick Walton
c267821742
rustc: ";" to "," in enums
2012-01-19 18:04:25 -08:00
Patrick Walton
7a663032fb
rustc: Remove trailing whitespace
2012-01-19 17:49:23 -08:00
Tim Chevalier
c7592803d9
Compute typestates for FRU exprs correctly, plus a bit of cleanup
...
The code in Issue 948 was causing typestate to diverge because
it was using the prestate for the whole expression -- not the post-
state for the fields list -- as the prestate for the record base
expression. Fixed.
Closes #948
2012-01-19 17:24:27 -08:00
Tim Chevalier
94d2063577
Handle log expressions with a _|_-typed level
...
If we have log(foo, quux) where foo:_|_, just translate foo and
ignore the rest of the expression.
Closes #1459
2012-01-19 14:44:40 -08:00
Patrick Walton
daaeac56b1
rustc: Fix long lines
2012-01-19 14:34:23 -08:00
Patrick Walton
bdb8f6cf52
rustc: "tag" -> "enum"
2012-01-19 14:24:03 -08:00
Brian Anderson
f15182fffc
Use fn~ to simplify the core::test interface
2012-01-19 13:37:01 -08:00
Tim Chevalier
3e25444e51
In trans, allow _|_-typed things to be the argument to fail
...
Rationale: _|_-typed things diverge, so it's safe to use them in
any context.
Closes #1465
2012-01-19 13:30:31 -08:00
Graydon Hoare
4e7de69cda
Partial fix for #1561 , doesn't actually "fix" the problem but you get output now.
...
There's still something wrong with #error here, possibly cross-crate issue.
2012-01-19 11:11:47 -08:00
Niko Matsakis
882bea5b6d
Rename fn*() to fn() as originally planned.
2012-01-19 07:11:50 -08:00
Niko Matsakis
1f0b3d2247
treat fn*() as fn&()
...
This is not my ideal way of going about things. I'd prefer not
to have expressions typed as fn*(), for example, but I couldn't
get that to work together with inferring the modes of arguments
and other corner cases.
2012-01-19 07:10:59 -08:00
Haitao Li
d699db699a
rustc: Refactor lint check and avoid a segv fault
...
The segv fault issue is #1566
2012-01-19 20:31:43 +08:00
Haitao Li
7ffb2cb7e8
rustc: Name the lint-style check module lint
...
Issue #1543
2012-01-19 17:54:38 +08:00
Haitao Li
327a15d58c
rustc: Add a usage pass to collect one-off analyses
...
This patch starts from move the analysis which checkes of probably
incorrectly usage of `int|uint` in native fn.
Issue #1543
2012-01-19 17:27:44 +08:00
Haitao Li
45c0651a49
rustc: Use io::println for time-passes data
...
Issue #1561
2012-01-19 17:25:15 +08:00
Tim Chevalier
5b028f527f
Remove support for the '.' after a nullary tag in a pattern
...
(Commit also includes lots of changes to remove '.'s that a git
merge messed up, or else it was monkeys.)
2012-01-19 01:04:59 -08:00
Tim Chevalier
04a2887f87
Remove '.' after nullary tags in patterns
...
Does what it says on the tin.
The next commit will remove support for this syntax.
2012-01-18 23:17:34 -08:00
Tim Chevalier
8c97854c7d
Allow any alternative (not just a block) to follow a nullary tag pattern
2012-01-18 21:29:02 -08:00
Tim Chevalier
209d8c854f
allow dotless nullary patterns inside or-patterns
2012-01-18 21:29:02 -08:00
Tim Chevalier
a453197734
Another minor parser fix for nullary-tag patterns
2012-01-18 21:29:02 -08:00
Tim Chevalier
bf83fd3091
Allow nullary tag names to be qualified
2012-01-18 21:29:02 -08:00
Brian Anderson
3ebf7b42bd
rustc: Assert that the parser doesn't assign node id 0
...
It is reserved for indicating the crate, but doesn't exist in the AST
2012-01-18 19:59:24 -08:00
Graydon Hoare
6a6aec04a2
Fix --out-dir a bit more in driver.
2012-01-18 18:44:07 -08:00
Niko Matsakis
54f6bf57e6
remove align_mode and rewrite GEP_tup_like to align correctly
...
Although the old version of GEP_tup_like was incorrect in some
cases, I do not believe we ever used it in an incorrect fashion.
In particular, it could go wrong with extended index sequences
like [0, 1, 3], but as near as I can tell we only ever use it
with short sequences like [0, i].
2012-01-18 17:20:46 -08:00
Niko Matsakis
da828747e6
correct use of GEP_tup_like in closure constr
...
also, streamline type_is_tup_like() to the cases which
actually work
2012-01-18 17:20:46 -08:00
Patrick Walton
1aaee20737
rustc: Accept commas to separate tag variants
2012-01-18 12:27:12 -08:00
Haitao Li
04882d7c43
rustc: Use integer from ctypes consistently
2012-01-19 02:10:36 +08:00
Haitao Li
dde41869ce
Use ctypes in native function declarations
2012-01-19 02:10:36 +08:00
Haitao Li
f03eb96f39
rustc: Warn when int or uint is used in a native type decl
...
Issue #1403
2012-01-19 02:10:36 +08:00
Niko Matsakis
31b25d81eb
use 64-bit memset on 64-bit platforms. Fixes #1546 . Fixes #843 .
...
Actually, we don't "fix" #843 so much as close it: as with memmove,
we simply use an alignment of 1 with dynamically sized types.
2012-01-17 20:21:09 -08:00
Niko Matsakis
7bc2930cfa
roll back commit 1c7a62
2012-01-17 20:21:09 -08:00
Brian Anderson
8acae671c7
rustc: Allow std to be built as a test runner
2012-01-17 19:41:05 -08:00
Graydon Hoare
80c7bfb069
Rename some readmes and fix some dist logic.
2012-01-17 16:50:13 -08:00
Brian Anderson
c0df13958c
Update crates with correct crate_type attribute
2012-01-17 15:13:43 -08:00
Brian Anderson
47b9fc278e
rustc: --test overrides the crate_type attribute
2012-01-17 15:13:43 -08:00
Graydon Hoare
711fc20d88
Merge pull request #1544 from kevina/issue-1393
...
Minor cleanups to custom discriminator code.
2012-01-17 12:45:09 -08:00
Niko Matsakis
a83ad1b9e6
encode variant names and have log print them out.
2012-01-17 10:33:28 -08:00
Tim Chevalier
c3bc8fada8
Allow omission of the '.' after nullary tag patterns
...
This commit allows patterns like:
alt x { some(_) { ... } none { } }
without the '.' after none. The parser suspends judgment about
whether a bare ident is a tag or a new bound variable; instead,
the resolver disambiguates.
This means that any code after resolution that pattern-matches on
patterns needs to call pat_util::normalize_pat, which consults
an environment to do this disambiguation.
In addition, local variables are no longer allowed to shadow
tag names, so this required changing some code (e.g. renaming
variables named "mut", and renaming ast::sub to subtract).
The parser currently accepts patterns with and without the '.'.
Once the compiler and libraries are changed, it will no longer
accept the '.'.
2012-01-17 10:08:16 -08:00