407 Commits

Author SHA1 Message Date
Marijn Haverbeke
c34e9b33d9 Move expr ids into the expr record type
This simplifies the tag variants a bit and makes expr_node_id
obsolete.
2011-06-21 22:25:32 +02:00
Marijn Haverbeke
854b3a9b73 Use ast_map in typeck, instead of building another index 2011-06-20 23:53:28 +02:00
Marijn Haverbeke
75681f9ad7 Get rid of def_ids and anns in AST nodes, use single node_id
This reduces some redundancy in the AST data structures and cruft in
the code that works with them. To get a def_id from a node_id, apply
ast::local_def, which adds the local crate_num to the given node_id.
Most code only deals with crate-local node_ids, and won't have to
create def_ids at all.
2011-06-20 23:53:28 +02:00
Eric Holk
a2dcd08cc2 Added string duplication to deep_copy. Closes #520. 2011-06-20 13:47:02 -07:00
Eric Holk
992153672b Removed duplicated ret_ty_of_fn. This also means the native function branch is working now, so this commit closes #506. 2011-06-20 12:04:33 -07:00
Patrick Walton
3f7380ccec rustc: Change smallintmap to use an ivec and use it for the node type table. 3x typechecking speedup. 2011-06-19 18:03:19 -07:00
Brian Anderson
76a752e7a4 rustc: Export only what's needed from middle::ty
The list is formidable.
2011-06-19 12:27:43 -07:00
Brian Anderson
43427dae0c rustc: Rename session.span_err -> span_fatal, err -> fatal
Issue #440
2011-06-19 12:19:53 -07:00
Brian Anderson
cf9ed08a50 Revert previous 6 commits. Hopefully put out Windows fire.
Revert "rustc: Export only what's needed from middle::ty"

This reverts commit 4255d58aa5db2a05362c4435a0e807205e1b8ed7.

Revert "rustc: Make name resolution errors less fatal"

This reverts commit b8ab9ea89c16c60237e7660804f4321f59ae0435.

Revert "rustc: Make import resolution errors less fatal"

This reverts commit 92a8ae94b971206bf0502da3dc5f416fcb24cc36.

Revert "rustc: Export only what's used from middle::resolve"

This reverts commit 4539a2cf7ad99851a165c98ed2f4e4a475cffd7d.

Revert "rustc: Re-introduce session.span_err, session.err"

This reverts commit 7fe9a88e31ae07f2fd89f6715efedd7e3edf49e6.

Revert "rustc: Rename session.span_err -> span_fatal, err -> fatal"

This reverts commit c394a7f49ac29a099994e243017065de2ff97f2a.
2011-06-19 03:29:19 -07:00
Brian Anderson
4255d58aa5 rustc: Export only what's needed from middle::ty
The list is formidable.
2011-06-19 02:42:05 -07:00
Brian Anderson
c394a7f49a rustc: Rename session.span_err -> span_fatal, err -> fatal
Issue #440
2011-06-19 02:40:59 -07:00
Patrick Walton
2ba7729ae7 rustc: Cache results of type_has_pointers. 70% translation speedup. 2011-06-18 00:41:25 -07:00
Eric Holk
81fc51a8d7 Started using deep_copy for spawn arguments. 2011-06-17 15:17:46 -07:00
Patrick Walton
e43a3755dd rustc: Add a type_owns_heap_mem() predicate 2011-06-17 12:32:18 -07:00
Patrick Walton
4918c99f69 rustc: Copy the contents of generic interior vectors 2011-06-17 12:22:53 -07:00
Patrick Walton
4bb7597542 Revert "rustc: Copy the contents of generic interior vectors"
This reverts commit 5bdbe1dfc217b77ff6ff5c0d67b8ac274b50f2d3.
2011-06-17 12:03:21 -07:00
Patrick Walton
5bdbe1dfc2 rustc: Copy the contents of generic interior vectors 2011-06-17 11:45:51 -07:00
Brian Anderson
a4d88dacc9 rustc: Fail to unify if two ty_vars don't unify
Closes #500
2011-06-17 11:35:00 -07:00
Paul Stansifer
391348ec86 Consistify ast::local. 2011-06-16 17:56:24 -07:00
Patrick Walton
e50c918e6b rustc: Implement type walking and comparison glue for unsafe pointers 2011-06-16 17:07:02 -07:00
Graydon Hoare
b84fffaa4e Reformat a bunch of recent churn. 2011-06-16 16:55:46 -07:00
Tim Chevalier
219924e669 Bring back if-check
Add "if check" (expr_if_check), a variation on check that executes
an "else" clause rather than failing if the check doesn't hold.
2011-06-16 12:13:20 -07:00
Michael Sullivan
cfd1f74ebb Bring swap through typechecking and typestate. 2011-06-16 11:47:54 -07:00
Marijn Haverbeke
15f71b3600 Refactor ast::item representation
Most of the fields in an AST item were present in all variants. Things
could be simplified considerably by putting them in the rec rather
than in the variant tags.
2011-06-16 13:32:35 +02:00
Tim Chevalier
a5bca7df88 Refactor data structures representing constraints (again...)
I added a "resolved" version of the ast::constr type -- ty::constr_def
-- that has a def_id field instead of an ann_field. This is more
consistent with other types and eliminates some checking.

