Skip to content

Split libsyntax apart#65324

Merged
bors merged 3 commits intorust-lang:masterfrom
Centril:organize-syntax
Nov 10, 2019
Merged

Split libsyntax apart#65324
bors merged 3 commits intorust-lang:masterfrom
Centril:organize-syntax

Conversation

@Centril
Copy link
Copy Markdown
Contributor

@Centril Centril commented Oct 12, 2019

In this PR the general idea is to separate the AST, parser, and friends by a more data / logic structure (tho not fully realized!) by separating out the parser and macro expansion code from libsyntax. Specifically have now three crates instead of one (libsyntax):

  • libsyntax:

    • concrete syntax tree (syntax::ast)

    • definition of tokens and token-streams (syntax::{token, tokenstream}) -- used by syntax::ast

    • visitors (syntax::visit, syntax::mut_visit)

    • shared definitions between libsyntax_expand

    • feature gating (syntax::feature_gate) -- we could possibly move this out to its own crater later.

    • attribute and meta item utilities, including used-marking (syntax::attr)

    • pretty printer (syntax::print) -- this should possibly be moved out later. For now I've reduced down the dependencies to a single essential one which could be broken via ParseSess. This entails that e.g. Debug impls for Path cannot reference the pretty printer.

    • definition of ParseSess (syntax::sess) -- this is used by syntax::{attr, print, feature_gate} and is a common definition used by the parser and other things like librustc.

    • the syntax::source_map -- this includes definitions used by syntax::ast and other things but could ostensibly be moved syntax_pos since that is more related to this module.

    • a smattering of misc utilities not sufficiently important to itemize -- some of these could be moved to where they are used (often a single place) but I wanted to limit the scope of this PR.

  • librustc_parse:

    • parser (rustc_parse::parser) -- reading a file and such are defined in the crate root tho.

    • lexer (rustc_parse::lexer)

    • validation of meta grammar (post-expansion) in (rustc_parse::validate_attr)

  • libsyntax_expand -- this defines the infra for macro expansion and conditional compilation but this is not libsyntax_ext; we might want to merge them later but currently libsyntax_expand is depended on by librustc_metadata which libsyntax_ext is not.

    • conditional compilation (syntax_expand::config) -- moved from syntax::config to here

    • the bulk of this crate is made up of the old syntax::ext

r? @estebank

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants