Commit Graph

643 Commits

Author SHA1 Message Date
Niko Matsakis
8e73bb6ea0 detect and report shadows in nested bindings 2012-05-21 09:37:22 -07:00
Niko Matsakis
28d0ce9a8b fix up handling of &x where x is an arg or &self (for now at least). 2012-05-19 10:33:14 -07:00
Paul Stansifer
9fe547d3a7 Make extracting syntax extension arguments easier. 2012-05-18 10:05:24 -07:00
Tim Chevalier
0343b0553b Test that a class type name gets printed correctly in a...
"cannot be dereferenced" error message. Closes #2370
2012-05-17 09:40:43 -07:00
Niko Matsakis
21fc3af031 add xfail-fast directives for borrowck tests 2012-05-16 12:44:54 -07:00
Niko Matsakis
63210ecddb correct preservation of explicit borrows like "let x = &*y;" 2012-05-16 07:19:19 -07:00
Niko Matsakis
4bfa19b100 rename test 2012-05-15 21:20:52 -07:00
Niko Matsakis
9c7b74b025 check if the type of a local variable contains illegal region
also, try to suppress some of the duplicate errors---in general
more work is needed to make these error messages comprehensible
to ordinary humans
2012-05-15 21:20:37 -07:00
Niko Matsakis
ab735320b4 move regionck into typeck, in the process fixing a bug or two 2012-05-15 19:05:03 -07:00
Lindsey Kuper
b8880e3254 Remove be keyword.
Closes #2227.
2012-05-15 10:41:14 -07:00
Tim Chevalier
89cd2f6bd0 Enforce that self doesn't escape from a class
Closes #2294
2012-05-14 14:26:10 -07:00
Niko Matsakis
a6b9fa0cd1 new test for loaning out an index 2012-05-11 18:27:17 -07:00
Niko Matsakis
63eb8e0e87 move purity checking into borrowck, addresses #1422 2012-05-11 14:05:58 -07:00
Niko Matsakis
5dbf881e87 three new tests for assigning to various unassignable things 2012-05-11 06:41:58 -07:00
Niko Matsakis
b4d1f1b2c1 replace mutbl pass with borrowck 2012-05-10 21:14:43 -07:00
Paul Stansifer
f943667af3 Remove do ... while loops from the tests and docs. 2012-05-10 15:27:42 -07:00
Niko Matsakis
50a3dd40ae implement new borrow ck (disabled by default) 2012-05-09 17:00:19 -07:00
Niko Matsakis
5e7229b72c reduce self type to a special type parameter 2012-05-09 07:11:59 -07:00
Marijn Haverbeke
96a159a6ea Support visibility modifiers and attributes on view items
Issue #1893
Tangentially, issue #2357
2012-05-08 23:14:24 +02:00
Tim Chevalier
1460ea43d2 Add xfailed test case for #2354 2012-05-07 14:43:31 -07:00
Niko Matsakis
8a9df5aa38 make it illegal to implicitly capture mutable variables
this is the final part of #1273
2012-05-07 13:22:42 -07:00
Tim Chevalier
95a2b5d42f Add test case that checks that class members must be prefixed with "self"
Closes #2289.
2012-05-04 13:44:01 -07:00
Niko Matsakis
50ec6bd2c3 new cap clause syntax 2012-05-04 12:33:08 -07:00
Niko Matsakis
cfa09d35a3 Revert "allow fn exprs to omit arg types"
This reverts commit 1ba4ca4c4a.
2012-05-03 14:42:34 -07:00
Niko Matsakis
1ba4ca4c4a allow fn exprs to omit arg types
also, avoid using type variables for fn args with omitted types
unless necessary.  This will be important for bound regions in
fn types.

fixes #2093
2012-05-03 14:32:32 -07:00
Tim Chevalier
d8f28be753 Check early on in typeck that types being implemented are actually iface types
Closes #2330.
2012-05-03 12:38:45 -07:00
Marijn Haverbeke
d0d71838cd Mention missing constructor when complaining about inexhaustive top-level pattern
It previously, uselessly, only pointed out the constructor when the
inexhaustive pattern was nested in some other pattern.