Incidentally, I removed the def_map argument to the top-level function
in middle::alias, since the ty::ctxt already has a def_map field.
2011-06-15 15:38:12 -07:00
Graydon Hoare
ce72993488 Reformat source tree (minus a couple tests that are still grumpy). 2011-06-15 11:19:50 -07:00
Brian Anderson
1c9277e0d3 rustc: Make room in remaining AST item nodes for attributes
Issue #487
2011-06-15 09:48:55 -07:00
Brian Anderson
31116dcdd5 rustc: Make room in item_mod for metadata
Issue #487
2011-06-15 09:46:37 -07:00
Marijn Haverbeke
471436a299 Implement function expressions/anonymous functions
Looks like 'fn(..arg..) -> ret {body;}. They don't support type
parameters or upvars yet.
2011-06-14 18:22:46 +02:00
Patrick Walton
c3bf7d07e9 rustc: Implement simple interior vector append translation 2011-06-13 18:57:25 -07:00
Tim Chevalier
d65ad8c31c Change decl to local in expr_for and expr_for_each
Since the decl in a for or for-each loop must always be a local
decl, I changed the AST to express this. Fewer potential match
failures and "the impossible happened" error messages = yay!
2011-06-13 17:33:04 -07:00
Patrick Walton
4375329031 rustc: Translate interior vector index expressions 2011-06-11 23:15:16 -07:00
Patrick Walton
00eb3f5798 rustc: Sketch out translation of interior vector literals and take/drop glue 2011-06-10 19:36:33 -07:00
Tim Chevalier
698c6406ba Reject programs with unsatisfied predicate constraints
Generate appropriate constraints for calls to functions with
preconditions, and reject calls where those constraints don't
hold true in the prestate.

...by which I mean that it works for one test case :-)
2011-06-10 19:17:15 -07:00
Patrick Walton
451fc176d3 rustc: Derive flags for unsafe pointers. Puts out burning tinderbox. 2011-06-10 13:13:46 -07:00
Patrick Walton
4634f236a9 rustc: Add some missing cases to ty.rs for interior vectors, and modify the pattern match so this is less likely to happen again. Add the LLVM type mapping as well. 2011-06-10 12:07:38 -07:00
Patrick Walton
cc3d484d9d rustc: Add missing cases for istr and ivec to equal_type_structures() 2011-06-10 11:00:56 -07:00
Patrick Walton
7b7c746c1e Merge pull request #447 from paulstansifer/quick_error_message_fix
Error message, instead of segfault, when recursive types are used.
2011-06-10 10:53:42 -07:00
Marijn Haverbeke
fccf065266 Implement mutable/immutable alias distinction.
Before, all aliases were implicitly mutable, and writing
&mutable was the same as writing &. Now, the two are
distinguished, and assignments to regular aliases are
no longer allowed.
2011-06-10 12:15:58 +02:00
Patrick Walton
5318248f24 rustc: Annotate vector and string literals in the AST with their uniqueness or lack thereof 2011-06-09 17:11:21 -07:00
Patrick Walton
1c48102838 rustc: Add ty_istr and ty_ivec types 2011-06-09 16:23:19 -07:00
Patrick Walton
c7ca08d1b6 rustc: Remove all calls to resolve_all_vars and the function itself 2011-06-09 14:17:50 -07:00
Patrick Walton
3009574165 rustc: Unify with the root types 2011-06-09 14:04:11 -07:00
Tim Chevalier
17ff2a0d79 Further support for predicate constraints
Changed function types to include a list of constraints. Added
code for parsing and pretty-printing constraints. This necessitated
splitting pprust into two files (pprust and ppaux) to break a
circulate dependency, as ty_to_str now needs to print out constraints,
which may include literals, but pprust depended on ty.
2011-06-09 11:37:52 -07:00
Patrick Walton
a4663d2845 rustc: Add fast paths for vars and param folds. 3x typechecking speedup. 2011-06-09 11:20:47 -07:00
Patrick Walton
6feb1dfd76 rustc: Don't eagerly resolve type variables after unification 2011-06-08 18:42:34 -07:00
Patrick Walton
cc7a8b668f rustc: Make resolve_all_vars() check to see whether the type actually has vars before folding over it; also remove some debug code. 2x typechecking speedup. 2011-06-08 18:05:45 -07:00
Patrick Walton
7527084e62 rustc: Don't generate so many variables when typechecking functions; remove mo_either 2011-06-08 18:05:45 -07:00
Patrick Walton
99c72b98b5 rustc: Use cnames in ty_to_str again; debugging code crept in 2011-06-08 15:49:46 -07:00
Patrick Walton
4571172c03 rustc: Remove pushdown. 15 second improvement. 2011-06-08 12:24:05 -07:00