Graydon Hoare
5678f5aa56
Typecheck field expressions.
2010-11-25 16:40:03 -08:00
Graydon Hoare
092af6fb76
Typecheck tup expressions.
2010-11-25 14:44:04 -08:00
Graydon Hoare
cffdb66aa4
Translate tuple-expressions.
2010-11-24 18:11:11 -08:00
Patrick Walton
78ec07790a
rustc: Assign definition IDs to type params
2010-11-24 18:01:20 -08:00
Patrick Walton
9769b61226
rustc: Parse type-parametric typedefs
2010-11-24 17:36:22 -08:00
Patrick Walton
98e8c2ef21
rustc: Parse type-parametric tags
2010-11-24 17:17:42 -08:00
Graydon Hoare
f809375b16
Sketch out type-directed structural drop and copy, including vector types.
2010-11-24 16:56:01 -08:00
Graydon Hoare
96540ef0bb
move expr_call translation into helper function.
2010-11-24 16:56:01 -08:00
Graydon Hoare
e2f9f746ea
Move expr_cast translation into helper function.
2010-11-24 16:56:01 -08:00
Patrick Walton
c1916adc7e
rustc: Parse type-parametric functions
2010-11-24 16:52:49 -08:00
Patrick Walton
80d099c59a
rustc: Don't require a semicolon after an "alt" statement
2010-11-24 16:29:44 -08:00
Patrick Walton
f075b10af2
rustc: Add patterns to fold
2010-11-24 15:45:59 -08:00
Patrick Walton
756880a5f5
rustc: Parse simple patterns
2010-11-24 14:42:01 -08:00
Patrick Walton
5d72dae1d1
rustc: Parse tag items. Currently segfaults in copy glue.
2010-11-24 11:36:35 -08:00
Patrick Walton
f55f46af64
rustc: Typecheck whiles and do-whiles. Add a workaround to complex.rs pending a solution to the one-armed-if problem.
2010-11-23 17:02:08 -08:00
Patrick Walton
4208352527
rustc: As an experiment, swap the expected/actual types when checking function arguments. Produces better diagnostics for arg-type-mismatch.rs.
2010-11-23 10:25:20 -08:00
Graydon Hoare
f2a7e712d3
Remove warning about non-void expr stmts.
2010-11-22 18:03:27 -08:00
Patrick Walton
c20ea9e60a
rustc: Un-XFAIL compile-fail/arg-type-mismatch.rs.
2010-11-22 17:56:45 -08:00
Graydon Hoare
e05d7c3ac1
Support mach types in rustc, enable 5 more tests.
2010-11-22 17:41:32 -08:00
Patrick Walton
3e01b2d529
rustc: "Expected" and "actual" were swapped. Also un-XFAIL compile-fail/arg-count-mismatch.rs for good measure.
2010-11-22 17:38:23 -08:00
Patrick Walton
c0741c13ab
Remove the global bindings table in the typechecker
2010-11-22 17:14:18 -08:00
Graydon Hoare
d3cb25d5d1
Check and translate 'as' cast-operator, lower target-specific types, reindent rustc.rs, enable uint test.
2010-11-22 16:27:00 -08:00
Graydon Hoare
c262543d3b
Fix type disagreements in lowering typeck.ty to llvm TypeRefs, enable complex.rs test.
2010-11-22 14:28:05 -08:00
Graydon Hoare
1090c5e69c
Check for structural equality rather than structural-and-cname equality.
2010-11-22 13:24:53 -08:00
Graydon Hoare
6fcf55347e
Resolve the easy case of type paths.
2010-11-22 13:24:53 -08:00
Graydon Hoare
fdac6ffa7c
Accumulate type paths as we parse, rather than throwing them away.
2010-11-22 13:24:53 -08:00
Patrick Walton
0847ff7d42
rustc: "expectied" -> "expected" in parser.rs; also say what was found
2010-11-22 11:43:25 -08:00
Graydon Hoare
ccc21fd4da
Fix lexer bug, enable 5 more tests on rustc.
2010-11-22 11:35:00 -08:00
Graydon Hoare
3ba6736383
More typeck hacking, check if and call exprs, enable fact and deep tests.
2010-11-21 12:06:09 -08:00
Graydon Hoare
5955e23343
Typecheck assignment exprs, redo decl checking, propagate ty_vars. Enable another test.
2010-11-21 01:16:16 -08:00
Graydon Hoare
79a3811ab8
Typecheck binary, unary and name expressions. Re-enable 3 more tests.
2010-11-20 23:00:52 -08:00
Graydon Hoare
77670e84de
Fix bug in llvm type signature of function items; enable three more tests.
2010-11-20 22:05:17 -08:00
Graydon Hoare
eaf9df2dc3
Remove dead code.
2010-11-20 22:04:48 -08:00
Graydon Hoare
e731520be5
Add helper function to double-check non-null types.
2010-11-20 22:04:34 -08:00
Graydon Hoare
244c59ac20
Clean up typechecker file, disable all tests that fail under typechecker.
2010-11-19 20:46:04 -08:00
Graydon Hoare
6d92ca64a7
Translate typeck.ty_fn to a TypeRef. Can compile int.rs test now.
2010-11-19 20:08:57 -08:00
Patrick Walton
c00bda539d
rustc: First stab at a typechecker
2010-11-19 17:50:45 -08:00
Patrick Walton
c410d68529
rustboot: Say when a binary operator is unimplemented rather than asserting in trans
2010-11-19 17:41:44 -08:00
Graydon Hoare
3352fab59b
Parse type items, nil types, named types. Fix some parser bugs. Enable arith-0 and arith-2 tests.
2010-11-19 16:34:47 -08:00
Graydon Hoare
44a0c7225d
Isolate while-header bug to minimal testcase, fix in rustboot, remove workaround in rustc.
2010-11-19 14:59:58 -08:00
Graydon Hoare
d311719a75
Enable more now-passing tests for rustc (including function calls).
2010-11-19 11:04:10 -08:00
Graydon Hoare
6cecc93e8d
Disable LLVM backend in rustboot; more trouble than it's worth at this point.
2010-11-19 10:45:24 -08:00
Graydon Hoare
e94af48bc9
Work around Yet Another Typestate Lifecycle Bug in rustboot.
2010-11-19 10:41:32 -08:00
Patrick Walton
77ff12c435
rustboot: Don't use walk to traverse statements in type.ml; fixes redundant checking, improves diagnostics. Also report untyped slots.
2010-11-18 14:19:06 -08:00
Graydon Hoare
26ecec4e12
Update frame logic to be compatible with SysV x86 ABI. Improves diagnostics.
2010-11-16 13:51:32 -08:00
Graydon Hoare
44b051f34a
Fix typo in x86 backend glue that was, by luck, only crashing on OSX.
2010-11-15 12:45:26 -08:00
Graydon Hoare
a352efadad
Switch upcall glues to fastcall as well.
2010-11-14 13:41:10 -08:00
Graydon Hoare
4cbef9d8a1
Remove outptr from module-internal calls; use standard ABI returns.
2010-11-14 13:04:01 -08:00
Graydon Hoare
640d167037
Switch module-internal calls (i.e. all user code) to fastcall. Still returning via explicit outptr. Activate glue works by accident.
2010-11-14 12:28:07 -08:00
Graydon Hoare
a7af86155d
Support emitting trap instructions for debugging.
2010-11-14 11:21:49 -08:00
Graydon Hoare
2de59aa6b9
Correct infinite-loop, block-context mismatches in early cleanups.
2010-11-14 10:48:44 -08:00
Graydon Hoare
fce535c04a
Change PVAL_num to PVAL_int and remove non-int literal forms.
2010-11-13 22:39:41 -08:00
Graydon Hoare
ae570016a4
Remove dead code in cexp.
2010-11-13 22:34:48 -08:00
Patrick Walton
e02ffb2c2d
rustc: Add a type annotation for locals
2010-11-12 16:11:33 -08:00
Graydon Hoare
0578978495
Move phi-node generation into a helper that measures the liveness of each incoming edge. Factorial test now succeeds.
2010-11-12 14:51:11 -08:00
Graydon Hoare
2ff0662eae
Load outptr alloca as retval; function call/return now works in rustc.
2010-11-12 11:48:18 -08:00
Graydon Hoare
1ff88982fe
Stop translating a block when a sub-statement terminates the llvm bb.
2010-11-12 10:15:40 -08:00
Patrick Walton
c3bc88a325
rustc: Add an annotation to function and type items so that the typechecker can store types with them
2010-11-10 18:20:02 -08:00
Graydon Hoare
d1e7f0b414
Redo the scheme for block context chaining and termination, to simplify and support ret better.
2010-11-10 17:46:49 -08:00
Graydon Hoare
a404e54261
Teach rustc about const tag value, begin work on trans_copy_ty, make uint's to_str routine less clever and thereby resist overflow.
2010-11-09 17:50:31 -08:00
Patrick Walton
3e482d5f69
Implement a map2() function in std._vec
2010-11-09 15:38:42 -08:00
Graydon Hoare
89946609f2
Support a special const-value refcount, use it for const strings.
2010-11-09 14:15:07 -08:00
Graydon Hoare
3e9be14757
Add a check for binding an alias. Good thing, as we had two instances in our library.
2010-11-08 15:45:30 -08:00
Graydon Hoare
c5720b2fc4
Fix linux burn caused by last commit on friday.
2010-11-08 13:36:03 -08:00
Graydon Hoare
049072db82
Update lltrans to also emit WinMain@16 on windows.
2010-11-05 18:45:06 -07:00
Graydon Hoare
216082d040
Translate ast.box unary expressions and support extraction of TypeRefs from AST annotations.
2010-11-05 18:31:24 -07:00
Graydon Hoare
ffb3861c70
Move symbol prefix logic into separate function, add underscore prefix for windows.
2010-11-05 18:31:23 -07:00
Graydon Hoare
c1fb592f62
Emit WinMain@16 entrypoint on windows.
2010-11-05 18:31:22 -07:00
Graydon Hoare
981edaef40
Fix two incorrect block-context uses in rustc.
2010-11-05 18:31:21 -07:00
Graydon Hoare
2122e363df
Teach rustc to generate type descriptors.
2010-11-05 18:31:20 -07:00
Graydon Hoare
3956b98312
Switch rustc to llvm 2.8 rather than 2.8svn on windows.
2010-11-05 18:31:20 -07:00
Patrick Walton
de166745b8
rustboot: Report the alias-ness of function parameters in type errors
2010-11-05 18:27:34 -07:00
Patrick Walton
79015e2d59
rustboot: If something that wasn't a type was found where a type was expected, report where the error was
2010-11-05 17:31:35 -07:00
Patrick Walton
35eb088ae3
rustc: Implement function types
2010-11-05 15:23:03 -07:00
Patrick Walton
91b1885ba2
rustboot: Report mismatched effect qualifiers
2010-11-05 13:44:37 -07:00
Patrick Walton
199ff196aa
test_init_fn() in lib-vec.rs doesn't seem to segfault anymore. Un-XFAIL it.
2010-11-05 11:25:23 -07:00
Patrick Walton
adb1754e4d
Move the option type to its own module
2010-11-05 11:18:40 -07:00
Patrick Walton
e399926776
rustboot: Report cyclic import errors at the right location
2010-11-05 11:02:17 -07:00
Patrick Walton
2fcf81cc4b
Revert "Move the option type to its own module"
2010-11-05 10:41:23 -07:00
Patrick Walton
a58016d43e
rustboot: Describe the cycle when reporting a cyclic import error
2010-11-05 10:37:32 -07:00
Patrick Walton
1d214b4df3
Move the option type to its own module
2010-11-05 10:23:22 -07:00
Graydon Hoare
16faef2218
Fix buggy while and do-while translation in rustc. Add test.
2010-11-04 07:55:33 -07:00
Patrick Walton
896570a3a9
rustboot: When resolving recursively, build up error messages recursively as well
2010-11-03 19:15:16 -07:00
Patrick Walton
db955d33b7
rustboot: Say exactly which name was unbound when reporting unbound name errors
2010-11-03 18:42:35 -07:00
Patrick Walton
a3d666bfdf
rustc: Use an extensible annotation field instead of putting option[@ty] everywhere
2010-11-03 15:54:46 -07:00
Graydon Hoare
e5fdd7b63a
Support while and do-while loops in rustc.
2010-11-03 11:05:15 -07:00
Graydon Hoare
dc299c9a19
Teach rustc lexer about changes to stratum, opacity and effect keywords.
2010-11-03 10:29:48 -07:00
Graydon Hoare
1e22a55ff2
Code sketch and comment notes on textual crate signatures.
2010-11-03 09:50:25 -07:00
Graydon Hoare
7abf6eb7c6
Shift obj, type, param decls to have strata rather than effects.
2010-11-02 17:20:57 -07:00
Graydon Hoare
7db115834f
Split out stratum-checking pass, implement more-strict (overly aggressive) impure-effect checking.
2010-11-02 15:24:46 -07:00
Graydon Hoare
da13c508d8
First pass on splitting stratum and opacity off of effects. WIP.
2010-11-02 11:11:58 -07:00
Patrick Walton
ccd62969c1
Un-XFAIL self tests on Darwin
2010-10-28 16:07:54 -07:00
Patrick Walton
c2480a3d60
Remove debug print message from the makefile
2010-10-28 16:06:04 -07:00
Patrick Walton
7303b8e115
Allow just the bootstrap LLVM backend to be disabled with NO_OCAML_LLVM=1
2010-10-28 16:03:45 -07:00
Patrick Walton
67bcc70754
rustboot: Emit an error instead of asserting in trans when a T is passed by value
2010-10-28 15:07:05 -07:00
Patrick Walton
b914e0e74c
Revert "rustboot: Emit an error instead of asserting in trans when a T is passed by value" due to test failures
...
This reverts commit ee901858a2
.
2010-10-28 15:04:48 -07:00
Patrick Walton
ee901858a2
rustboot: Emit an error instead of asserting in trans when a T is passed by value
2010-10-28 15:02:00 -07:00
Ralph Giles
3b3cd550d4
Cast NULL to uintptr_t when calling rust_task::start().
...
On gcc 4.5.1 (fedora 14 i686) rust_test_runtime.cpp fails to compile
with the following error:
rt/test/rust_test_runtime.cpp:57:61: error: passing NULL to non-pointer argument 3 of ‘void rust_task::start(uintptr_t, uintptr_t, uintptr_t, size_t)’
The explicit cast works around the error.
2010-10-28 10:13:30 -07:00
Patrick Walton
679dca8541
Emit a sensible error message if one or more of the parameters isn't enough context to instantiate a polymorphic function
2010-10-27 15:06:19 -07:00
Patrick Walton
b3c4c1426a
rustboot: Emit an error message instead of asserting on a type-param mismatch in tag constructors in patterns
2010-10-27 11:29:19 -07:00
Patrick Walton
3d0da75455
rustboot: For error reporting, map tag IDs to *tag* names, not to tag *variant* names
2010-10-26 15:37:49 -07:00
Patrick Walton
7e3c662b4f
rustboot: Use a less hacky method to report tag names in error messages, which works for resolve errors as well
2010-10-26 14:52:31 -07:00
Patrick Walton
7ed8b781d5
Thread a source location though for type error reporting instead of the awful "List.hd scopes" hack
2010-10-25 18:16:34 -07:00
Patrick Walton
af39e222bc
Merge commit '1875a36feecb7dab183a59ead2d0a342f733422e'
2010-10-25 17:58:41 -07:00
Patrick Walton
1875a36fee
Prevent Not_found in the unfortunate case when we have to "friendly_stringify" a tag type we haven't yet recorded into cx.ctxt_all_tag_info
2010-10-25 17:58:24 -07:00
Graydon Hoare
f3b7aa9068
Long line police.
2010-10-22 19:37:03 -07:00
Graydon Hoare
3bf775e80f
Pass outptr as in rustboot. Probably need to revisit this ABI. Also disgusting hack employed. Please remove.
2010-10-22 19:35:48 -07:00
Graydon Hoare
b2f07c6056
Collect all fns first so decl order doesn't matter to translation.
2010-10-22 19:31:33 -07:00
Graydon Hoare
d4497e481e
Extremely broken hacked-up incorrect attempt at 'ret'.
2010-10-22 19:23:10 -07:00
Graydon Hoare
a0867e0ccf
More fire-fighting.
2010-10-22 17:54:27 -07:00
Graydon Hoare
e5229b97d7
Don't use string == in x86.rs, doesn't work.
2010-10-22 17:27:22 -07:00
Graydon Hoare
cb254f3558
Merge branch 'master' of github.com:graydon/rust
2010-10-22 17:24:05 -07:00
Graydon Hoare
bd9a8fd57b
Attempt to extinguish burning tree.
2010-10-22 17:23:53 -07:00
Patrick Walton
05a3c5c0f3
rustc: Add an "_" prefix to assembler-generated symbols on Mac
2010-10-22 16:16:02 -07:00
Graydon Hoare
6d47d2abde
Implement check-exprs, un-xfail 5 rustc tests.
2010-10-22 15:37:42 -07:00
Patrick Walton
fc8b5155a8
rustboot: If the user tries to instantiate a non-parametric type with type parameters, report the location of the error
2010-10-22 15:12:48 -07:00
Graydon Hoare
6ec402d4a6
Add makefile bits to run rustc on the testsuite as part of 'make check'. Mostly xfailed.
2010-10-22 14:46:03 -07:00
Graydon Hoare
76dc0ae995
Match llvm xfails inside-out, to make life a little less painful.
2010-10-22 13:43:25 -07:00
Graydon Hoare
25263c9576
Make test targets in Makefile end in -boot.x86 or -boot.llvm when made by rustboot.
2010-10-22 12:12:01 -07:00
Graydon Hoare
36aea66e47
Give rustc the beginnings of an option-processing loop (at least -nowarn, -h and -o).
2010-10-22 11:47:28 -07:00
Graydon Hoare
74eda5bb70
Make append take a mutable &. Not even checked at present, tsk tsk.
2010-10-22 11:46:54 -07:00
Graydon Hoare
dd0d255737
Add some filename helpers to os.
2010-10-22 11:46:33 -07:00
Graydon Hoare
05c9d885dd
Change vec slice to use uint, add push/pop/shift/unshift.
2010-10-22 11:46:04 -07:00
Graydon Hoare
3f80e79efc
Add support for passing args to fns in rustc.
2010-10-21 18:13:57 -07:00
Graydon Hoare
67477b85ae
Support basic function calls in rustc.
2010-10-21 17:24:26 -07:00
Graydon Hoare
3aaae2a881
Teach rustc to parse call exprs.
2010-10-21 16:42:02 -07:00
Ralph Giles
eec259f625
Fix a typo in the previous commit.
...
(cherry picked from commit 11d2af72cf956cc28549cfd280ba40de1645eee7)
2010-10-21 16:06:47 -07:00
Ralph Giles
6b9a9a7874
Check the llvm version against a fixed list.
...
This change is thanks to Peter Hull, who independently resolved
the 2.8 vs 2.8svn issue this way. His patch checked the version
string against a fixed set of options, which is easier to read
and simpler to adjust in the future.
(cherry picked from commit 83cc297561a78ad13fcd1c2943f17ace81c725b8)
2010-10-21 16:06:39 -07:00
Ralph Giles
c3879c19c2
Also search the bare ocaml standard library path for llvm bindings.
...
Ubuntu ships the llvm bindings in /usr/lib/ocaml/llvm/ but Fedora
is installing them directly in /usr/lib/ocaml so we need to check
there as well.
The patch is untested; Fedora 14, the current beta, includes llvm 2.7.
It does add an unnecessary -I directive, but should at least have a
better chance of working on Fedora 15.
(cherry picked from commit 8af7360bd3de851668a133ae6ba4419e3722c6aa)
2010-10-21 16:06:21 -07:00
Ralph Giles
45056fc022
Update llvm version detection for the 2.8 release.
...
The LLVM project recently released version 2.8, and updated
the SVN tree version to 2.9svn, obsoleting the simple check
for 'llvm-config --version' returning 2.8svn.
With this commit we instead check for the substrings 2.8 and 2.9
in the output of 'llvm-config --version', since we (currently)
support both the svn and released varieties of those versions.
A stable release also complicates our check for the ocaml bindings.
Previously we looked in `llvm-config --libdir`/ocaml which is
appropriate for local compiles, but distribution packagers are
likely to put the bindings in the default search path, e.g.
/usr/lib/ocaml/llvm. We now fall back to trying variations on
the standard library path returned by 'ocamlc -config' if we
don't find it under 'llvm-config --libdir'.
With this change, rust builds against LLVM 2.8 as packaged
in Ubuntu 10.10 as well as LLVM 2.9svn compiled locally.
(cherry picked from commit b606b65756f087c403180abd5418fe7dce469758)
2010-10-21 16:06:15 -07:00
Graydon Hoare
a7599a7968
De-burninate tree.
2010-10-21 15:02:05 -07:00
Dave Herman
6421c13157
eliminated bitv.test, which now lives in test/run-pass
2010-10-21 13:34:16 -07:00
Dave Herman
dbe27199b8
line length police; moved comp.util.bits to std.bitv
2010-10-21 11:39:53 -07:00
Patrick Walton
194f38fdff
rustboot: Don't use ridiculous type names when describing simple types like int and uint
2010-10-21 11:31:04 -07:00
Patrick Walton
a7840f02b0
Use "friendly" type names when reporting a "mismatched type-params" error
2010-10-21 11:14:38 -07:00
Dave Herman
852c0d6631
oops, removed bits.test() from main
2010-10-21 08:06:44 -07:00
Dave Herman
da8b6795c7
tests and bugfixes: fns take aliases, fixed binary arithmetic in create, eliminated wasted bit per uint
2010-10-21 07:36:13 -07:00
Dave Herman
ce3224652f
simpler computation of uint_bits(), plus whitespace police
2010-10-20 22:04:19 -07:00
Patrick Walton
9a539a5dd1
Move the "friendly" type printer to semant
2010-10-20 17:58:55 -07:00
Dave Herman
8f71dad2c9
created a first draft of the bit-set library needed for typestate
2010-10-20 17:04:15 -07:00
Patrick Walton
11deb2f5f1
Eliminate <tag#> stuff from the "friendly" type errors
2010-10-20 15:36:30 -07:00
Patrick Walton
4bb675ba42
Print better error messages when the number of type params is wrong
2010-10-20 11:22:44 -07:00
Patrick Walton
28d43678b6
Add a virtual destructor to rust_thread in sync.h, to quiet the compiler
2010-10-20 10:32:36 -07:00
Graydon Hoare
368943998d
Translate lazy && and || operators in rustc.
2010-10-19 17:24:15 -07:00
Graydon Hoare
71b1f1d117
Parse and translate assignments.
2010-10-19 16:33:11 -07:00
Graydon Hoare
b8cca0971f
Teach trans to allocate, initialize and load from local variables.
2010-10-19 14:54:10 -07:00
Patrick Walton
10d628dbd0
Add a type slot to the AST
2010-10-19 13:28:43 -07:00
Patrick Walton
e497fe981b
Partial work on adding types to the AST
2010-10-19 13:10:39 -07:00
Graydon Hoare
4a3edb320d
Store items and decls in vecs to preserve input order, index externally. Implement block-local name lookup.
2010-10-18 18:19:16 -07:00
Graydon Hoare
865bbae685
More work on resolving names in rustc. Basic expr_name lookup working on items and args.
2010-10-18 16:15:25 -07:00