{"push_id":644635330,"size":4,"distinct_size":0,"ref":"refs/heads/auto","head":"6365080c5cd27b74ec87420c351a3e7bdcff988e","before":"b0043db4658feed7b7d17fd45285745d8af38001","commits":[{"sha":"2d9831dea598d8a45c69e8c799503e8a397aacc0","author":{"email":"4ad037fbfcf12cbd7e3a07348ffde6c0ea82823f@gmail.com","name":"Geoffry Song"},"message":"Interpolate AST nodes in quasiquote.\n\nThis changes the `ToTokens` implementations for expressions, statements,\netc. with almost-trivial ones that produce `Interpolated(*Nt(...))`\npseudo-tokens. In this way, quasiquote now works the same way as macros\ndo: already-parsed AST fragments are used as-is, not reparsed.\n\nThe `ToSource` trait is removed. Quasiquote no longer involves\npretty-printing at all, which removes the need for the\n`encode_with_hygiene` hack. All associated machinery is removed.\n\nA new `Nonterminal` is added, NtArm, which the parser now interpolates.\nThis is just for quasiquote, not macros (although it could be in the\nfuture).\n\n`ToTokens` is no longer implemented for `Arg` (although this could be\nadded again) and `Generics` (which I don't think makes sense).\n\nThis breaks any compiler extensions that relied on the ability of\n`ToTokens` to turn AST fragments back into inspectable token trees. For\nthis reason, this closes #16987.\n\nAs such, this is a [breaking-change].\n\nFixes #16472.\nFixes #15962.\nFixes #17397.\nFixes #16617.","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/2d9831dea598d8a45c69e8c799503e8a397aacc0"},{"sha":"ea892dc70b1a773b85410716b5822cc814542ecc","author":{"email":"4ad037fbfcf12cbd7e3a07348ffde6c0ea82823f@gmail.com","name":"Geoffry Song"},"message":"Remove remaining tests for hygiene-encoded identifiers.\n\nSuch things no longer exist.","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/ea892dc70b1a773b85410716b5822cc814542ecc"},{"sha":"24ef90527351bb1a52c8b54e948cdbba8db3eef6","author":{"email":"4ad037fbfcf12cbd7e3a07348ffde6c0ea82823f@gmail.com","name":"Geoffry Song"},"message":"Remove FakeExtCtxt from qquote tests.\n\nInstead create an ExtCtxt structure.","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/24ef90527351bb1a52c8b54e948cdbba8db3eef6"},{"sha":"6365080c5cd27b74ec87420c351a3e7bdcff988e","author":{"email":"3a2c29237f73c7cf88424b80e427b1884f346b35@rust-lang.org","name":"bors"},"message":"Auto merge of #23085 - goffrie:interpolating-quote, r=huonw\n\nThis changes the `ToTokens` implementations for expressions, statements, etc. with almost-trivial ones that produce `Interpolated(*Nt(...))` pseudo-tokens. In this way, quasiquote now works the same way as macros do: already-parsed AST fragments are used as-is, not reparsed.\r\n\r\nThe `ToSource` trait is removed. Quasiquote no longer involves pretty-printing at all, which removes the need for the `encode_with_hygiene` hack. All associated machinery is removed.\r\n\r\nNew `Nonterminal`s are added: NtArm, NtImplItem, and NtTraitItem. These are just for quasiquote, not macros.\r\n\r\n`ToTokens` is no longer implemented for `Arg` (although this could be added again) and `Generics` (which I don't think makes sense).\r\n\r\nThis breaks any compiler extensions that relied on the ability of `ToTokens` to turn AST fragments back into inspectable token trees. For this reason, this closes #16987.\r\n\r\nAs such, this is a [breaking-change].\r\n\r\nFixes #16472.\r\nFixes #15962.\r\nFixes #17397.\r\nFixes #16617.","distinct":false,"url":"https://api.github.com/repos/rust-lang/rust/commits/6365080c5cd27b74ec87420c351a3e7bdcff988e"}]}