Closes #2337
2012-05-03 17:35:12 +02:00
Niko Matsakis
f1129635ee report ambig impl methods 2012-05-02 21:47:14 -07:00
Graydon Hoare
b12e27595e Error message reformatting, close #2309. 2012-05-02 14:47:33 -07:00
Niko Matsakis
2db4259b35 Stop inferring bot/static when types/regions are unconstrained.
Also, some other changes that came up along the way:
- add a 'blk' region for the current block.
- detect unused type/region variables.
2012-04-30 19:53:02 -07:00
Niko Matsakis
e348567f77 new, simpler approach to the iter library 2012-04-27 16:57:50 -07:00
Brian Anderson
5eca3c2210 parser: More refactoring of restricted value name checking 2012-04-27 16:45:54 -07:00
Brian Anderson
48368c5a07 test: Add test for two restricted keyword cases 2012-04-27 16:45:54 -07:00
Graydon Hoare
1f92538e38 Add check for path-statements, close #400. 2012-04-26 14:43:43 -07:00
Graydon Hoare
33a296f2fc Lowercase warning message. 2012-04-26 14:43:43 -07:00
Niko Matsakis
825fd1808e lots of work to make iface/impls parameterized by regions
- paths can now take region parameters, replacing the dirty hack
  I was doing before of abusing vstores.  vstores are now a bit
  of a hack though.

- fix various small bugs:
  - we never checked that iface types were compatible when casting
    to an iface with `as`
  - we allowed nonsense like int<int>
  - and more! (actually that may be it)
2012-04-25 19:26:56 -07:00
Marijn Haverbeke
9f99c3263b Rewrite exhaustiveness checker
Issue #2111
2012-04-25 09:15:17 +02:00
Brian Anderson
08d0707556 syntax: Make 'true' and 'false' bad words
When these are idents they are always shadowed by the boolean
constants.
2012-04-24 22:00:32 -07:00
Brian Anderson
e7dbf42214 rustc: Fix type_need_unwind_cleanup. Closes #2272 2012-04-24 14:55:16 -07:00
Brian Anderson
31853f31bf build: Don't require full target libs to run compiletest tests
Only build through librustsyntax, which some tests do rely on.
2012-04-24 13:30:03 -07:00
Tim Chevalier
f7641286b2 Allow classes to be cast to ifaces that are in the same crate
I had to xfail one existing test case (class-implements-int) because,
I think, of the same bug described in #2272.
2012-04-23 21:15:03 -07:00
Niko Matsakis
30d563839e Various regions fixes. 2012-04-23 08:02:59 -07:00
Marijn Haverbeke
68f8812511 Guard against infinitely expanding generic/inline functions
Closes #2220

Test case disabled until a memory-leak issue is resolved.
2012-04-23 16:44:52 +02:00
Marijn Haverbeke
2782cfb783 Emit a more useful error when using an unsuitable function for a loop
Closes #2255
2012-04-23 15:43:29 +02:00
Marijn Haverbeke
9053f54498 Move map iface over to more for-friendly iteration methods 2012-04-23 15:18:19 +02:00
Brian Anderson
7235f3cee2 syntax: Eliminate 'mutable' keyword. Closes #2254 2012-04-21 14:27:20 -07:00
Tim Chevalier
734166f41c Print out return type correctly in typestate error message
In the "not all paths return" error message, typestate was printing
the AST type from the fn decl, not the ty::t type. This ended in tears
when the AST return type was "ty_infer". Now it looks up the function node
ID's type and uses util::ppaux::ty_to_str instead.

Closes #2163.
2012-04-20 18:48:08 -07:00
Niko Matsakis
3d6c79109e update syntax to include a slash 2012-04-19 21:01:11 -07:00
Niko Matsakis
3c995fb8f3 make nominal types optionally parameterized by a self region.
Issue #2201.
2012-04-19 21:01:11 -07:00
Niko Matsakis
f3f34bf09b correct universally_quantify to use structure_of, and introduce a test for this 2012-04-19 21:01:11 -07:00
Tim Chevalier
cdc8722f95 Add a lint pass to check for while true { ... } loops
And suggest changing them to loop { ... }. Had to fix the few
remaining while true loops (in core::io). Closes #1962.
2012-04-19 18:14:38 -07:00
Tim Chevalier
b0074c5a92 Disallow rebinding / matching against consts in alts
As per Issue #1193. Closes #1193.

