about summary refs log tree commit diff
path: root/src/comp/syntax
AgeCommit message (Collapse)AuthorLines
2012-01-30Revert self typesMarijn Haverbeke-5/+3
2012-01-27Merge remote-tracking branch 'killerswan/fixing_strings_2'Brian Anderson-1/+1
Conflicts: src/comp/driver/driver.rs src/comp/middle/trans/base.rs src/comp/syntax/parse/lexer.rs
2012-01-27Stop passing spans to middle::trans functions that don't need themMarijn Haverbeke-4/+3
Removes a bunch of (eventually) unused arguments. Makes span passing to debuginfo explicit, instead of relying on the (usually incorrect) spans held in the contexts. Closes #1439
2012-01-27Use the method name 'unary-' for overloading negationMarijn Haverbeke-1/+5
It's less likely to clash with something than 'neg'. Issue #1520
2012-01-26rustc: Add pprust::res_to_strBrian Anderson-8/+41
2012-01-26Make re-exporting of impls workMarijn Haverbeke-11/+12
Closes #1438
2012-01-26Use operator names for operator methodsMarijn Haverbeke-2/+11
The methods used to implement operators now simply use the name of the operator itself, except for unary -, which is called min to not clash with binary -. Index is called []. Closes #1520
2012-01-26Allow operator overloading of the indexing operatorMarijn Haverbeke-0/+1
The method `op_index` (which takes a single argument) is used for this. Issue #1520
2012-01-26First stab at operator overloadingMarijn Haverbeke-0/+9
When no built-in interpretation is found for one of the operators mentioned below, the typechecker will try to turn it into a method call with the name written next to it. For binary operators, the method will be called on the LHS with the RHS as only parameter. Binary: + op_add - op_sub * op_mul / op_div % op_rem & op_and | op_or ^ op_xor << op_shift_left >> op_shift_right >>> op_ashift_right Unary: - op_neg ! op_not Overloading of the indexing ([]) operator isn't finished yet. Issue #1520
2012-01-26Use string stored in codemap for pretty-printing comments and literalsMarijn Haverbeke-0/+1
Closes #1665
2012-01-26Remove ty_native_fnMarijn Haverbeke-2/+1
It was being used as a clumsy synonym of ty_fn.
2012-01-25rustc: Add pprust::variant_to_strBrian Anderson-17/+39
2012-01-25rustc: Allow attributes on enum variants. Closes #1663Brian Anderson-4/+16
2012-01-25Correctly increment sess.byte_pos.Kevin Atkinson-6/+6
2012-01-25Keep source file around after parsing.Kevin Atkinson-27/+30
Specifically box the string (to avoid unnecessary copies) and store it in codemap::filemap. Remove the hack in driver::diagnostic that rereads the source from the file and instead just get the source from the filemap. (This commit is also a prerequisite for issue #1612)
2012-01-25Implement implicit self type parameters for ifacesMarijn Haverbeke-3/+5
Closes #1661
2012-01-25Rename tag to enum throughout the compilerMarijn Haverbeke-42/+43
This should reduce confusion of people trying to read the code.
2012-01-25Repair zero-variant tagsMarijn Haverbeke-51/+24
The parser no longer parsed them.
2012-01-25Add bit-shifting ops to ast_util::eval_const_exprMarijn Haverbeke-0/+4
Closes #1659
2012-01-25Replacing str::unsafe_from_bytes with str::from_bytes (part 4)Kevin Cantu-1/+1
2012-01-24rustc: Split diagnostics into "span diagnostics" and "diagnostics".Patrick Walton-18/+21
The former contain a codemap (which is per-crate), and the latter don't. This will be useful in order to allow more than one crate to be compiled in one run of the compiler.
2012-01-24comp: Fix syntax error in parserBrian Anderson-1/+1
2012-01-23Added to bad_expr_word_table reserved wordsJoshua Clark-2/+3
2012-01-23s/block()/fn()/gNiko Matsakis-19/+13
2012-01-23When replacing a pattern variable in macro expansion use the span ofKevin Atkinson-6/+6
the replacement and not the span of the pattern variable. Fixes issue #1448, and #1387.
2012-01-23Allow ast_fold_precursor to change the span.Kevin Atkinson-79/+109
This involved changing the prototype for the callbacks to thread the span though. A wrapper function, fold::wrap, can be used to wrap the old style callbacks.
2012-01-23Don't reset the chpos/byte_pos to 0 in new_parser_from_source_str.Kevin Atkinson-20/+29
This correctly fixes issue #1362. chpos/byte_pos are now the offsets within a particular file, but rather the offsets within a virtual file with is formed by combing all of the modules within a crate. Thus, resetting them to 0 causes an overlap and hence, bogus source locations. Fix #1362 by moving chpos/byte_pos to parse_sess so that new_parser_from_source_str has access to them and hence can chose an initial value that is not already been used in the crate. Note that the trigger for bug 1361 was that syntax/ext/expand.rs calls parse_expr_from_source_str (which calls new_parser_from_source_str) using the same codemap as the current crate (and hence causing overlap with files in the crate as new_parser_from_source_str resets the chpos/byte_pos to 0).
2012-01-23Change "file" of injected string from "-" to "<anon>", less confusingKevin Atkinson-1/+1
that way.
2012-01-23Revert "rustc: Exclude stdin from codemap files when lookup_pos".Kevin Atkinson-5/+3
Need a better fix, right now it is just causing even more confusion, for example in issue #1448 and #1387. This reverts commit 1e4de333740690357a8f58883c5c69bf58be1424.
2012-01-23Export all enum variants by default; new syntax for selectively exporting ↵Tim Chevalier-14/+51
variants See issue 1426 for details. Now, the semantics of "export t;" where t is a tag are to export all of t's variants as well. "export t{};" exports t but not its variants, while "export t{a, b, c};" exports only variants a, b, c of t. To do: - documentation - there's currently no checking that a, b, c are actually variants of t in the above example - there's also no checking that t is an enum type, in the second two examples above - change the modules listed in issue 1426 that should have the old export semantics to use the t{} syntax I deleted the test export-no-tag-variants since we're doing the opposite now, and other tests cover the same behavior.
2012-01-21issue #1352: change param order on vec::init_elt, putting block in final ↵Graham Fawcett-3/+3
position. To match the init_fn() and init_fn_mut() changes.
2012-01-20WIP on issue 1426 (exporting all tags)Tim Chevalier-4/+32
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-19Additional ; to , changes, disable "tag" and ";" in parser. Close #1430. ↵Graydon Hoare-1/+1
Close #1428.
2012-01-19rustc: Stop parsing "tag"Patrick Walton-2/+2
2012-01-19rustc: Make the pretty printer output commas after enum variants. Update all ↵Patrick Walton-1/+1
tests accordingly.
2012-01-19rustc: Fix fun_to_strBrian Anderson-0/+14
2012-01-19rustc: ";" to "," in enumsPatrick Walton-264/+264
2012-01-19rustc: Fix long linesPatrick Walton-2/+2
2012-01-19rustc: "tag" -> "enum"Patrick Walton-60/+60
2012-01-19Rename fn*() to fn() as originally planned.Niko Matsakis-8/+10
2012-01-19treat fn*() as fn&()Niko Matsakis-8/+2
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-19Remove support for the '.' after a nullary tag in a patternTim Chevalier-18/+14
(Commit also includes lots of changes to remove '.'s that a git merge messed up, or else it was monkeys.)
2012-01-18Remove '.' after nullary tags in patternsTim Chevalier-340/+340
Does what it says on the tin. The next commit will remove support for this syntax.
2012-01-18Allow any alternative (not just a block) to follow a nullary tag patternTim Chevalier-3/+1
2012-01-18allow dotless nullary patterns inside or-patternsTim Chevalier-1/+2
2012-01-18Another minor parser fix for nullary-tag patternsTim Chevalier-1/+1
2012-01-18Allow nullary tag names to be qualifiedTim Chevalier-3/+2
2012-01-18rustc: Assert that the parser doesn't assign node id 0Brian Anderson-0/+2
It is reserved for indicating the crate, but doesn't exist in the AST
2012-01-18rustc: Accept commas to separate tag variantsPatrick Walton-3/+12
2012-01-17Allow omission of the '.' after nullary tag patternsTim Chevalier-55/+59
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 '.'.