101 Commits

Author SHA1 Message Date
Marijn Haverbeke
e0fa5cd2ed Self types for ifaces
This allows a 'Name:' to appear in front of an iface declaration's
name, which will cause 'Name' to refer to the self type (with the same
number of type parameters as the iface has) in the method signatures
of the iface. For example:

    iface F: functor<A> {
        fn fmap<B>(f: fn(A) -> B) -> F<B>;
    }

Issue #1718
2012-02-06 09:56:41 +01:00
Niko Matsakis
77b06d24cd infer modes rather than overwriting with expected ty 2012-02-05 09:12:44 -08:00
Marijn Haverbeke
2dbaa05af8 Remove support for native types
Issue #1673
2012-02-01 12:23:13 +01:00
Tim Chevalier
fba35e1a3c Require alts to be exhaustive
middle::check_alt does the work. Lots of changes to add default cases
into alts that were previously inexhaustive.
2012-01-31 10:08:24 -08:00
Marijn Haverbeke
ec4d05de3b Remove ty_native_fn
It was being used as a clumsy synonym of ty_fn.
2012-01-26 10:37:50 +01:00
Marijn Haverbeke
76aabbe99d Rename tag to enum throughout the compiler
This should reduce confusion of people trying to read the code.
2012-01-25 14:34:31 +01:00
Patrick Walton
c267821742 rustc: ";" to "," in enums 2012-01-19 18:04:25 -08:00
Patrick Walton
bdb8f6cf52 rustc: "tag" -> "enum" 2012-01-19 14:24:03 -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
Marijn Haverbeke
b3927d6052 Don't write out type names when hashing types
I hope this is why my patch made things so much slower...
2012-01-16 17:03:51 +01:00
Marijn Haverbeke
1375b31c1c Store type names in crate metadata
Improves type error messages referring to external types.

Issue #1507
2012-01-16 12:08:00 +01:00
Niko Matsakis
8685a1f7c4 distinguish "any closure" and "stack closure" (block) 2012-01-13 09:31:40 -08:00
Niko Matsakis
455f8b0d45 deprecate fn exprs and the fn() type, preferring fn@ and native fn 2012-01-13 06:27:34 -08:00
Marijn Haverbeke
24102d50ad Obj system? What obj system?
Removes the obj system from the compiler.

Closes #1484
2012-01-13 11:51:29 +01:00
Marijn Haverbeke
34d7f05292 Major clean-up of std::io
Use ifaces instead of objs, stop wrapping everything in two (or three)
layers of no-value-added indirection, and remove some of the more
pointless/outdated idioms from the code.
2012-01-11 21:00:11 +01:00
Niko Matsakis
8b911587df rename sendfn to fn~, lambda to fn@ 2012-01-10 13:31:06 -08:00
Graydon Hoare
8387896dda Remove proto_sugar and 'lambda' as keyword, commit to fn@. 2012-01-09 16:12:48 -08:00
Niko Matsakis
8e89df69de rejigger impl to have an opaque closure ptr rather than
opaque closure
2012-01-06 22:40:31 -08:00
Marijn Haverbeke
3a20dda7ea Get external interfaces / impls working
Issue #1227
2012-01-05 14:17:31 +01:00
Marijn Haverbeke
40d5f288c3 Check that type parameter bounds are interface types
Issue #1227
2012-01-02 15:15:27 +01:00
Marijn Haverbeke
1ed6a27548 Change representation of type params to handle interface bounds
Issue #1227
2011-12-28 21:18:16 +01:00
Marijn Haverbeke
9292744959 Use the same type of record in ty::ty_fn and ty::method
Removes some more code duplication.
2011-12-23 16:11:35 +01:00
Niko Matsakis
52f76400b5 extend with ty_send_type and ty_opaque_closure 2011-12-16 08:06:44 -08:00
Niko Matsakis
aa1cd61c84 push changes through to get things compiling, if not running. 2011-12-14 14:32:18 -08:00
Graydon Hoare
fa9ad984fb Copy first batch of material from libstd to libcore. 2011-12-13 16:34:50 -08:00
Marijn Haverbeke
e3eca9174b Change literal representation to not truncate
Also shuffles around the organization of numeric literals and types,
separating by int/uint/float instead of machine-vs-non-machine types.
This simplifies some code.

Closes #974
Closes #1252
2011-12-07 21:08:28 +01:00
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
Haitao Li
5ca83553bc rustc: Remove abi from ast::native_mod 2011-11-21 13:49:52 +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
adc79e2f44 remove compile-command from local variable blocks 2011-11-17 11:46:13 -08:00
Haitao Li
5a7249c935 Cleanup unused imports 2011-11-10 19:19:40 -08:00
Brian Anderson
1afc943c91 rustc: Rename native_abi_c_stack_cdecl to native_abi_cdecl 2011-11-09 16:47:44 -08:00
Brian Anderson
10c35959e7 rustc: Rename native_abi_c_stack_stdcall to native_abi_stdcall 2011-11-09 16:47:44 -08:00
Brian Anderson
c7f0ca6063 Remove native "x86stdcall" ABI 2011-11-09 16:47:43 -08:00
Brian Anderson
4f3f04643f Remove native "cdecl" ABI 2011-11-08 17:17:06 -08:00
Brian Anderson
fcd39b1191 Remove native "llvm" ABI 2011-11-07 15:29:05 -08:00
Brian Anderson
1103fe8ca0 Remove native "rust" ABI 2011-11-07 15:14:10 -08:00
Marijn Haverbeke
0ce40f60e7 Drop support for iter, put, and for-each
Closes #1056
2011-10-21 13:47:24 +02:00
Brian Anderson
9efdd0f326 Merge ast::proto_shared and ast::proto_closure
Now they are both just proto_shared and proto_shared takes an
argument indicating that it is sugared as 'lambda'
2011-10-20 18:23:48 -07:00
Brian Anderson
4b30a06abe Rename ast::proto_fn to ast::proto_shared 2011-10-20 18:23:48 -07:00
Brian Anderson
cfa2346086 Use a non-ambiguous character for encoding bare functions
I was using 'R' and that was already used for records.

Issue #1022
2011-10-11 14:38:15 -07:00
Brian Anderson
b277039325 Introduce ast::proto_bare
Issue #1022
2011-10-11 10:51:10 -07:00
Marijn Haverbeke
f9fbd86f52 Parse and typecheck by-value and by-ref arg specs
Add sprinkle && throughout the compiler to make it typecheck again.

Issue #1008
2011-10-07 09:09:50 +02:00
Patrick Walton
968b66ad40 rustc: Implement C stack stdcall 2011-10-03 13:59:38 -07:00
Patrick Walton
f7d0c1cec3 rustc: Add a new "C stack cdecl" native ABI 2011-09-28 12:58:33 -07:00
Brian Anderson
1b3023e4d0 Convert ty::ty_uniq to contain a mutable type
Issue #409
2011-09-22 10:26:34 -07:00
Marijn Haverbeke
3abe3671bd Require the parameter that will be referenced to be noted
Issue #918
2011-09-15 16:15:17 +02:00
Marijn Haverbeke
93de2f0b74 Add syntax and representation for return-by-mutably-rooted-ref
This will be used in the near future to decide what can safely
be done with the returned reference.

Issue #918
2011-09-14 17:30:38 +02:00
Marijn Haverbeke
51dae63c44 Make most of the compiler aware of return-by-reference
tyencode/tydecode still don't know about it. return_ref will be extended to take
arguments anyway.
2011-09-14 11:31:05 +02:00