I had to rename a few variables ("info" and "epsilon") to avoid
clashing with in-scope constants, which is responsible for all the
changes other than resolve and issue-1193.rs.
2012-04-19 16:21:15 -07:00
Brian Anderson
9a8a04629e syntax: Put the main parser interface in mod parse 2012-04-18 10:50:50 -07:00
Niko Matsakis
4c26d70a0a new debug flag, new test 2012-04-17 12:02:36 -07:00
Niko Matsakis
6b549f9f14 repair LUB/GLB of free/scope regions, and enable test 2012-04-17 12:02:36 -07:00
Niko Matsakis
35a93e61d4 rewrite region resolution so it takes place in typeck 2012-04-16 19:48:00 -07:00
Tim Chevalier
4f4a468e84 Forbid deinitializing upvars in typestate
Closes #1965.
2012-04-15 01:05:41 -07:00
Niko Matsakis
cc16165e40 implement evec/estr subtyping/lub/glb/etc 2012-04-14 18:48:58 -07:00
Niko Matsakis
27f1c2b742 first stab at type checking for borrow: not integrated into trans 2012-04-13 10:41:46 -07:00
Tim Chevalier
ea0063788b Add a run-fail test for result::get, get rid of a FIXME. Also some random other tests, mostly xfailed. 2012-04-12 20:24:07 -07:00
Graydon Hoare
8a7fd4a04f Support general warnings and errors in lint pass via flags and attrs. Close #1543. 2012-04-12 17:31:49 -07:00
Brian Anderson
db7a1f7b0c test: Add compile-fail test for shadowing in-scope enums 2012-04-11 21:28:25 -07:00
Niko Matsakis
c1c60c023e first attempt at an assignability check 2012-04-11 17:21:53 -07:00
Tim Chevalier
5c12cd72f4 Allow classes to implement ifaces
Introduce syntax like:

iface animal { ... }
class cat implements animal { ... }

to allow classes to implement ifaces. Casting classes to ifaces
is *not* yet supported. ifaces that a class implements are not
yet included in metadata.

