about summary refs log tree commit diff
path: root/src/libsyntax/test.rs
AgeCommit message (Collapse)AuthorLines
2019-07-27Move test harness generation into libsyntax_extVadim Petrochenkov-424/+0
2019-07-23Normalize use of backticks in compiler messages for libsyntax/*Samy Kacimi-1/+1
https://github.com/rust-lang/rust/issues/60532
2019-07-19Adjust other names after the `Mark` renamingVadim Petrochenkov-1/+1
2019-07-19libsyntax: Remove `Mark` into `ExpnId`Vadim Petrochenkov-2/+2
2019-07-11hygiene: Introduce a helper method for creating new expansionsVadim Petrochenkov-18/+5
Creating a fresh expansion and immediately generating a span from it is the most common scenario. Also avoid allocating `allow_internal_unstable` lists for derive markers repeatedly. And rename `ExpnInfo::with_unstable` to `ExpnInfo::allow_unstable`, seems to be a better fitting name.
2019-07-11hygiene: Reuse `MacroKind` in `ExpnKind`Vadim Petrochenkov-2/+2
Orthogonality and reuse are good.
2019-07-11Rename some things in `syntax_pos/hygiene`Vadim Petrochenkov-2/+2
More consistent with other naming: ExpnFormat -> ExpnKind ExpnKind::name -> ExpnKind::descr DesugaringKind::name -> DesugaringKind::descr Shorter, no tautology: CompilerDesugaring -> Desugaring CompilerDesugaringKind -> DesugaringKind
2019-07-05Auto merge of #62099 - Mark-Simulacrum:syntax-print-clean-2, r=eddybbors-1/+0
Remove io::Result from syntax::print Since we're now writing directly to the vector, there's no need to thread results through the whole printing infrastructure
2019-07-01Convert more usages overChris Gregory-2/+2
2019-06-29Remove unused importMark Rousskov-1/+0
2019-06-18syntax: Introduce `default`/`with_unstable` constructors for `ExpnInfo`Vadim Petrochenkov-9/+4
2019-06-18syntax: Factor out common fields from `SyntaxExtension` variantsVadim Petrochenkov-1/+1
2019-06-14Avoid some unnecessary symbol interner operationsMatthew Jasper-2/+2
2019-05-27Avoid unnecessary internings.Nicholas Nethercote-8/+4
Most involving `Symbol::intern` on string literals.
2019-05-22Restore the old behavior of the rustdoc keyword check + Fix rebaseVadim Petrochenkov-1/+1
2019-05-22Simplify use of keyword symbolsVadim Petrochenkov-3/+3
2019-05-21Move `edition` outside the hygiene lock and avoid accessing itJohn Kåre Alsaker-1/+1
2019-05-20Remove `Symbol::gensym()`.Nicholas Nethercote-6/+7
2019-05-17Avoid unnecessary interning in `Ident::from_str()` calls.Nicholas Nethercote-2/+2
A lot of these static symbols are pre-interned.
2019-05-13Remove the equality operation between `Symbol` and strings.Nicholas Nethercote-1/+2
And also the equality between `Path` and strings, because `Path` is made up of `Symbol`s.
2019-05-13Pass a `Symbol` to `check_name`, `emit_feature_err`, and related functions.Nicholas Nethercote-6/+5
2019-04-17Fix comments around test harness generationAlexey Shmalko-1/+1
2019-03-16Refactor away `NestedMetaItemKind`Vadim Petrochenkov-1/+1
Remove methods `Attribute::span` and `MetaItem::span` duplicating public fields
2019-03-16Rename `MetaItem::ident` to `MetaItem::path`Vadim Petrochenkov-1/+1
2019-03-16syntax: Do not accidentally treat multi-segment meta-items as single-segmentVadim Petrochenkov-1/+4
2019-02-13Cleanup importsTaiki Endo-2/+1
2019-02-13Rename rustc_errors dependency in rust 2018 cratesTaiki Endo-1/+1
2019-02-11Use `Rc<[Symbol]>` instead of `Vec<Symbol>` to reduce # of allocsOliver Scherer-2/+2
2019-02-11Require a list of features to allow in `allow_internal_unstable`Oliver Scherer-1/+5
2019-02-07libsyntax => 2018Taiki Endo-25/+27
2019-02-06Overhaul `syntax::fold::Folder`.Nicholas Nethercote-32/+32
This commit changes `syntax::fold::Folder` from a functional style (where most methods take a `T` and produce a new `T`) to a more imperative style (where most methods take and modify a `&mut T`), and renames it `syntax::mut_visit::MutVisitor`. The first benefit is speed. The functional style does not require any reallocations, due to the use of `P::map` and `MoveMap::move_{,flat_}map`. However, every field in the AST must be overwritten; even those fields that are unchanged are overwritten with the same value. This causes a lot of unnecessary memory writes. The imperative style reduces instruction counts by 1--3% across a wide range of workloads, particularly incremental workloads. The second benefit is conciseness; the imperative style is usually more concise. E.g. compare the old functional style: ``` fn fold_abc(&mut self, abc: ABC) { ABC { a: fold_a(abc.a), b: fold_b(abc.b), c: abc.c, } } ``` with the imperative style: ``` fn visit_abc(&mut self, ABC { a, b, c: _ }: &mut ABC) { visit_a(a); visit_b(b); } ``` (The reductions get larger in more complex examples.) Overall, the patch removes over 200 lines of code -- even though the new code has more comments -- and a lot of the remaining lines have fewer characters. Some notes: - The old style used methods called `fold_*`. The new style mostly uses methods called `visit_*`, but there are a few methods that map a `T` to something other than a `T`, which are called `flat_map_*` (`T` maps to multiple `T`s) or `filter_map_*` (`T` maps to 0 or 1 `T`s). - `move_map.rs`/`MoveMap`/`move_map`/`move_flat_map` are renamed `map_in_place.rs`/`MapInPlace`/`map_in_place`/`flat_map_in_place` to reflect their slightly changed signatures. - Although this commit renames the `fold` module as `mut_visit`, it keeps it in the `fold.rs` file, so as not to confuse git. The next commit will rename the file.
2019-01-13Implement basic input validation for built-in attributesVadim Petrochenkov-6/+3
2018-12-25Remove licensesMark Rousskov-10/+0
2018-12-07Various minor/cosmetic improvements to codeAlexander Regueiro-1/+1
2018-10-26Remove redundant cloneShotaro Yamada-1/+1
2018-09-27Auto merge of #52319 - tinco:issue_12590, r=pnkfelixbors-0/+1
Track whether module declarations are inline (fixes #12590) To track whether module declarations are inline I added a field `inline: bool` to `ast::Mod`. The main use case is for pretty to know whether it should render the items associated with the module, but perhaps there are use cases for this information to not be forgotten in the AST.
2018-09-26Remove OneVectorljedrz-5/+4
2018-09-10reintroduce inline to libsyntax testTinco Andringa-54/+1
2018-09-10Track whether module declarations are inline (fixes #12590)Tinco Andringa-0/+54
2018-09-04Move #[test_case] to a syntax extensionJohn Renner-1/+1
2018-09-04Introduce Custom Test FrameworksJohn Renner-476/+104
2018-08-23Use optimized SmallVec implementationIgor Gutorov-2/+3
2018-08-19mv codemap source_mapDonato Sciarra-1/+1
2018-08-19mv (mod) codemap source_mapDonato Sciarra-3/+3
2018-08-19mv FileMap SourceFileDonato Sciarra-1/+1
2018-08-19mv CodeMap SourceMapDonato Sciarra-1/+1
2018-08-13Move SmallVec and ThinVec out of libsyntaxljedrz-7/+8
2018-08-07Avoid unnecessary pattern matching against Option and Resultljedrz-1/+1
2018-07-14Address commentsVadim Petrochenkov-1/+1
2018-07-14Remove most of `PartialEq` impls from AST and HIR structuresVadim Petrochenkov-2/+1