The syntax is subject to change, and may go away completely if we
decide to use duck typing to relate classes with ifaces (see
http://smallcultfollowing.com/babysteps/blog/2012/04/10/declared-vs-duckish-typing/ )
2012-04-11 16:20:01 -07:00
Brian Anderson
0094ffd99b test: Add test for mismatched nominal types when using multiple crate vers 2012-04-07 17:40:34 -07:00
Niko Matsakis
1e42c9a367 Do not consider ty_bot to be a "resolved type".
Fixes #2149. Fixes #2150. Fixes #2151.
2012-04-07 17:12:48 -07:00
Marijn Haverbeke
fc202ca034 Remove support for old-style for
Closes #1619
2012-04-06 20:38:23 +02:00
Marijn Haverbeke
c902eafa14 Convert old-style for loops to new-style
Most could use the each method, but because of the hack used to
disambiguate old- and new-style loops, some had to use vec::each.

(This hack will go away soon.)

Issue #1619
2012-04-06 20:38:23 +02:00
Brian Anderson
9c88e5ef5a test: Refactor the crateresolve tests
Keep their aux builds from stomping on each other
2012-04-06 10:58:03 -07:00
Brian Anderson
de3528846f rustc: Fail when there are multiple matches for 'use' 2012-04-06 10:58:03 -07:00
Niko Matsakis
586b072eef Make tps invariant for now. Fixes #1973. 2012-04-06 08:31:12 -07:00
Niko Matsakis
2c56ba7e43 improve error messages 2012-04-06 06:59:00 -07:00
Niko Matsakis
051f24da25 add static region and also fix regions to be contravariant 2012-04-05 21:16:28 -07:00
Niko Matsakis
b91c9f803d simplify typing rule for vector addition: use mutability of LHS 2012-04-05 15:18:26 -07:00
Niko Matsakis
79cbdba037 new tests for things we'll have to fix eventually 2012-04-05 15:18:26 -07:00
Niko Matsakis
c0d61795de wip: refactor repr of regions
- we now distinguish bound/free parameters (see region-param
  test case for why this is necessary)
- we also track bounds on region variables
- also, restructure fold_ty() to have multiple variants without
  duplication instead of one overloaded folder.  This also allows
  for using block functions.
2012-04-04 19:41:23 -07:00
Graydon Hoare
ab4105d9e8 Make nonconstructable enums noncopyable, close #1907. 2012-04-04 19:07:52 -07:00
Brian Anderson
9aa7241f05 rustc: Don't allow recursive constants 2012-04-04 16:12:57 -07:00
Niko Matsakis
f682b99e36 generate correct constraints for assignments 2012-03-29 19:41:09 -07:00
Niko Matsakis
76d0a13ae5 resolve type variables with no constraints to bot 2012-03-29 19:41:09 -07:00
Tim Chevalier
c7082ce8e8 Require "self" as base expression for intra-class method or field references
All field or method references within a class must begin with "self." now.
A bare reference to a field or method in the same class will no longer
typecheck.
2012-03-29 12:22:01 -07:00
Tim Chevalier
f7bbe537c1 Allow explicit self-calls within classes
Allow writing self.f() within a class that has a method f. In a future
commit, this syntax will be required. For now, you can write either
self.f() or f().

I added a "privacy" field to all methods (whether class methods or not),
which allowed me to refactor the AST somewhat (getting rid of the
class_item type; now there's just class_member).
2012-03-28 20:30:07 -07:00
Niko Matsakis
fe610f04d8 use fresh vars in place of _|_ when incorrect # of params supplied 2012-03-28 17:02:54 -07:00
Niko Matsakis
23f92ea370 Detect and report types which could never be instantiated.
Fixes #2063.
2012-03-28 17:02:54 -07:00
Tim Chevalier
52f2a9a1c9 Test case to make sure typestate checks the body of class constructors 2012-03-28 10:38:57 -07:00
Tim Chevalier
edb747ceed Enforce mutability declarations in classes; correct shapes for classes
1. Enforce mutability declarations on class fields. Don't allow any
mutation of class fields not declared as mutable (except inside the
constructor).

2. Handle classes correctly in shape (treat classes like records).
2012-03-27 22:11:58 -07:00
Graydon Hoare
6e6798c4e1 Bulk-edit mutable -> mut. 2012-03-26 18:35:18 -07:00
Tim Chevalier
11610f9ca1 In typeck, don't call ty::store_iface_methods on private methods
This was resulting in a different error message depending on whether
the private method you were trying to call was in the same crate
or a different one.
2012-03-26 10:46:37 -07:00
Niko Matsakis
21111660ca Improve type inference to compute LUB/GLB 2012-03-26 10:34:58 -07:00
Tim Chevalier
2112c391cd Remove stray comment 2012-03-26 10:04:46 -07:00
Tim Chevalier
c282810ab0 Enforce privacy declarations for class fields and methods 2012-03-26 10:00:33 -07:00
Marijn Haverbeke
87e097a853 Disallow ret inside of block functions
Also adds proper checking for cont/break being inside a loop.

Closes #1854
Issue #1619
2012-03-26 12:45:47 +02:00
Niko Matsakis
1d7d5c16b3 correct more broken tests 2012-03-24 22:15:34 -07:00
Niko Matsakis
bf9d714d46 Avoid unifying vars when possible; handle bot (more) correctly 2012-03-24 21:38:43 -07:00
Niko Matsakis
ee5d0f5e3f new test which features conflicting variance requirements 2012-03-24 21:38:42 -07:00
Patrick Walton
8bef2716fe test: Add a simple test for dangling pointers 2012-03-24 19:00:08 -07:00
Niko Matsakis
042c532a08 Implement new inference algorithm. 2012-03-23 21:47:28 -07:00
Niko Matsakis
cfcbec3cc3 Implement an initial version of placement new. 2012-03-20 20:39:40 -07:00
Niko Matsakis
e399ddbf17 allow binding of fn~, make result fn@. fixes 1899. 2012-03-16 17:48:53 -04:00
Marijn Haverbeke
35fc4a4291 Check kind bounds when calling methods
Closes #1915
2012-03-16 17:05:29 +01:00